Kotlin सिंथेटिक्स से Jetpack व्यू बाइंडिंग में माइग्रेट करना

Kotlin के Android एक्सटेंशन अब काम नहीं करते हैं. इसका मतलब है कि Kotlin का इस्तेमाल किया जा रहा है व्यू बाइंडिंग के लिए सिंथेटिक अब काम नहीं करते. अगर आपका ऐप्लिकेशन Kotlin का इस्तेमाल करता है व्यू बाइंडिंग के लिए सिंथेटिक, Jetpack व्यू बाइंडिंग पर माइग्रेट करने के लिए इस गाइड का इस्तेमाल करें.

अगर आपके ऐप्लिकेशन में व्यू बाइंडिंग के लिए पहले से Kotlin सिंथेटिक्स का इस्तेमाल नहीं किया जा रहा है, तो व्यू देखें बाइंडिंग.

Gradle फ़ाइल अपडेट करना

Android एक्सटेंशन की तरह, Jetpack व्यू बाइंडिंग भी मॉड्यूल-दर-मॉड्यूल पर चालू है आधार पर. व्यू बाइंडिंग का इस्तेमाल करने वाले हर मॉड्यूल के लिए, viewBinding बिल्ड सेट करें मॉड्यूल-लेवल की build.gradle फ़ाइल में, true के लिए विकल्प:

ग्रूवी

android {
    ...
    buildFeatures {
        viewBinding true
    }
}

Kotlin

android {
    ...
    buildFeatures {
        viewBinding = true
    }
}

अगर आपका ऐप्लिकेशन Parcelable का इस्तेमाल नहीं करता सुविधाओं के साथ, उस लाइन को हटाएं जो Kotlin Android एक्सटेंशन को चालू करती है:

ग्रूवी

plugins {
  id 'kotlin-android-extensions'
}

Kotlin

plugins {
    kotlin("android.extensions")
}

किसी मॉड्यूल में व्यू बाइंडिंग को चालू करने के बारे में ज़्यादा जानने के लिए, सेटअप निर्देश दिए गए हैं.

ऐक्टिविटी और फ़्रैगमेंट क्लास अपडेट करें

Jetpack व्यू बाइंडिंग से, हर एक्सएमएल लेआउट फ़ाइल के लिए एक बाइंडिंग क्लास जनरेट होती है जो मॉड्यूल में शामिल हैं. इस बाइंडिंग क्लास का नाम, एक्सएमएल का नाम है फ़ाइल को पास्कल केस में रखें, जिसके आखिर में Binding शब्द जोड़ा गया हो. उदाहरण के लिए, अगर लेआउट फ़ाइल का नाम result_profile.xml है, जो जनरेट की गई बाइंडिंग क्लास ResultProfileBinding है.

इन कामों के लिए, सिंथेटिक प्रॉपर्टी के बजाय जनरेट की गई बाइंडिंग क्लास का इस्तेमाल करना रेफ़रंस व्यू की मदद से, अपनी गतिविधि और फ़्रैगमेंट क्लास में बदलाव करने के लिए फ़ॉलो किया जा रहा है:

  1. kotlinx.android.synthetic से इंपोर्ट किए गए सभी आइटम हटाएं.

  2. गतिविधि के लिए जनरेट की गई बाइंडिंग क्लास का इंस्टेंस इनफ़्लेट करें या फ़्रैगमेंट इस्तेमाल करना है.

  3. इसके बजाय, बाइंडिंग क्लास इंस्टेंस का इस्तेमाल करने के लिए सभी व्यू रेफ़रंस बदलें सिंथेटिक प्रॉपर्टी:

// Reference to "name" TextView using synthetic properties.
name.text = viewModel.nameString

// Reference to "name" TextView using the binding class instance.
binding.name.text = viewModel.nameString

ज़्यादा जानने के लिए, यहां दिया गया इस्तेमाल सेक्शन देखें देखने की बाइंडिंग गाइड.