डेटा बाइंडिंग वर्ग उत्पन्न नहीं हुआ


97

मैं अपनी परियोजना में डेटा बाइंडिंग का उपयोग कर रहा हूं, जब उपयोग कर रहा हूं <layout>और <data>मेरे xml में बाध्यकारी वर्ग उत्पन्न नहीं हुआ है।

उदाहरण के लिए मेरे पास activity_main.xml है

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>    </data>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </RelativeLayout>
</layout>

अब अगर मैं ActivityMainBindingअपनी गतिविधि / खंड में लिख रहा हूँ तो यह पता चलता है कि कक्षा उपलब्ध नहीं है। लेकिन शामिल करने के बाद<variable> मेरी xml फ़ाइल में , यह ActivityMainBindingकक्षा उत्पन्न करने में सक्षम है ।

Android Studio: 2.1.3
Classpath: com.android.tools.build:gradle:2.1.3
minSdkVersion 16
targetSdkVersion 24
buildToolsVersion 24.0.0


2
है dataBinding.enabledअपने build.gradle में?
pskink

2
मुझे लगता है कि यह एक ज्ञात त्रुटि है। आप अपने प्रोजेक्ट को बनाने का प्रयास कर सकते हैं इससे पहले कि आप एक्सेस करने की कोशिश करें ActivityMainBinding, या इस बग के साथ कुछ करना होगा ।
yennsarah

@pskink हाँ यह है, यही कारण है कि यह <variable>xml में जोड़ने के बाद बाध्यकारी वर्ग पैदा कर रहा है
रवि

@ मेरी परियोजना के निर्माण के बाद अमाइलिन यह उत्पन्न करता है, लेकिन मेरा सवाल यह है कि जब मैं लिखता हूं <variable>, तो यह परियोजना के निर्माण के बिना बाध्यकारी वर्ग उत्पन्न करता है।
रवि

आह, वास्तव में, मुझे याद है कि
5

जवाबों:


216

मुझे कोई संतोषजनक जवाब नहीं मिला। तो यहां युक्तियां हैं जो मेरे डेटा बाइंडिंग ज्ञान का सारांश हैं।

DataBinding मुद्दों को सुलझाने के लिए युक्तियाँ

अपडेट करें

अधिक सटीक त्रुटियों और सुझावों को प्राप्त करने के लिए , मैं एंड्रॉइड स्टूडियो और ग्रेडल प्लगइन संस्करण को नवीनतम रूप से अपडेट करने की दृढ़ता से सलाह देता हूं। क्योंकि मैं 3.2 संस्करण के बाद कई मुद्दों का सामना नहीं कर रहा हूं।

देखें नवीनतम एंड्रॉयड स्टूडियो , और नवीनतम Gradle प्लगइन

ओरिगनल सॉल्यूशन

इस जवाब पढ़ने के बाद, आप अटक जाते हैं नहीं होंगे ऑटो पीढ़ी मुद्दों बाध्यकारी डेटा में दोनों वर्गों और डेटा चर के लिए

एक-एक करके इन बिंदुओं की जांच करें। इनमें से कोई भी आपके काम आ सकता है। बिंदु 3 से अंतिम वास्तव में महत्वपूर्ण हैं, इसलिए उन्हें याद न करें।

1. जांचें कि क्या डेटा-बाइंडिंग सक्षम है

आप होना चाहिए डेटा सक्षम बंधन में build.gradle। यदि नहीं, तो इसे जोड़ें और सिंक करें

android {
...
   dataBinding {
        enabled = true
    }
...
}

2. चेक लेआउट बाध्यकारी लेआउट में परिवर्तित हो जाता है

अब यदि आप चाहते हैं कि डेटा बाइंडिंग क्लास उत्पन्न हो तो आपको डेटा बाइंडिंग ( टैग) से लपेटनाxml layout चाहिए <layout। कुछ इस तरह।

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.constraint.ConstraintLayout>
</layout>

इस जाँच के साथ कि क्या बाइंडिंग चर नाम व्यू मॉडल क्लास में सही हैं

3. ऑटो-जनरेट बाइंडिंग क्लास का नाम?

