डेस्टिनेशन के बीच नेविगेट करने के लिए, Safe Args Gradle प्लगिन का इस्तेमाल करने का सुझाव दिया जाता है. यह प्लगिन, ऑब्जेक्ट और बिल्डर क्लास जनरेट करता है. इससे डेस्टिनेशन के बीच टाइप-सेफ़्टी के साथ नेविगेट किया जा सकता है. एक डेस्टिनेशन से दूसरे डेस्टिनेशन पर डेटा भेजने और नेविगेट करने के लिए, Safe Args का इस्तेमाल करें.
Safe Args चालू करना
अपने प्रोजेक्ट में Safe Args जोड़ने के लिए, सबसे ऊपर के लेवल की build.gradle फ़ाइल में यह classpath शामिल करें:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.8" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.8" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
आपको उपलब्ध दो प्लगिन में से किसी एक को भी लागू करना होगा.
Java या Java और Kotlin के मिक्स मॉड्यूल के लिए, Java भाषा का कोड जनरेट करने के लिए, अपने ऐप्लिकेशन या मॉड्यूल की build.gradle फ़ाइल में यह लाइन जोड़ें:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
इसके अलावा, सिर्फ़ Kotlin मॉड्यूल के लिए सही Kotlin कोड जनरेट करने के लिए, यह जोड़ें:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX पर माइग्रेट करने के मुताबिक, आपकी gradle.properties फ़ाइल में android.useAndroidX=true होना चाहिए.
जनरेट किया गया कोड
Safe Args को चालू करने के बाद, जनरेट किए गए कोड में वे क्लास और तरीके शामिल होते हैं जिन्हें आपने हर ऐक्शन के लिए तय किया है. साथ ही, इसमें वे क्लास भी शामिल होती हैं जो हर भेजने और पाने की जगह से जुड़ी होती हैं.
सेफ़ आर्ग्युमेंट, हर उस डेस्टिनेशन के लिए एक क्लास जनरेट करता है जहां से कोई कार्रवाई शुरू होती है. जनरेट किए गए क्लास के नाम में, डेस्टिनेशन क्लास के मूल नाम में "Directions" जोड़ा जाता है. उदाहरण के लिए, अगर यात्रा शुरू करने की जगह का नाम SpecifyAmountFragment है, तो जनरेट किए गए क्लास का नाम SpecifyAmountFragmentDirections होगा.
जनरेट की गई क्लास में, ओरिजनल डेस्टिनेशन में तय किए गए हर ऐक्शन के लिए एक स्टैटिक मेथड होता है. यह तरीका, तय किए गए किसी भी कार्रवाई के पैरामीटर को आर्ग्युमेंट के तौर पर लेता है. साथ ही, यह NavDirections ऑब्जेक्ट दिखाता है, जिसे सीधे तौर पर navigate() को पास किया जा सकता है.
Safe Args का उदाहरण
उदाहरण के लिए, मान लें कि नेविगेशन ग्राफ़ में एक ऐसी कार्रवाई है जो दो डेस्टिनेशन, SpecifyAmountFragment और ConfirmationFragment को जोड़ती है. ConfirmationFragment में एक float पैरामीटर होता है, जिसे आपको कार्रवाई के हिस्से के तौर पर देना होता है.
Safe Args, SpecifyAmountFragmentDirections क्लास जनरेट करता है. इसमें एक ही तरीका होता है, actionSpecifyAmountFragmentToConfirmationFragment(). साथ ही, इसमें ActionSpecifyAmountFragmentToConfirmationFragment नाम की इनर क्लास होती है. इनर क्लास, NavDirections से ली गई है. यह क्लास, उससे जुड़े ऐक्शन आईडी और float पैरामीटर को सेव करती है. इसके बाद, दिखाए गए NavDirections ऑब्जेक्ट को सीधे navigate() पर भेजा जा सकता है. इसका उदाहरण यहां दिया गया है:
Kotlin
override fun onClick(v: View) {
val amount: Float = ...
val action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount)
v.findNavController().navigate(action)
}
Java
@Override
public void onClick(View view) {
float amount = ...;
action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount);
Navigation.findNavController(view).navigate(action);
}
Safe Args की मदद से, डेस्टिनेशन के बीच डेटा भेजने के बारे में ज़्यादा जानने के लिए, टाइप सेफ़्टी के साथ डेटा भेजने के लिए, Safe Args का इस्तेमाल करें लेख पढ़ें.
Safe Args का इस्तेमाल करके, टाइप सेफ़्टी को पक्का करना
Safe Args Gradle प्लगिन का इस्तेमाल करके, डेस्टिनेशन के बीच नेविगेट करें. यह प्लगिन, आसान ऑब्जेक्ट और बिल्डर क्लास जनरेट करता है. इनकी मदद से, टाइप से सुरक्षित नेविगेशन और डेस्टिनेशन के बीच आर्ग्युमेंट पास करने की सुविधा मिलती है.
अपने प्रोजेक्ट में Safe Args जोड़ने के लिए, सबसे ऊपर के लेवल की build.gradle फ़ाइल में यह classpath शामिल करें:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.8" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.8" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
आपको उपलब्ध दो प्लगिन में से किसी एक को भी लागू करना होगा.
Java या Java और Kotlin के मिक्स मॉड्यूल के लिए, Java भाषा का कोड जनरेट करने के लिए, अपने ऐप्लिकेशन या मॉड्यूल की build.gradle फ़ाइल में यह लाइन जोड़ें:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
इसके अलावा, सिर्फ़ Kotlin मॉड्यूल के लिए सही Kotlin कोड जनरेट करने के लिए, यह जोड़ें:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
AndroidX पर माइग्रेट करने के मुताबिक, आपकी gradle.properties फ़ाइल में android.useAndroidX=true होना चाहिए.
Safe Args को चालू करने के बाद, प्लग इन ऐसा कोड जनरेट करता है जिसमें आपकी तय की गई हर कार्रवाई के लिए क्लास और तरीके शामिल होते हैं. हर ऐक्शन के लिए, Safe Args हर ओरिजिनेटिंग डेस्टिनेशन के लिए एक क्लास भी जनरेट करता है. यह वह डेस्टिनेशन होता है जहां से ऐक्शन शुरू होता है. जनरेट किया गया क्लास का नाम, यात्रा शुरू करने की जगह की क्लास के नाम और "दिशा-निर्देश" शब्द का कॉम्बिनेशन होता है. उदाहरण के लिए, अगर डेस्टिनेशन का नाम SpecifyAmountFragment है, तो जनरेट किए गए क्लास का नाम SpecifyAmountFragmentDirections होगा. जनरेट की गई क्लास में, ओरिजनल डेस्टिनेशन में तय किए गए हर ऐक्शन के लिए एक स्टैटिक तरीका होता है. यह तरीका, तय किए गए किसी भी ऐक्शन पैरामीटर को आर्ग्युमेंट के तौर पर लेता है. साथ ही, यह एक NavDirections ऑब्जेक्ट दिखाता है, जिसे navigate() में पास किया जा सकता है.
उदाहरण के लिए, मान लें कि हमारे पास एक नेविगेशन ग्राफ़ है, जिसमें एक ही ऐक्शन है. यह ऐक्शन, ओरिजनल डेस्टिनेशन SpecifyAmountFragment को रिसीविंग डेस्टिनेशन ConfirmationFragment से कनेक्ट करता है.
Safe Args, SpecifyAmountFragmentDirections क्लास जनरेट करता है. इसमें एक ही तरीका होता है, actionSpecifyAmountFragmentToConfirmationFragment(). यह NavDirections ऑब्जेक्ट दिखाता है. इसके बाद, इस NavDirections ऑब्जेक्ट को सीधे तौर पर navigate() को पास किया जा सकता है. इसका उदाहरण यहां दिया गया है:
Kotlin
override fun onClick(view: View) { val action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment() view.findNavController().navigate(action) }
Java
@Override public void onClick(View view) { NavDirections action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment(); Navigation.findNavController(view).navigate(action); }
Safe Args की मदद से, डेस्टिनेशन के बीच डेटा पास करने के बारे में ज़्यादा जानने के लिए, डेस्टिनेशन के बीच डेटा पास करना में टाइप सेफ़्टी के साथ डेटा पास करने के लिए, Safe Args का इस्तेमाल करना लेख पढ़ें.