मुझे कोई संतोषजनक जवाब नहीं मिला। तो यहां युक्तियां हैं जो मेरे डेटा बाइंडिंग ज्ञान का सारांश हैं।
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
)
अंतिम शब्द
अंत में अगर अभी भी आपका बाध्यकारी वर्ग उत्पन्न नहीं हुआ है, तो हमारे पास हमारा सबसे शक्तिशाली हथियार है। - एंड्रॉइड स्टूडियो को पुनरारंभ करें: डी
- सबसे पहले, बस पुनरारंभ करने का प्रयास करें , यह हमेशा पुनरारंभ करने के बाद मेरे बाध्यकारी लेआउट के चर उत्पन्न करता है।
- यदि यह काम नहीं करता है तो अमान्य कैश और पुनरारंभ करें ।
यह वह सब है जो मैं अपने डेटा बाइंडिंग त्रुटियों को हल करने के लिए करता हूं। यदि आपको कोई और समस्या मिलती है, तो आप यहाँ टिप्पणी कर सकते हैं।
dataBinding.enabled
अपने build.gradle में?