बाध्यकारी लेआउट बनाने के बाद आपका डेटा बाध्यकारी वर्ग उत्पन्न किया जाना चाहिए।

अपने लेआउट नाम में है, तो साँप मामले activity_main.xml तो डेटा बाइंडिंग वर्ग में उत्पन्न हो जाएगा ऊंट मामले की तरह ActivityMainBinding

4. आयात सुझाव नहीं देख सकते हैं?

कभी-कभी जब आप टाइप करते हैं ActivityMai..., तो यह सुझाव नहीं दिखाता है , उस स्थिति में मैन्युअल रूप से आयात करें

import <yourpackage>databinding.ActivityMainBinding;

5. बिल्ड फेल लॉगकाट पढ़ें

यदि आपका निर्माण विफल रहता है तो लेआउट में आपका बाध्यकारी वर्ग और नए चर उत्पन्न नहीं होंगे। तो सबसे पहले Ctrl + F9 द्वारा प्रोजेक्ट बनाएं (बिल्ड> मेक प्रोजेक्ट)

  • यदि कोई बिल्ड विफल रहता है, तो देखें कि एक त्रुटि क्या है, आमतौर पर हमारे पास लेआउट क्षेत्रों में त्रुटियां होती हैं। त्रुटि लॉग समस्या के साथ त्रुटि लाइन संख्या को इंगित करेगा।
  • बाइंडिंग कुछ बेवकूफ त्रुटि का कारण हो सकता है , जैसे वाक्यविन्यास त्रुटि या लापता आयात। उस स्थिति में, आपको बाध्यकारी कक्षाओं की त्रुटियों से भरा लॉगकोट मिलेगा। लेकिन उचित समस्या का पता लगाने के लिए आपको पूर्ण लॉगकोट पढ़ना चाहिए

6. हाल ही में बंद और खुला प्रोजेक्ट

मैं हमेशा ऐसा करता हूं क्योंकि यह प्रोजेक्ट Rebuild/ Makeप्रोजेक्ट की तुलना में बहुत कम समय लेता है ।

  • फ़ाइल से प्रोजेक्ट को बंद करें> प्रोजेक्ट को बंद करें
  • हाल ही में फिर से खुला

ध्यान दें कि मैं पसंद बंद और ओपन से हाल है क्योंकि यह बहुत से भी कम समय लगता है के पुनर्निर्माण / पुनरारंभ आईडीई

7. परियोजना का पुनर्निर्माण

यदि फिर भी आपकी कक्षा उत्पन्न नहीं हुई है। (कुछ समय जब हम लेआउट फ़ाइल पेस्ट करते हैं, तब ऐसा होता है)। फिर से प्रोजेक्ट का पुनर्निर्माणBuild> Rebuild ( निर्माण या निर्माण नहीं )। यह आपके डेटा बाइंडिंग क्लास उत्पन्न करेगा। ( पुनर्निर्माण मेरे लिए जादू करता है। )

8. नवीनतम Android स्टूडियो है

AS को Android Studio 3.2 में अपडेट करने के बाद , मुझे लगा कि डेटा बाइंडिंग ऑटो जेनरेशन में कई बग फिक्स हैं। तो आपके पास भी नवीनतम एएस होना चाहिए।

के लिए समाधान <variables

<data>
    <variable
        name="item"
        type="com.package.Model"/>
</data>

आमतौर पर, जब हम लेआउट में एक चर डालते हैं, तो यह एक गेट्टर और सेटर बनाता है। और हम उपयोग कर सकते हैं binding.setItem(item);और binding.getItem();, लेकिन अगर आप उन तरीकों को नहीं देख सकते हैं तो नीचे दी गई जानकारी पढ़ें।

1. हाल ही में बंद और खुला प्रोजेक्ट

यदि आपने <variableअपने लेआउट में एक डेटा चर बनाया है - और यह डेटा बाइंडिंग क्लास में अपना सेटर और गेट्टर नहीं दिखाता है , तो हाल ही में बंद और खोलें अपने प्रोजेक्ट ।

2. प्रकार बदलने के बाद स्वच्छ परियोजना

यदि आपने <variableअपने लेआउट में कुछ का प्रकार बदला है और गेट्टर सेटर का प्रकार नहीं बदल रहा है तो स्वच्छ परियोजना ( Build> Clean Project)

अंतिम शब्द

अंत में अगर अभी भी आपका बाध्यकारी वर्ग उत्पन्न नहीं हुआ है, तो हमारे पास हमारा सबसे शक्तिशाली हथियार है। - एंड्रॉइड स्टूडियो को पुनरारंभ करें: डी

  • सबसे पहले, बस पुनरारंभ करने का प्रयास करें , यह हमेशा पुनरारंभ करने के बाद मेरे बाध्यकारी लेआउट के चर उत्पन्न करता है।
  • यदि यह काम नहीं करता है तो अमान्य कैश और पुनरारंभ करें

यह वह सब है जो मैं अपने डेटा बाइंडिंग त्रुटियों को हल करने के लिए करता हूं। यदि आपको कोई और समस्या मिलती है, तो आप यहाँ टिप्पणी कर सकते हैं।


2
यदि समस्या बनी रहती है ... (8) अमान्य और पुनः आरंभ करें .... यदि हल नहीं किया गया, (9) डेटाबाइंडिंग बदलें {सक्षम = गलत} ... बिल्ड करें, और फिर डेटा बाइंडिंग {सक्षम = सत्य} फिर से बनाएँ ...।
प्रवीणदास


1
मेरे मामले में, मुझे किसी कारण से classpath को मैन्युअल रूप से आयात करना पड़ा क्योंकि IDE इसे समाधान के रूप में नहीं दिखाता है। Tnx :)
इवान कालोयानोव

2
मेरा दिन बचाया। मुझे अपनी लेआउट फ़ाइल में <लेआउट> रैपिंग याद आ रही थी। धन्यवाद!
जूलियानो

आप यह भी जोड़ सकते हैं कि "आयात android.R" को हटा दिया जाना चाहिए, अगर आयात सूची में इसका हिस्सा है। यह गतिविधि xml फ़ाइल के अनारक्षित संदर्भ के साथ मेरी समस्या को हल करता है
टिम जॉन

23

DataBinding वर्ग स्वचालित रूप से उत्पन्न।

यदि आपका xml नाम गतिविधि_test है, तो बाइंडिंग वर्ग एक्टिविटीटेबाइंडिंग होगा।

परंतु,

dataBinding {
        enabled = true
    }

लेआउट में रूट के रूप में लेआउट होना चाहिए

<layout xmlns:android="http://schemas.android.com/apk/res/android">
</layout>

मैं घंटों से आत्मा की खोज कर रहा हूं, ग्रेडेल मैजिक को बहुत कुछ बना रहा हूं, लेकिन मैं ConstraintLayoutजड़ के रूप में उपयोग करता हूं । धन्यवाद!
एलेक्सी मार्कोव

14

मेरी भी यही समस्या थी। एंड्रॉइड sdk डॉक्स पर पढ़ने के बाद, केवल अपेक्षित फ़ाइल नाम बनाया जाना है, लेकिन ऐसा नहीं होने पर क्या करना है, इसके बारे में कुछ भी नहीं। मैंने कुछ और शोध के बाद पाया कि नीचे दिए गए लेआउट तत्व जैसे नाम स्थान को हटाने के बाद (आपके उदाहरण का उपयोग करके), इसने मेरे लिए काम किया।

    <?xml version="1.0" encoding="utf-8"?>
    <layout>
        <data>  </data>
        <RelativeLayout
           xmlns:android="http://schemas.android.com/apk/res/android"
           android:layout_width="match_parent"
           android:layout_height="match_parent">
        </RelativeLayout>
    </layout> 

10

मेरे मामले में, बाइंडिंग वर्ग उत्पन्न हुआ था और (लेकिन मुझे लगा कि यह नहीं था) ... लेकिन यह स्वचालित रूप से उक्त वर्ग के आयात को गतिविधि / विखंडन आयात अनुभाग में नहीं जोड़ता है ... इसलिए ... विकल्प + दर्ज :)


2
बिंगो, मेरे लिए काम करता था, हालांकि मुझे मैन्युअल रूप से आयात करना पड़ता था, फिर भी जो भी कारण के लिए विकल्प की पेशकश नहीं करता था।
रोब

8

इसे ठीक से सेट करने के बाद (xml नाम स्थान सहित और सब कुछ लपेटने सहित <layout>), जो मेरे लिए काम करता है वह बिल्ड - प्रोजेक्ट बना रहा था। न ही स्वच्छ परियोजना या पुनर्निर्माण परियोजना। 26.0.2 बिल्ड टूल का उपयोग करके मैं एंड्रॉइड स्टूडियो 2.3.1 में हूं। <data>टैग के लिए कोई ज़रूरत नहीं है ।


इसे सही उत्तर के रूप में चिह्नित किया जाना चाहिए। बाकी सब सिर्फ कामचलाऊ हैं। नाम-स्थान को हिलाने या डेटा तत्व जोड़ने की भी आवश्यकता नहीं है
विक्की कपाड़िया

8

यदि आप बेस जॉब करते हैं, तो अपनी परियोजना में डेटाबैनिंग को सक्षम करने के लिए , जैसे कि इंगलिश में इनेबल का उपयोग करें और लेआउट टैग का उपयोग करें , जब आप xml कोड को बदलते हैं और उन xml के लिए नए डेटाबाइंडिंग क्लास को जेनरेट नहीं करते हैं, तो आप केवल डेटा के लिए एक तेज़ तरीके का उपयोग कर सकते हैं श्रेणीबद्ध में बाध्यकारी वर्ग-> अन्य-> डेटाबाइंडिंगेंबासचेलडेसबग इसे तेजी से पूरे प्रोजेक्ट से अधिक तेजी से। यह केवल डेटाबाइंडिंग क्लास उत्पन्न करता है। यहां छवि विवरण दर्ज करें


4
dataBinding {
        enabled = true
    }

नए डेटा बाइंडिंग कंपाइलर को सक्षम करने के लिए, अपने gradle.properties फ़ाइल में निम्न विकल्प जोड़ें:

android.databinding.enableV2=true

3

डेटा बाइंडिंग कक्षाएं बिल्ड के दौरान उत्पन्न होती हैं, इसलिए जब आप ऐप के ग्रेडल बिल्ड में डेटा बाइंडिंग सक्षम करते हैं और अपने एक्सएमएल को लेआउट टैग के साथ घेर लेते हैं, तो आपको अपने ऐप को फिर से बनाना चाहिए। यदि वह मदद नहीं करता है, तो अपने बिल्ड फ़ोल्डर को हटा दें और इसे फिर से करें।


2

इस उत्तर के लिए यहां धन्यवाद - यह ऐसा लगता है कि "लेआउट नेमस्पेस" को या तो साफ करने की आवश्यकता है, या आपको एक नया अनूठा नाम चाहिए।

यहां मेरे लिए काम करने वाले विकल्प दिए गए हैं:

  1. यह सुनिश्चित करने के लिए कि यह उत्पन्न किया जा सकता है लेआउट के लिए एक नया नाम बनाएँ। इससे मेरी समस्या हल हो गई, जहां मेरे पास एक लेआउट था जो पहली बार बनाया गया था , बिना डेटा बाइंडिंग के - चलो इसे कॉल करें fragment_abc.xml। जब मैंने इसमें डेटा बाइंडिंग को जोड़ने की कोशिश की, तो यह पहचाना नहीं गया - कई स्पष्ट कैश और पुनरारंभ कॉल के बाद भी। हालाँकि, जैसे ही मैंने लेआउट की एक प्रतिलिपि बनाई fragment_abc2.xml, तुरंत मुझे उत्पन्न डेटा-बाध्यकारी .java / .class ऑब्जेक्ट मिल गया।

  2. उपर्युक्त कार्य को देखने के बाद, मैंने मॉड्यूल से सिर्फ / बिल्ड फ़ोल्डर को हटाने की कोशिश की, और परियोजना को फिर से बनाया - इसने मूल लेआउट के लिए डेटा बाइंडिंग प्राप्त करने के लिए काम किया।


1

यदि संभव हो तो केवल एक चीज जिसकी मैं कल्पना कर सकता हूं, यदि आपके पास नहीं है

dataBinding {
    enabled true
}

अपने ग्रेड फ़ाइल में। यदि नहीं, तो इसे केवल शेल फ़ाइल में जोड़ें। अर्थात

android {
  ......

  dataBinding {
    enabled true
  }
}

फिर अपने प्रोजेक्ट को सिंक करें। यदि यह अभी भी विफल रहता है, तो आपको अपने एंड्रॉइड स्टूडियो के अमान्य / पुनः आरंभ करने की आवश्यकता हो सकती है


मैंने अपने प्रश्न में स्पष्ट रूप से उल्लेख किया है कि <variable>xml में जोड़ने के बाद यह बाइंडिंग क्लास उत्पन्न कर रहा है, इसलिए ग्रेड dataBindingफ़ाइल में न जोड़ने का कोई मामला नहीं है , अगर मैंने इससे जोड़ा नहीं है तो इसे बाइंडिंग क्लास उत्पन्न नहीं करना चाहिए।
रवि

सिंकिंग और पुनरारंभ करने से पहले। कृपया 'मेक' करने की कोशिश करें। हो जाएगा।
निजामुद्दीन शेरिफ

1

मुझे नहीं पता कि यह आपके लिए काम करेगा या नहीं। बस लेआउट XML फ़ाइल नाम का नाम बदलें । जैसा लगता है अपने लेआउट नाम है activity_main.xml सिर्फ परिवर्तन की तरह कुछ भी करने के लिए इसका नाम बदलना main.xml और फिर से करने के लिए इसका नाम बदलना activity_main.xml । फिर आप एक्टिविटी मेनबाइंडिंग पर आयात विकल्प देख सकते हैं

आशा है कि यह आप के लिए काम करता है।


1

जब आप एक मल्टीमॉडल एंड्रॉइड एप्लिकेशन के साथ काम करते हैं तो अपने बाध्यकारी क्लास पथ की जांच करें। शायद आपको उपयोग करना चाहिए:

import com.yourcompany.app.android.modulename.databinding.FragmentABCtBinding इसके बजाए:

import com.yourcompany.app.android.databinding.FragmentABCtBinding


1

लेआउट हटाएं और पूर्ववत करें, और सुनिश्चित करें कि उत्पन्न बाध्यकारी कक्षाएं उसके बाद सही तरीके से आयात की जाती हैं।


0

मुझे भी यही समस्या थी। सब कुछ आपने सही किया। बात यह है कि आपको xml में डेटा टैग के अंदर चर जोड़ने की आवश्यकता है। उसके लिए आपको एक नमूना मॉडल वर्ग बनाना चाहिए और इसे डेटा टैग में चर के रूप में जोड़ना चाहिए।

तब तक जब तक आपको जेनरेटेड एक्टिविमबाइंडिंग देखने को नहीं मिलेगी।


0

मेरे पास एक समान मुद्दा था जहां मेरे पास लेआउट लपेटा गया था और मेरे डेटा बाइंडिंग को ग्रेड फ़ाइल में सक्षम किया गया था। मुख्य गतिविधि अभी भी इंटेलीजेंस नहीं कर सकती है या मेरी कक्षाएं नहीं देख सकती हैं। मेरे लिए यह तय था कि बाध्यकारी चर को जोड़ा जाए और वैसे भी बाध्यकारी आयात किया जाए। वहाँ से मैंने सिर्फ हल बनाया और फिर यह पता लगा कि कक्षा क्या थी। वहाँ से मैं अपने ऊँट केस क्लासेस आयात करने में सक्षम था जो उत्पन्न हुए थे।


0

मुझे मुद्दा मिल गया और समस्या लेआउट में थी जिसका उपयोग फ़ील्ड स्ट्रिंग नहीं था, यह एक तिथि थी।

ऐसा लगता है कि सभी फ़ील्ड को टेक्स्ट के लिए काम करना पड़ता है, कम से कम टेक्स व्यू घटक के साथ।

यदि आप कमांड के साथ निर्माण करते हैं ।/gradlew build --stacktrace

यह त्रुटियों को बेहतर दिखाता है।


0

मेरे मामले में, मैंने सोचा था कि उत्पन्न वर्ग को srcफ़ोल्डर में मेरी सामान्य कक्षाओं के साथ दिखाई देना था । इसके अलावा, मैंने सोचा कि उत्पन्न वर्ग का नाम थोड़ा अलग होना चाहिए। यह सब मेरी गलती थी। उत्पन्न वर्ग buildफ़ोल्डर, build -> generated -> ...पथ में पाया जा सकता है । यदि आपकी गतिविधि में उत्पन्न वर्ग का कोई आयात नहीं है, तो आयात जोड़ें

import com.yourcompany.app.databinding.ActivityMainBinding;"

0

यदि आपको DataBindingUtil.setContentView में निम्न त्रुटि मिलती है

अनारक्षित संदर्भ: activity_main

आपको केवल निम्नलिखित आयात विवरण को निकालने की आवश्यकता है

आयात android.R

मुझे दूसरे मंच पर समाधान मिला। स्रोत


0

यदि हाल ही में किसी भी मौजूदा प्रोजेक्ट को Androidx में माइग्रेट किया गया है तो आपको अपने आयात को बदलने की आवश्यकता है

import com.yourpackagename.BR;

सेवा

import androidx.databinding.library.baseAdapters.BR;

Google के 2 दिनों के बाद आखिरकार समाधान मिल गया, जो मेरे लिए एक काम है।


1
नंबर बाइंडिंग रिसोर्स ( .BR। ) जैसे रिसोर्स ( .R। )। यह आपके प्रोजेक्ट संसाधन (आईडी, ड्रा करने योग्य, रंग, ...) के आधार पर उत्पन्न होता है, इसलिए यह आपके प्रोजेक्ट पैकेज ( your.project.package.BR) के अंदर होगा । जैसे थर्ड पार्टी लाइब्रेरी के अंदर नहीं androidx.databinding.library.baseAdapters.BR
dphans 8

0

ऐसे मामले होते हैं जब आप किसी फ़ाइल को जेनरेट की गई निर्देशिका के तहत नहीं देखेंगे, तो आप उस प्रॉपर्टी को बाइंड कर सकते हैं, जिसे व्यूमोडल में घोषित नहीं किया गया है। यदि आप xml में ऐसा करते हैं तो यह अनिवार्य रूप से आपको एक लिंट त्रुटि नहीं देता है।


0

यदि आप Serializable -> को कार्यान्वित कर रहे हैं, तो आपको इसे लागू करना होगा सीरियल

अन्यथा आपको यह त्रुटि मिलेगी। आशा है कि यह भविष्य में किसी की मदद करेगा

मेरे मामले में मैं पार्सल लाइब्रेरी का उपयोग करता हूं। मैं अपनी सब क्लास में @Parcel एनोटेट करने से चूक गया


0

उपरोक्त चरणों के अलावा, आप चर प्रकार भी जांच सकते हैं। सुनिश्चित करें कि यह TextView के लिए स्ट्रिंग है या उसी के रूप में परिभाषित किया गया है BindingAdapter। उदाहरण के लिए:

data class MyDataObject(val name: String, val age: Int)

और XML में:

android:text="@{dataobject.age}"

यह उपरोक्त त्रुटि का कारण होगा। ठीक करने के लिए आप या तो स्ट्रिंग के आयु चर बना सकते हैं या आप अपने XML में स्ट्रिंग आयात कर सकते हैं और String.valueOf(age)निम्नानुसार उपयोग कर सकते हैं :

<data>
    <import type="String" />
...
</data>

और आपके TextView में:

android:text="@{String.valueOf(dataobject.age)}"

0

मेरा समाधान वर्ग के नाम में एक प्रत्यय FragmentBinding के रूप में लेना था।

प्रत्येक लेआउट फ़ाइल के लिए एक बाध्यकारी वर्ग उत्पन्न होता है। डिफ़ॉल्ट रूप से, क्लास का नाम लेआउट फ़ाइल के नाम पर आधारित होता है, इसे पास्कल केस में परिवर्तित करता है और बाइंडिंग प्रत्यय को इसमें जोड़ता है। उपरोक्त लेआउट फ़ाइल नाम गतिविधि_main.xml है ताकि संबंधित उत्पन्न वर्ग गतिविधिमाइंड बाइंडिंग है। यह वर्ग लेआउट गुणों (उदाहरण के लिए, उपयोगकर्ता चर) से लेआउट के विचारों के लिए सभी बाइंडिंग रखता है और यह बताता है कि बाध्यकारी अभिव्यक्तियों के लिए मूल्यों को कैसे असाइन किया जाए।

गतिविधि या टुकड़े वर्ग के नाम का नामकरण उपसर्गों के संदर्भ में भिन्न हो सकता है। क्योंकि प्रत्यय हमेशा बंधन होता है।

खेमराज और अमान्य कैश / रिस्टार्ट की प्रतिक्रिया के बाद , आपको एक्टिविटीबाइंडिंग या फ्रैगमेंट बाइंडिंग को फिर से लिखना चाहिए। पहले से उत्पन्न कक्षाओं के आईडीई सुझावों को प्राप्त करने के लिए को और आयात को हार्डकोड नहीं करना चाहिए।

मेरे मामले में मैं वर्ग के नाम को पीछे की FragmentCompetitionsBindingबजाय आयात करने की कोशिश कर रहा था CompetitionsFragmentBinding

जीएल

स्रोत


0

मेरे मामले में, डेटा बाइंडिंग कक्षाएं उत्पन्न नहीं हुई थीं क्योंकि मैंने mipmap Android संसाधन निर्देशिका को हटा दिया था। मैंने Res / mipmap / निर्देशिका को फिर से बनाया और डेटा बाइंडिंग कक्षाएं फिर से लगाई गईं।


0

मुझे एक ऐसे ही मुद्दे का सामना करना पड़ा जहां BindingImpl वर्ग उत्पन्न करने में DataBinding विफल रहा । मेरे मामले में डेटा वर्ग में एक विधि से एक मुद्दा था जहां नाम का गलत उपयोग किया गया था: मॉडल में onSignInCliked () और लेआउट में मैंने onSigninCliked () का उपयोग किया था । साइन इन करें नोटिस बनाम प्रवेश

त्रुटि संदेश पर्याप्त नहीं था और मैंने समस्या का केवल तभी पता लगाया जब मैंने स्टैक-ट्रेस विकल्प के साथ बिल्ड स्क्रिप्ट का उपयोग किया।


0

सुनिश्चित करें कि डेटा बाइंडिंग सक्षम है

android {
...
   dataBinding {
        enabled = true
    }
...
}

सिंक के साथ सिंक प्रोजेक्ट बटन पर क्लिक करें (ग्रेड के साथ सिंक परियोजना)


0

अगर आपकी XML फ़ाइल में कोई समस्या है, तो डेटाबाइंडिंग क्लास नहीं करेगा उत्पन्न होगा। एक्सएमएल फ़ाइल के माध्यम से चलने और सिंटैक्स त्रुटियों (जो आमतौर पर लाल रंग में हाइलाइट किए जाते हैं) के लिए एक त्वरित फिक्स होगा। त्रुटियां गैर-मौजूदा या गलत संदर्भों, टाइपोग्राफिक त्रुटियों, आदि के रूप में आ सकती हैं।

संक्षेप में, बस यह सुनिश्चित करें कि आपके XML कोड में कोई लाल-रेखांकित रेखा नहीं है। जब आप कर रहे हैं, पुनर्निर्माण और अपने Databinding वर्ग उत्पन्न किया गया होता।


-1

1. एप्लिकेशन में नीचे जोड़ें

 dataBinding {
        enabled = true
    }

2. xml लेआउट कोड के नीचे लिखें

<layout
    xmlns:android="http://schemas.android.com/apk/res/android">
  <data></data>
</layout>if you don't get data binding class just rename the layout file name and you will get data binding class.

3
डेटाबाइंडिंग के लिए सामान्य स्थिति में इंटरनेट अनुमति की आवश्यकता क्यों होती है?
एम। पोमोरॉय

1
@ M.Pomeroy हाँ इसकी आवश्यकता नहीं है, जवाब का संपादन नहीं किया गया धन्यवाद
रोहन लोधी

-5

वर्ग पथ का उपयोग करें 'com.android.databinding: dataBinder: 1.0-rc0'


1.5.0 और इसके बाद के संस्करण के लिए, इस क्लासपाथ का उपयोग करने की आवश्यकता नहीं है।
रवि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.