नेविगेशन
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 23 सितंबर, 2026 | 2.10.2 | - | - | - |
डिपेंडेंसी का एलान करना
Navigation पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.10.2" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.10.2" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
अपने प्रोजेक्ट में Safe Args जोड़ने के लिए, सबसे ऊपर के लेवल की build.gradle फ़ाइल में यह classpath शामिल करें:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.10.2" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.10.2" 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 होना चाहिए.
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या आपके पास इस लाइब्रेरी को बेहतर बनाने के लिए सुझाव हैं, तो हमें बताएं. कृपया नई समस्या सबमिट करने से पहले, इस लाइब्रेरी में शामिल मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
नेविगेशन वर्शन 2.10
वर्शन 2.10.2
23 सितंबर, 2026
androidx.navigation:navigation-*:2.10.2 रिलीज़ हो गया है. वर्शन 2.10.2 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
androidx.lifecycleकी डिपेंडेंसी को वर्शन 2.10.0 में अपडेट किया गया. I4505a9f9a
वर्शन 2.10.1
09 सितंबर, 2026
androidx.navigation:navigation-*:2.10.1 रिलीज़ हो गया है. वर्शन 2.10.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अगर
NavHostऐनिमेशन छोड़ देता है, तो अब यह छोड़े गए ऐनिमेशन के हिस्से के तौर परsizeTransformको भी शामिल करेगा, ताकि अनचाही क्लिपिंग को रोका जा सके. (I4f995, b/550924680)
वर्शन 2.10.0
26 अगस्त, 2026
androidx.navigation:navigation-*:2.10.0 रिलीज़ हो गया है. वर्शन 2.10.0 में ये बदलाव शामिल हैं.
2.9.0 के बाद हुए मुख्य बदलाव:
NavHostअब एक ओवरलोड उपलब्ध कराता है. यहpredictivePopEnterTransitionऔरpredictivePopExitTransitionपैरामीटर स्वीकार करता है, ताकि अनुमानित बैक जेस्चर के दौरान कस्टम ट्रांज़िशन की अनुमति दी जा सके.handleDeepLinkमें बदलाव किया गया है, ताकि सिर्फ़ मान्यता पाए डीप लिंक को हैंडल किया जा सके. बाकी सभी डीप लिंक को अनदेखा कर दिया जाएगा. अगर इसकी वजह से आपके ऐप्लिकेशन में कोई गड़बड़ी होती है, तो नेविगेशन ग्राफ़ में तय किए गए डीप लिंक के ज़रिए नेविगेट करने का विकल्प चुनें. Robolectric टेस्ट के लिए, आपको किसी भरोसेमंद पैकेज के लिएsetPackageतरीके का इस्तेमाल करना पड़ सकता है.NavBackStackEntryInfoको नेविगेशन इवेंट के दौरान, बैक स्टैक स्नैपशॉट दिखाने के लिए जोड़ा गया था. इससे, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के लिए बेहतर कस्टम ऐनिमेशन चालू हो जाते हैं.
अन्य प्लैटफ़ॉर्म के लिए सहायता
navigation-common,navigation-runtime, औरnavigation-testingमॉड्यूल मेंdesktop,linux,macOS,iOS,javascript,WASM,watchos, औरtvosके लिए सहायता जोड़ी गई है.
वर्शन 2.10.0-rc01
12 अगस्त, 2026
androidx.navigation:navigation-*:2.10.0-rc01 रिलीज़ हो गया है. वर्शन 2.10.0-rc01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- Navigation SDK के लिए, SDK टूल के वर्शन को एपीआई 24 पर ले जाया गया है. ऐसा AndroidX की बाकी लाइब्रेरी के साथ भी किया गया है. (I972da, b/474169350)
वर्शन 2.10.0-beta01
29 जुलाई, 2026
androidx.navigation:navigation-*:2.10.0-beta01 रिलीज़ हो गया है. वर्शन 2.10.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन इवेंट के दौरान बैकस्टैक स्नैपशॉट दिखाने के लिए,
NavBackStackEntryInfoको लॉन्च किया गया है. इससे, बेहतर कस्टम प्रिडिक्टिव बैक ऐनिमेशन चालू किए जा सकते हैं. (Icb3b8)
वर्शन 2.10.0-alpha06
01 जुलाई, 2026
androidx.navigation:navigation-*:2.10.0-alpha06 रिलीज़ हो गया है. वर्शन 2.10.0-alpha06 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- सिर्फ़ पहचाने गए डीप लिंक हैंडल किए जाएं, इसके लिए
handleDeepLinkमें बदलाव किया गया (Id4fe3, b/509640056) - कंपोज़ेबल फ़ंक्शन को बड़ा करने के लिए, फ़्रैगमेंट आर्ग्युमेंट के बजाय डेस्टिनेशन से पूरी तरह से क्वालिफ़ाइड नाम का इस्तेमाल करने के लिए,
ComposableFragmentको बदल दिया गया है. (I65ded, b/509640586) FragmentNavigatorमें क्रैश होने की समस्या को ठीक किया गया है. इसकी वजह से, ऑपरेशन ऑप्टिमाइज़ न होने पर, लेजिटिमेट फ़्रैगमेंटIllegalArgumentExceptionथ्रो करते थे. (I093b0, b/340202276)- फ़्रैगमेंट के साथ नेविगेशन में एक गड़बड़ी को ठीक किया गया है. इसमें प्रोग्राम के हिसाब से ग्राफ़ सेट करने पर, उसे ठीक से रीस्टोर नहीं किया जा सका. (I41251, b/321147435)
वर्शन 2.10.0-alpha05
19 मई, 2026
androidx.navigation:navigation-*:2.10.0-alpha05 रिलीज़ हो गया है. वर्शन 2.10.0-alpha05 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-alpha04
6 मई, 2026
androidx.navigation:navigation-*:2.10.0-alpha04 रिलीज़ हो गया है. वर्शन 2.10.0-alpha04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavHostको बेहतर बनाया गया है, ताकि पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की वजह से होने वाली रेस कंडिशन से होने वाली संभावितNullPointerExceptionसे बचा जा सके. (Ie36c6, b/500945998)
वर्शन 2.10.0-alpha03
22 अप्रैल, 2026
androidx.navigation:navigation-*:2.10.0-alpha03 रिलीज़ हो गया है. वर्शन 2.10.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose
compileSdkको एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करने के लिए, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743)
बाहरी योगदान
watchosऔरtvosटारगेट कोnavigation-common,navigation-runtime, औरnavigation-testingमॉड्यूल में जोड़ा गया (I60e46)DefaultNavTransitionsको सार्वजनिक करें (Ide293)
वर्शन 2.10.0-alpha02
25 मार्च, 2026
androidx.navigation:navigation-*:2.10.0-alpha02 रिलीज़ हो गया है. वर्शन 2.10.0-alpha02 में ये बदलाव शामिल हैं.
वर्शन 2.10.0-alpha01
11 मार्च, 2026
androidx.navigation:navigation-*:2.10.0-alpha01 रिलीज़ हो गया है. वर्शन 2.10.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavHostअब एक ओवरलोड उपलब्ध कराता है. यहpredictivePopEnterTransitionऔरpredictivePopExitTransitionपैरामीटर स्वीकार करता है, ताकि अनुमानित बैक जेस्चर के दौरान कस्टम ट्रांज़िशन की अनुमति दी जा सके. (Iac9b0, b/478294569)
एसडीके का कम से कम वर्शन अपडेट करना
- डिफ़ॉल्ट minSdk, AndroidX की बाकी लाइब्रेरी के साथ-साथ API 21 से API 23 तक रहा है. (Ibdfca, b/380448311, b/435705964, b/435705223)
बाहरी योगदान
navigation:navigation-common,navigation:navigation-runtime, औरnavigation:navigation-testingअब Android के साथ-साथ डेस्कटॉप, Linux, macOS, iOS, JavaScript, और WASM पर भी काम करते हैं. धन्यवाद, कंस्टेंटिन त्स्खोवरेबोव!(I035d9, Iec624, I1615d)
वर्शन 2.9
वर्शन 2.9.8
22 अप्रैल, 2026
androidx.navigation:navigation-*:2.9.8 रिलीज़ हो गया है. वर्शन 2.9.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavHostको बेहतर बनाया गया है, ताकि पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की वजह से होने वाली रेस कंडिशन से होने वाले संभावितNullPointerExceptionसे बचा जा सके. (Ie36c6, b/500945998)
वर्शन 2.9.7
28 जनवरी, 2026
androidx.navigation:navigation-*:2.9.7 रिलीज़ हो गया है. वर्शन 2.9.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Google की सेवाओं के साथ इस्तेमाल किए जाने पर, नेविगेशन
SafeArgsमें अब कॉन्फ़िगरेशन कैश मेमोरी से जुड़ी समस्याएं नहीं आती हैं. (I57cda, b/458071608) - नेविगेशन-टेस्टिंग में, टेस्ट
SavedStateHandleकंस्ट्रक्टर की समस्या ठीक की गई है. इसमेंList<String>डिकोड नहीं हो रहा था. (I26aac,b/454180135)
वर्शन 2.9.6
05 नवंबर, 2025
androidx.navigation:navigation-*:2.9.6 रिलीज़ हो गया है. वर्शन 2.9.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation
SafeArgsप्लगिन को, Android Gradle प्लगिन के नए एपीआई पर माइग्रेट कर दिया गया है. इससे यह पक्का हो जाएगा कि यह AGP 8.4.2 और इसके बाद के सभी वर्शन के साथ काम करता है. इन बदलावों की वजह से, प्लगिन से जनरेट की गई फ़ाइलों की आउटपुट डायरेक्ट्री को AGP की ओर से दी गई डिफ़ॉल्ट जगह पर बदल दिया गया है. (Ie09d6, I7c431, b/203559535, b/293920476, b/269532448, b/443261197) - AGP 9.0.0-alpha04+ के साथ इस्तेमाल किए जाने पर, Navigation
SafeArgsप्लगिन को अबuseAndroidXप्रॉपर्टी सेट करने की ज़रूरत नहीं होगी. (I6c3a4, b/444746731, b/443106400)
वर्शन 2.9.5
24 सितंबर, 2025
androidx.navigation:navigation-*:2.9.5 रिलीज़ हो गया है. वर्शन 2.9.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन Safe Args अब AGP 9.0 में, पहले से मौजूद Kotlin के लिए उपलब्ध कराई गई सुविधा को मैनेज कर सकते हैं. (I1d9d76)
डिपेंडेंसी अपडेट
- Navigation Safe Args प्लगिन अब Android Gradle प्लगिन 8.4.2 पर निर्भर करता है. (b/431847270, I5932a)
वर्शन 2.9.4
10 सितंबर, 2025
androidx.navigation:navigation-*:2.9.4 रिलीज़ हो गया है. वर्शन 2.9.4 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavHostट्रांज़िशन में हैंडलर बंद होने के बाद, फ़्रेम के बीच में पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर इवेंट डिलीवर होने पर क्रैश होने से रोकें. (I5667c, b/384186542)
वर्शन 2.9.3
30 जुलाई, 2025
androidx.navigation:navigation-*:2.9.3 रिलीज़ हो गया है. वर्शन 2.9.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavControllerमें मौजूद उस गड़बड़ी को ठीक किया गया है जिसकी वजह सेOnDestinationChangedListenersका इस्तेमाल करते समयConcurrentModificationExceptionहोता था. (If7406, b/417784831)navigate(uri, navOptions,navigationExtras)का इस्तेमाल करते समय होने वाली गड़बड़ी को ठीक किया गया. इस गड़बड़ी में, अतिरिक्त जानकारी को अनदेखा किया जा रहा था. (I67fb7, b/430336813)
वर्शन 2.9.2
16 जुलाई, 2025
androidx.navigation:navigation-*:2.9.2 रिलीज़ हो गया है. वर्शन 2.9.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें एंट्री के ऊपर मौजूद डायलॉग बॉक्स को खारिज करने पर, एंट्री फिर से शुरू नहीं होती थी (Idb20e, b/418746335)
- कस्टम
NavTypesका इस्तेमाल करते समय, टाइप सेफ़ रास्तों के साथSavedStateHandleकी टेस्टिंग करते समय हुईMissingFieldExceptionगड़बड़ी को ठीक किया गया. (I2f843, b/421002511)
वर्शन 2.9.1
2 जुलाई, 2025
androidx.navigation:navigation-*:2.9.1 रिलीज़ हो गया है. वर्शन 2.9.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से सिंगल टॉप का इस्तेमाल करके इंस्टैंशिएट किए गए
NavEntries,Lifecycle.Stateमें CREATED से आगे नहीं बढ़ते थे. (I043ba, b/421095236)
वर्शन 2.9.0
7 मई, 2025
androidx.navigation:navigation-*:2.9.0 रिलीज़ हो गया है. वर्शन 2.9.0 में ये बदलाव शामिल हैं.
2.8.0 के बाद हुए अहम बदलाव
- नेविगेशन से जुड़े Safe Args ऐक्शन अब
@CheckResultएनोटेशन के साथ जनरेट किए जाते हैं, ताकि यह पक्का किया जा सके कि उनका इस्तेमाल किया गया है.
SupportingPane Interface
- कस्टम नेविगेटर अब अपने डेस्टिनेशन को
SupportingPaneइंटरफ़ेस के तौर पर मार्क कर सकते हैं. इससेNavControllerको पता चलता है कि इन डेस्टिनेशन को अन्य डेस्टिनेशन के साथ दिखाया जाएगा. इस इंटरफ़ेस का इस्तेमाल करके, एक साथ कई डेस्टिनेशनRESUMEDकिए जा सकते हैं. उदाहरण के लिए.
Compose Kotlin Multiplatform
- नेविगेशन में अब एक नया कॉमन
NavController.handleDeepLink()फ़ंक्शन उपलब्ध है. यहIntentके बजायNavDeepLinkRequestलेता है. इससे Android के अलावा अन्य प्लैटफ़ॉर्म को डीप लिंक को सही तरीके से मैनेज करने की अनुमति मिलती है. धन्यवाद, कॉन्स्टेंटिन त्सखोवरेबोव! - नेविगेशन में अब
NavUriकी सुविधा उपलब्ध है. यह एक नया कॉमन पार्सर फ़ंक्शन है. यह अन्य प्लैटफ़ॉर्म पर Android के यूआरआई के लिए काम करने वाला एपीआई है. इससे, प्लैटफ़ॉर्म से अलग यूआरआई बनाया जा सकता है. धन्यवाद, कॉन्स्टेंटिन त्स्खोवरेबोव!
टाइप सेफ़ फ़ंक्शन
- टाइप सेफ़ एपीआई, जिन्हें पहले सिर्फ़
reifiedतरीकों से ऐक्सेस किया जा सकता था. जैसे,composable<YourScreen>के अब नॉन-रीफ़ाइड वर्शन उपलब्ध हैं. ये सीधे तौर परKClassइंस्टेंस लेते हैं. - नेविगेशन टाइप की सुरक्षा अब वैल्यू क्लास को रूट के तौर पर या रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की सुविधा देती है.
वर्शन 2.9.0-rc01
23 अप्रैल, 2025
androidx.navigation:navigation-*:2.9.0-rc01 रिलीज़ हो गया है. वर्शन 2.9.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Jetpack Navigation से, Android के अलावा अन्य प्लैटफ़ॉर्म के सभी टारगेट हटा दिए गए हैं, क्योंकि वे काम नहीं करते. अब अलग-अलग प्लैटफ़ॉर्म के लिए स्टब उपलब्ध कराए जाते हैं.(I2877d)
वर्शन 2.9.0-beta01
9 अप्रैल, 2025
androidx.navigation:navigation-*:2.9.0-beta01 रिलीज़ हो गया है. वर्शन 2.9.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
parseStringAsNavUriके सामान्य एपीआई कोNavUriफ़ैक्ट्री फ़ंक्शन में बदल दिया गया है. यह फ़ंक्शन एक स्ट्रिंग लेता है. (I4db6e, b/403616316)
डिपेंडेंसी से जुड़े अपडेट
- यह लाइब्रेरी अब Kotlin 2.0 के लैंग्वेज लेवल को टारगेट करती है. इसके लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है. (Idb6b5)
वर्शन 2.9.0-alpha09
26 मार्च, 2025
androidx.navigation:navigation-*:2.9.0-alpha09 रिलीज़ हो गया है. वर्शन 2.9.0-alpha09 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-testingमॉड्यूल अब Android के साथ-साथ डेस्कटॉप, Linux, macOS, और iOS पर भी काम करता है. (I2b770, b/398265336)NavTypeअब Android के साथ-साथ डेस्कटॉप, Linux, macOS, और iOS पर भी काम करता है. (I297d8)
वर्शन 2.9.0-alpha08
12 मार्च, 2025
androidx.navigation:navigation-*:2.9.0-alpha08 रिलीज़ हो गया है. वर्शन 2.9.0-alpha08 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.8.9: नेविगेशन 2.8.8 में मिली रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, डीप लिंक के अनुरोध या इंटेंट के सभी फ़ील्ड से मेल खाने वाले डीप लिंक को ही मैच माना जाता था. इस वजह से, ऐसे डीप लिंक काम नहीं कर रहे हैं जिनमें फ़ील्ड के कुछ हिस्से मैच होते हैं और अन्य फ़ील्ड मैच नहीं होते. (Ie5e36, b/399826566)
बाहरी योगदान
NavUriबनाने के लिए, नया कॉमन पार्सर फ़ंक्शन. धन्यवाद, कॉन्स्टेंटिन त्स्खोवरेबोव! (If0a6a)
वर्शन 2.9.0-alpha07
26 फ़रवरी, 2025
androidx.navigation:navigation-*:2.9.0-alpha07 रिलीज़ हो गया है. वर्शन 2.9.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
saveStateके लिए, नॉन-इंक्लूसिव पॉप का इस्तेमाल करने पर, सेव किया गया स्टेट नल हो जाता था. इससे, ऐप्लिकेशन को वापस लाने पर क्रैश होने की समस्या हो सकती थी. (I9f3e8, b/395091644) - नेविगेशन 2.8.8 से:
NavDeepLinkमैचिंग की समस्या ठीक कर दी गई है. इसमें यूआरआई, ऐक्शन, और माइम के आधार पर डीपलिंक और डीपलिंक अनुरोध का पूरी तरह से मेल खाना ज़रूरी है. अगर सिर्फ़ एक या दो फ़ील्ड मैच होते हैं, तो अब मैचिंग की अनुमति नहीं है. (I3b029, b/395712033) - Navigation 2.8.8: वाइल्डकार्ड पाथ वाले ऐसे रास्तों से जुड़ी गड़बड़ी को ठीक किया गया है जो जोड़े गए डीपलिंक से मेल नहीं खाते (I7ea92, b/389970341)
बाहरी योगदान
- नेविगेशन-कॉमन, नेविगेशन-रनटाइम, और नेविगेशन-कंपोज़ एपीआई को सामान्य प्लैटफ़ॉर्म पर एक्सट्रैक्ट करें. धन्यवाद, कॉन्स्टेंटिन त्सखोवरेबोव! (I1e626, Ica76f, Idf479)
मौजूदा समस्याएं
- b/395712033 को ठीक करने के लिए किए जा रहे काम की वजह से, डीपलिंक के लिए यह ज़रूरी है कि उनमें डीपलिंक के अनुरोध और/या
Intentके सभी फ़ील्ड मौजूद हों. डीप लिंक सिर्फ़ उन फ़ील्ड से मैच होने चाहिए जो उनमें मौजूद हैं. साथ ही, जो फ़ील्ड शामिल नहीं हैं उन्हें अनदेखा किया जाना चाहिए. इस समस्या को ठीक कर दिया गया है. यह b/399826566 के तहत, आने वाले वर्शन में उपलब्ध होगा.
वर्शन 2.9.0-alpha06
12 फ़रवरी, 2025
androidx.navigation:navigation-*:2.9.0-alpha06 रिलीज़ हो गया है. वर्शन 2.9.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन से जुड़े Safe Args ऐक्शन अब
@CheckResultएनोटेशन के साथ जनरेट किए जाते हैं, ताकि यह पक्का किया जा सके कि उनका इस्तेमाल किया जा रहा है. (I14d4c, b/356323084)
गड़बड़ियां ठीक की गईं
NavControllerमें मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें, backStack की स्थितियों को सूची में सेव किए जाने पर, उन्हें गलत तरीके से ऐरे में वापस लाने की कोशिश की जाती थी. (Idfb9b)- नेविगेशन
2.8.7से: नेविगेशन Safe Args अब कंपोज़ेबल डेस्टिनेशन के साथ काम करता है. (I35320, b/362791955)
वर्शन 2.9.0-alpha05
29 जनवरी, 2025
androidx.navigation:navigation-*:2.9.0-alpha05 रिलीज़ हो गया है. वर्शन 2.9.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose का इस्तेमाल करते समय, स्केल ऐनिमेशन में अचानक समस्या आने की वजह से हुई गड़बड़ी को ठीक किया गया है. (I480f4, b/353294030)
- नेविगेशन
2.8.6से: एक्सएमएल के ज़रिए दिए गएNavDestinationलेबल कोNavType.getके ज़रिए पार्स किया जाएगा, ताकि यह पक्का किया जा सके कि कस्टमNavTypeलॉजिक का पालन किया गया है. (I7ec2f, b/388100796) - नेविगेशन
2.8.6से:dataPatternकी मदद से किसी गतिविधि पर नेविगेट करते समय,ActivityNavigatorअब आर्ग्युमेंट की वैल्यू को आर्ग्युमेंट केNavTypeके साथ एन्कोड करने की कोशिश करेगा. (I16376, b/383616432) - नेविगेशन
2.8.5: हमने उस समस्या को ठीक कर दिया है जिसकी वजह से, नेविगेशन कंपोज़ का इस्तेमाल करते समय और उसी फ़्रेम में नेविगेट करने का अनुरोध करते समय, अचानक स्केल ऐनिमेशन शुरू हो जाता था जिसमें मौजूदा ऐनिमेशन खत्म हो रहा होता था. (I26cb1, b/353294030)
वर्शन 2.9.0-alpha04
11 दिसंबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha04 रिलीज़ हो गया है. वर्शन 2.9.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टाइप सेफ़ एपीआई, जिन्हें पहले सिर्फ़
reifiedतरीकों से ऐक्सेस किया जा सकता था. जैसे,composable<YourScreen>में अब नॉन-रीफ़ाइड वर्शन उपलब्ध हैं. ये सीधे तौर परKClassइंस्टेंस लेते हैं.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
नीचे दी गई टेबल में, रीफ़ाइड और KClass एपीआई दिए गए हैं.
| रीफ़ाइड | KClass |
|---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
एपीआई में हुए बदलाव
- टाइप की सुरक्षा के लिए, Kotlin के लिए खास तौर पर तैयार किया गया
NavGraph.setStartDestinationओवरलोड, Java सोर्स से छिपा होता है. (Ic640c, b/364634035)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.8.5: हमने एक ऐसी समस्या को ठीक किया है जिसमें बैक स्टैक को एक एंट्री तक कम करने पर,NavHost,PredictiveBackHandlerके अंदर एक अपवाद दिखा सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर किए जाते थे. (I1a429, b/375343407) - नेविगेशन
2.8.5: ग्राफ़ केstartDestinationको अपडेट करते समय,NavDestinationNullPointerExceptionकी समस्या ठीक की गई. (I99421, b/361560785)
बाहरी योगदान
- नेविगेशन
2.8.5से: नेविगेशन टाइप की सुरक्षा से जुड़ी जानकारी अबList<Enum>के साथ काम करती है. यह किसी रूट के लिए आर्ग्युमेंट टाइप के तौर पर काम करती है. इसके लिए, किसी कस्टमNavTypeकी ज़रूरत नहीं होती. धन्यवाद Csaba Kozák! (GH-725, b/375559962)
वर्शन 2.9.0-alpha03
13 नवंबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha03 रिलीज़ हो गया है. वर्शन 2.9.0-alpha03 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन टाइप की सुरक्षा, अब वैल्यू क्लास को रूट के तौर पर या रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की सुविधा देती है. (I9344a, b/374347483)
गड़बड़ियां ठीक की गईं
- हमने उस
ConcurrentModificationExceptionको ठीक किया है जो तब हो सकता है, जबNavBackStackEntryसे जुड़ाLifecycleObserver, होस्टLifecycleOwnerके लाइफ़साइकल की स्थिति बदलने पर बैक स्टैक में बदलाव को ट्रिगर करता है. जैसे, कंटेनिंग ऐक्टिविटी या फ़्रैगमेंट. (Ia9494)
वर्शन 2.9.0-alpha02
30 अक्टूबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha02 रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये बदलाव शामिल हैं.
बाहरी योगदान
NavController.handleDeepLink(request: NavDeepLinkRequest)का नया तरीका. धन्यवाद, कॉन्स्टेंटिन त्सखोवरेबोव! (I3e228)
वर्शन 2.9.0-alpha01
16 अक्टूबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha01 रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- कस्टम नेविगेटर अब अपने डेस्टिनेशन को
SupportingPaneइंटरफ़ेस के तौर पर मार्क कर सकते हैं. इससेNavControllerको पता चलता है कि इन डेस्टिनेशन को अन्य डेस्टिनेशन के साथ दिखाया जाएगा. इस इंटरफ़ेस का इस्तेमाल करके, एक साथ कई डेस्टिनेशनRESUMEDकिए जा सकते हैं. (Id5559) - नेविगेशन
2.8.3:navigation-common,navigation-runtime, औरnavigation-composeमॉड्यूल के लिए, नई लिंट जांचें जोड़ी गईं. इससे टाइप-सेफ़ ऐसे रास्तों की पहचान करने में मदद मिलेगी जिन्हें@Serializableके साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभीNavGraphBuilderऔरNavDeepLinkBuilderएक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - नेविगेशन
2.8.3:navigation-common,navigation-runtime, औरnavigation-composeमॉड्यूल के लिए, नए लिंट चेक जोड़े गए हैं. इससे Enum आर्ग्युमेंट के साथ टाइप-सेफ़ रास्तों की पहचान करने में मदद मिलती है. इन रास्तों को@Keepके साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभीNavGraphBuilderऔरNavDeepLinkBuilderएक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
व्यवहार में बदलाव
- पहले
DESTROYEDकिए गएNavControllerका इस्तेमाल करने पर, अबIllegalStateExceptionदिखेगा. (I520da, b/369616172)
गड़बड़ियां ठीक की गईं
- अपडेट एनम क्लास नहीं मिली अपवाद, ताकि अगर मिनीफ़ाइड बिल्ड में एनम क्लास मिट जाती है, तो
@Keepएनोटेशन का इस्तेमाल करने का सुझाव दिया जा सके. (I90e79, b/358137294)
मौजूदा समस्याएं
Navigation 2.8.*में जोड़े गए नए लिंट नियमों में एक समस्या है. इसकी वजह से, Android Gradle प्लगिन 8.4+ के साथ लिंट चलाने परObsolete custom lint checkगड़बड़ी होती है. (b/368070326, b/371463741)
वर्शन 2.8
वर्शन 2.8.9
12 मार्च, 2025
androidx.navigation:navigation-*:2.8.9 रिलीज़ हो गया है. वर्शन 2.8.9 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation 2.8.8 में मिली रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, डीप लिंक के अनुरोध या इंटेंट के सभी फ़ील्ड से पूरी तरह मैच होने पर ही, डीप लिंक को मैच माना जाता था. इस वजह से, ऐसे डीप लिंक काम नहीं कर रहे हैं जिनमें फ़ील्ड के कुछ हिस्से मैच होते हैं और अन्य फ़ील्ड मैच नहीं होते. (Ie5e36, b/399826566)
वर्शन 2.8.8
26 फ़रवरी, 2025
androidx.navigation:navigation-*:2.8.8 रिलीज़ हो गया है. वर्शन 2.8.8 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस बग को ठीक किया गया है जिसमें वाइल्डकार्ड पाथ वाले रूट, जोड़े गए डीपलिंक से मेल नहीं खाते थे. (I7ea92, b/389970341)
NavDeepLinkमैचिंग की समस्या ठीक कर दी गई है. इसमें यूआरआई, ऐक्शन, और माइम के आधार पर डीप लिंक और डीप लिंक के अनुरोध का पूरी तरह से मेल खाना ज़रूरी है. अगर सिर्फ़ एक या दो फ़ील्ड मैच होते हैं, तो अब मैचिंग की अनुमति नहीं है. (I3227f, b/395712033)
मौजूदा समस्याएं
- b/395712033 को ठीक करने के लिए किए जा रहे काम की वजह से, डीपलिंक के लिए यह ज़रूरी है कि उनमें डीपलिंक के अनुरोध और/या
Intentके सभी फ़ील्ड मौजूद हों. डीप लिंक सिर्फ़ उन फ़ील्ड से मैच होने चाहिए जो उनमें मौजूद हैं. साथ ही, जो फ़ील्ड शामिल नहीं हैं उन्हें अनदेखा किया जाना चाहिए. इस समस्या को ठीक कर दिया गया है. यह b/399826566 के तहत, आने वाले वर्शन में उपलब्ध होगा.
वर्शन 2.8.7
12 फ़रवरी, 2025
androidx.navigation:navigation-*:2.8.7 रिलीज़ हो गया है. वर्शन 2.8.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन Safe Args अब कंपोज़ेबल डेस्टिनेशन के साथ काम करते हैं. (I35320, b/362791955)
वर्शन 2.8.6
29 जनवरी, 2025
androidx.navigation:navigation-*:2.8.6 रिलीज़ हो गया है. वर्शन 2.8.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक्सएमएल के ज़रिए दिए गए
NavDestinationलेबल कोNavType.getके ज़रिए पार्स किया जाएगा. इससे यह पक्का किया जा सकेगा कि कस्टमNavTypeलॉजिक का पालन किया गया है. (Id366d, b/388100796) dataPatternकी मदद से गतिविधि पर जाने पर,ActivityNavigatorअब आर्ग्युमेंट की वैल्यू को आर्ग्युमेंट केNavTypeके साथ एन्कोड करने की कोशिश करेगा. (I1a71d, b/383616432)
वर्शन 2.8.5
11 दिसंबर, 2024
androidx.navigation:navigation-*:2.8.5 रिलीज़ हो गया है. वर्शन 2.8.5 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें बैक स्टैक को एक एंट्री पर पॉप डाउन करने पर,
NavHost,PredictiveBackHandlerमें अपवाद दिखा सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर होते थे. (I1a429, b/375343407) - ग्राफ़ के
startDestinationको अपडेट करते समय,NavDestinationNullPointerExceptionकी समस्या ठीक की गई. (I99421, b/361560785) - उस समस्या को ठीक कर दिया गया है जिसकी वजह से Navigation Compose का इस्तेमाल करते समय, अचानक स्केल ऐनिमेशन दिखता था. ऐसा तब होता था, जब मौजूदा ऐनिमेशन खत्म होने वाले फ़्रेम में ही नेविगेट करने के लिए कॉल किया जाता था. (I26cb1, b/353294030)
- हमने उस
ConcurrentModificationExceptionको ठीक किया है जो तब हो सकता है, जबNavBackStackEntryसे जुड़ा कोईLifecycleObserver, होस्टLifecycleOwnerके लाइफ़साइकल की स्थिति में बदलाव होने पर, बैक स्टैक में बदलाव को ट्रिगर करता है. जैसे, ऐक्टिविटी या फ़्रैगमेंट को शामिल करना. (Ia9494)
बाहरी योगदान
- नेविगेशन टाइप की सुरक्षा से जुड़ी जानकारी अब
List<Enum>के साथ काम करती है. इसे किसी भी कस्टमNavTypeकी ज़रूरत नहीं होती. धन्यवाद Csaba Kozák! (GH-725, b/375559962)
वर्शन 2.8.4
13 नवंबर, 2024
androidx.navigation:navigation-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन
2.9.0-alpha03से: नेविगेशन टाइप की सुरक्षा, अब वैल्यू क्लास को रूट के तौर पर या रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की सुविधा देती है (I9344a, b/374347483)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.9.0-alpha01से: पहले सेDESTROYEDकिए गएNavControllerका इस्तेमाल करने पर, अबIllegalStateExceptionदिखेगा. (I520da, b/369616172)
वर्शन 2.8.3
16 अक्टूबर, 2024
androidx.navigation:navigation-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-common,navigation-runtime, औरnavigation-composeमॉड्यूल के लिए नए लिंट चेक जोड़े गए हैं. इससे टाइप-सेफ़ रास्तों की पहचान करने में मदद मिलेगी. इन रास्तों को@Serializableके साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभीNavGraphBuilderऔरNavDeepLinkBuilderएक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)navigation-common,navigation-runtime, औरnavigation-composeमॉड्यूल के लिए, नई लिंट जांचें जोड़ी गई हैं. इससे Enum आर्ग्युमेंट वाले टाइप-सेफ़ रास्तों की पहचान करने में मदद मिलेगी. इन रास्तों को@Keepके साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभीNavGraphBuilderऔरNavDeepLinkBuilderएक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
Navigation 2.8.*में जोड़े गए नए लिंट नियमों की वजह से, Android Gradle प्लगिन 8.4 या इसके बाद के वर्शन के साथ लिंट चलाने पर,Obsolete custom lint checkगड़बड़ी होती थी. (I1be3d, b/368070326, b/371463741)
मौजूदा समस्याएं
- Lint 16 (AGP 8.7) या इसके बाद के वर्शन के साथ लिंट चलाने की कोशिश करते समय, नेविगेशन लिंट, कस्टम लिंट चेक से जुड़ी पुरानी गड़बड़ी दिखाएगा. (b/371926651)
वर्शन 2.8.2
2 अक्टूबर, 2024
androidx.navigation:navigation-*:2.8.2 रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन टाइप सेफ़्टी अब Serializable क्लास के साथ काम करती है. इनमें
Double,Double?,DoubleArray,DoubleArray?,List<Double>, औरList<Double>?शामिल हैं. इसके लिए, किसी कस्टमNavTypeकी ज़रूरत नहीं होती. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
गड़बड़ियां ठीक की गईं
- नेविगेशन के लिए गड़बड़ी के मैसेज को बेहतर बनाया गया है. अगर नेविगेशन, किसी रूट के आर्ग्युमेंट को
NavTypeपर मैप नहीं कर पाता है, तो गड़बड़ी के नए मैसेज में आर्ग्युमेंट का नाम, आर्ग्युमेंट का पूरी तरह क्वालिफ़ाइड नाम, और रूट का पूरी तरह क्वालिफ़ाइड नाम शामिल होगा. (Id8416, b/346264232)
वर्शन 2.8.1
18 सितंबर, 2024
androidx.navigation:navigation-*:2.8.1 रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.
नई सुविधाएं
- एक नया लिंट नियम जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि टाइप-सेफ़ एपीआई का इस्तेमाल करके
popBackStackकी कोशिश करते समय,popBackStackफ़ंक्शन का इस्तेमाल किया गया हो. यह फ़ंक्शन, रीफ़ाइड क्लास टाइप लेता है. (Ief161, b/358095343)
गड़बड़ियां ठीक की गईं
- नेविगेशन के लिए अब यह ज़रूरी है कि
NavGraphकेstartDestinationको पास किया गया रूट, सभी ज़रूरी आर्ग्युमेंट की वैल्यू शामिल करता हो. इसमें ऐसे आर्ग्युमेंट शामिल हैं जो नल नहीं हो सकते और जिनकी कोई डिफ़ॉल्ट वैल्यू नहीं होती. (I18e74, b/362594265) - Navigation safe args में, नॉन-नलेबल स्ट्रिंग के लिए सपोर्ट जोड़ा गया है. इससे "null" वैल्यू को पार्स किया जाएगा और बंडल में सेव किया जाएगा. यह मौजूदा व्यवहार से अलग है, जहां "null" वैल्यू को null ऑब्जेक्ट में पार्स किया जाता है. यह बदलाव सिर्फ़ नॉन-नलेबल स्ट्रिंग टाइप पर लागू होता है. शून्य हो सकने वाली स्ट्रिंग में कोई बदलाव नहीं होता. (I08b4a, b/348936238)
- अब
NavDestinationको डीपलिंक नहीं किया जा सकता. हालांकि, डेस्टिनेशन में साफ़ तौर पर जोड़े गए डीप लिंक के ज़रिए ऐसा किया जा सकता है. इसका यह भी मतलब है कि नेविगेट करने के लिए, सिर्फ़ उस फ़ंक्शन ओवरलोड का इस्तेमाल किया जा सकता है जो स्ट्रिंग रूट लेता है. इस अपडेट से, उस जोखिम की आशंका को ठीक किया गया है जिसकी वजह से किसी संभावित रूप से सुरक्षित डेस्टिनेशन से डीप लिंक करना मुमकिन हो पाता था. (Ie30e6)
डिपेंडेंसी अपडेट
- Navigation Safe Args अब Kotlin 2.X के बजाय Kotlin 1.9.24 पर निर्भर करता है. इससे यह पक्का होता है कि डेवलपर को अपडेट करने के लिए मजबूर न किया जाए. (a4129a)
- नेविगेशन कंपोज़ अब कंपोज़
1.7.2पर निर्भर करता है.
वर्शन 2.8.0
4 सितंबर, 2024
androidx.navigation:navigation-*:2.8.0 रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.
2.7.0 के बाद हुए अहम बदलाव
नेविगेशन Kotlin डीएसएल टाइप-सेफ़्टी
- नेविगेशन अब Kotlin DSL (Navigation Compose इसका इस्तेमाल करता है) के लिए टाइप-सेफ़्टी की सुविधा देता है. इसके लिए, Kotlin Serialization का इस्तेमाल किया जाता है. इससे, टाइप सेफ़ ऑब्जेक्ट और डेटा क्लास के ज़रिए, नेविगेशन ग्राफ़ में डेस्टिनेशन तय किए जा सकते हैं:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
ज़्यादा जानकारी के लिए, Navigation Compose meet Type Safety ब्लॉग पोस्ट देखें.
Navigation Compose Predictive Back
- Navigation Compose अब compose-animation के नए
SeekableTransitionStateएपीआई के ज़रिए, ऐप्लिकेशन में पीछे जाने पर झलक दिखाने की सुविधा देता है. इससे, ट्रांज़िशन को पसंद के मुताबिक बनाने की सुविधा के साथ, वापस जाने के जेस्चर का इस्तेमाल करके पिछले डेस्टिनेशन को देखा जा सकता है. इसके बाद, जेस्चर पूरा करके लेन-देन को पूरा किया जा सकता है या रद्द किया जा सकता है.
Navigation Fragment Composable
- एक नया
navigation-fragment-composeआर्टफ़ैक्ट जोड़ा गया है. इसमेंNavHostFragmentके लिएComposableNavHostFragmentविकल्प शामिल है. इसकी मदद से, नेविगेशन एक्सएमएल फ़ाइलों में कंपोज़ेबल डेस्टिनेशन जोड़े जा सकते हैं. हरcomposableडेस्टिनेशन को टॉप-लेवल, बिना किसी आर्ग्युमेंट वाली@Composableविधि के तौर पर दिखाया जाना चाहिए. इसके पूरी तरह क्वालिफ़ाइड नाम का इस्तेमाल, हर डेस्टिनेशन परandroid:nameएट्रिब्यूट के तौर पर किया जाता है. इन डेस्टिनेशन में से किसी एक पर नेविगेट करते समय, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बनाया जाता है.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
अन्य बदलाव
- Navigation Compose अब Compose 1.7.0 पर निर्भर करता है.
- नेविगेशन में अब एक नई
CollectionNavType<T>क्लास उपलब्ध है. यहNavType<T>की सबक्लास है. इसका इस्तेमाल कलेक्शन पर आधारित आर्ग्युमेंट के लिए किया जाता है. जैसे, सूची, ऐरे, मैप. डिफ़ॉल्टNavTypeऐरे (IntArrayType,LongArrayType,FloatArrayType,BoolArrayType, औरStringArrayType) अब इस नई क्लास से इनहेरिट होते हैं. NavTypeमें अब Int, String, Boolean, Float, और Long की सूचियों के लिए पहले से मौजूद सहायता उपलब्ध है.
वर्शन 2.8.0-rc01
21 अगस्त, 2024
androidx.navigation:navigation-*:2.8.0-rc01 रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- टाइप सेफ़ आर्ग्युमेंट के तौर पर टॉप लेवल की Enum क्लास पास करने पर, नेविगेशन क्रैश होने की समस्या ठीक की गई. (I0ba76, b/358137294)
- Navigation 2.8 अब एसडीके 34 के साथ सही तरीके से काम करता है. साथ ही, AndroidX की बाकी लाइब्रेरी के साथ 2.9 वर्शन रिलीज़ होने तक, एसडीके 35 पर स्विच नहीं करेगा. (b/358798728)
वर्शन 2.8.0-beta07
7 अगस्त, 2024
androidx.navigation:navigation-*:2.8.0-beta07 रिलीज़ हो गया है. वर्शन 2.8.0-beta07 में ये बदलाव शामिल हैं.
मौजूदा समस्याएं
- b/358137294 की वजह से, सिर्फ़ किसी दूसरी क्लास में नेस्ट किए गए Enums को बॉक्स से बाहर इस्तेमाल किया जा सकता है. अगले वर्शन में, टॉप लेवल एनम के लिए सहायता उपलब्ध होगी.
गड़बड़ियां ठीक की गईं
- डुप्लीकेट या शेयर की गई मंज़िलों पर नेविगेट करते समय, नेविगेशन की सुविधा, ग्राफ़ में मौजूद मौजूदा जगह से सबसे मिलती-जुलती मंज़िल को प्राथमिकता देगी. (Ic89a4, b/352006850)
- सेफ़ आर्ग्युमेंट में नेविगेशन के लिए, अब एक नया
NavType.EnumTypeजोड़ा गया है. इसका मतलब है कि अबEnumटाइप के लिए, कस्टमNavTypeकी ज़रूरत नहीं है. ध्यान दें किEnumकाSerialName, डिफ़ॉल्ट पूरी तरह क्वालिफ़ाइड नाम होना चाहिए. (I66d22, b/346475493) - Safe Args में नेविगेशन के लिए, नल वैल्यू वाले आर्ग्युमेंट टाइप के लिए पहले से मौजूद सहायता जोड़ी गई है. इनमें
Int?,Long?,Float?,Boolean?, औरEnum<*>?शामिल हैं. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - अगर
NavGraphको पास किया गयाstartDestinationरूट,startDestination.routeके बराबर है, तोNavGraphकाstartDestinationअब डिफ़ॉल्ट आर्ग्युमेंट वैल्यू का इस्तेमाल करेगा. (I13762, b/354046047)
वर्शन 2.8.0-beta06
24 जुलाई, 2024
androidx.navigation:navigation-*:2.8.0-beta06 रिलीज़ हो गया है. वर्शन 2.8.0-beta06 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें
WrongStartDestinationTypeलिंट जांच, पास किए गए क्लास टाइप पर कंपैनियन ऑब्जेक्ट की जांच नहीं करती थी. इस वजह से, लिंट गड़बड़ी का पता नहीं लगा पाता था. (I92b09)
वर्शन 2.8.0-beta05
10 जुलाई, 2024
androidx.navigation:navigation-*:2.8.0-beta05 रिलीज़ हो गया है. वर्शन 2.8.0-beta05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए
NavGraphsएक हीstartDestinationरूट शेयर करने पर,singleTopनेविगेशन क्रैश होने की समस्या ठीक की गई. (I17b94, b/294408596)
वर्शन 2.8.0-beta04
26 जून, 2024
androidx.navigation:navigation-*:2.8.0-beta04 रिलीज़ हो गया है. वर्शन 2.8.0-beta04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन अब पाथ आर्ग्युमेंट में खाली स्ट्रिंग के साथ नेविगेट करने की सुविधा देता है. (Ic5dbd, b/339481310)
@Serializable(with =...)के ज़रिए क्लास फ़ील्ड पर सीधे तौर पर एलान किए गए कस्टम सीरियलाइज़र के लिए, गड़बड़ी के मैसेज को बेहतर बनाया गया है. इससे यह साफ़ तौर पर बताया जा सकेगा कि फ़िलहाल यह सुविधा काम नहीं करती. (I052b0, b/341319151)SavedStateHandleFactorytest api का इस्तेमाल अब Android के अलावा अन्य टेस्ट में भी किया जा सकता है. हालांकि, इसके लिए Robolectric को Bundles के साथ आर्ग्युमेंट पार्सिंग की सुविधा देनी होगी. (I76cdc, b/340966212)- Compose में टाइप-सेफ़ नेविगेशन का इस्तेमाल करते समय, प्रोसेस बंद होने के बाद ऐप्लिकेशन को फिर से शुरू करने पर, स्थिति को वापस लाने के दौरान क्रैश होने की समस्या ठीक की गई. (Ia8f38, b/341801005)
- Navigation Compose में एक समस्या ठीक की गई है. इसमें, अनुमानित बैक जेस्चर को रद्द करने के बाद, उपयोगकर्ता जिस
NavBackStackEntryपर वापस जाता है वह कभी भीRESUMEDलाइफ़साइकल की स्थिति में वापस नहीं आता है. इससे यह भी पक्का होता है कि फ़्लिंग करने के बाद, डेस्टिनेशन वापस अपनी जगह पर तुरंत न आ जाए, बल्कि सही तरीके से ऐनिमेशन के साथ वापस आए. (I97a0c, b/346608857) - Navigation Compose के साथ पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर का इस्तेमाल करने पर, पॉप किए जा रहे डेस्टिनेशन का z-ऑर्डर अब सही होगा. साथ ही, यह आने वाले डेस्टिनेशन के ऊपर सही तरीके से ऐनिमेशन करेगा. (I2077b, b/345993681)
वर्शन 2.8.0-beta03
12 जून, 2024
androidx.navigation:navigation-*:2.8.0-beta03 रिलीज़ हो गया है. वर्शन 2.8.0-beta03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
CollectionNavTypeमें,emptyCollection()का नया तरीका है. इसे तब बदलें, जब आर्ग्युमेंट के तौर पर कोई खाली कलेक्शन पास किया गया हो. (Ie4d84, b/341723133)
गड़बड़ियां ठीक की गईं
NavType.serializeAsValueऔरserializeAsValuesके बारे में दस्तावेज़ जोड़ा गया है, ताकि यह हाइलाइट किया जा सके कि फ़ाइनल आउटपुट को यूआरआई में कोड किया जाना चाहिए. (Ida6bd, b/344943214)- शून्य
CollectionNavTypeआर्ग्युमेंट के साथtoRoute<T>को कॉल करने पर, क्रैश होने की समस्या ठीक की गई. शून्यCollectionNavTypeके साथ नेविगेट करने पर, आउटपुट आर्ग्युमेंट, आपकी सीरियलाइज़ेबल क्लास पर घोषित की गई डिफ़ॉल्ट वैल्यू होगी. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो यहemptyCollection()की रिटर्न वैल्यू होगी. (I84158, Id630f, b/342672856)
वर्शन 2.8.0-beta02
29 मई, 2024
androidx.navigation:navigation-*:2.8.0-beta02 रिलीज़ हो गया है. वर्शन 2.8.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- शून्य हो सकने वाले कस्टम
NavTypeके साथNavBackStackEntry.toRouteका इस्तेमाल करते समय होने वालीClassCastExceptionक्रैश की समस्या ठीक की गई. (I1c29b, b/342239473) - नेविगेशन बैक स्टैक की स्थिति को वापस लाने से जुड़ी समस्याओं को ठीक किया गया है. ये समस्याएं तब होती थीं, जब किसी ऐसी बैक स्टैक एंट्री को वापस लाने की कोशिश की जाती थी जिसे मौजूदा डेस्टिनेशन से आईडी के ज़रिए ऐक्सेस नहीं किया जा सकता. रास्तों को आईडी के ज़रिए सेव किया जाता है. इसलिए, रास्तों की मदद से बनाए गए डेस्टिनेशन पर भी इसका असर पड़ा. इससे
clearBackStack()को कॉल करने पर होने वाले क्रैश की समस्या भी ठीक हो जाती है. इस समस्या की वजह भी यही थी. (I423c3, b/339908057)
वर्शन 2.8.0-beta01
14 मई, 2024
androidx.navigation:navigation-*:2.8.0-beta01 रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle.toRoute()अब कस्टम आर्ग्युमेंट टाइप के लिए,typeMapपैरामीटर लेता है. (Ie39fb, b/339026523)navigation-testingमें एक टेस्ट एपीआई जोड़ा गया है, ताकि Kotlin Serializable ऑब्जेक्ट सेSavedStateHandleबनाया जा सके. (Id4867, b/339080702)
गड़बड़ियां ठीक की गईं
- Navigation Kotlin DSL फ़ंक्शन के लिए, पैरामीटर के दस्तावेज़ जोड़े गए हैं. (I26a36)
वर्शन 2.8.0-alpha08
1 मई, 2024
androidx.navigation:navigation-*:2.8.0-alpha08 रिलीज़ हो गया है. वर्शन 2.8.0-alpha08 में ये बदलाव शामिल हैं.
Navigation Compose में Safe Args का इस्तेमाल करना
- Kotlin Serialization पर आधारित Navigation Kotlin DSL और Navigation Compose के लिए, कंपाइल टाइम टाइप की सुरक्षा से जुड़ी सुविधा को सपोर्ट करने का काम पूरा हो गया है. साथ ही, पहले एक्सपेरिमेंट के तौर पर उपलब्ध कराए गए एपीआई अब स्टेबल हो गए हैं. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
यह सुविधा, Kotlin Serialization का इस्तेमाल करती है. इससे, टाइप सेफ़ ऑब्जेक्ट और डेटा क्लास के ज़रिए, नेविगेशन ग्राफ़ में डेस्टिनेशन तय किए जा सकते हैं:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
ज़्यादा जानकारी के लिए, Navigation Compose meet Type Safety ब्लॉग पोस्ट देखें.
नई सुविधाएं
navigation-fragment-composeआर्टफ़ैक्ट अबComposableFragmentके अंदर कंपोज़ेबल तरीकों के लिए,LocalFragmentकंपोज़िशन उपलब्ध कराता है. (If35e5)NavTypeमें अब Int, String, Boolean, Float, और Long की सूचियों के लिए पहले से मौजूद सहायता उपलब्ध है. (I4b6dd, Ia914c, b/188693139)
वर्शन 2.8.0-alpha07
17 अप्रैल, 2024
androidx.navigation:navigation-*:2.8.0-alpha07 रिलीज़ हो गया है. वर्शन 2.8.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
यह एक नया
navigation-fragment-composeआर्टफ़ैक्ट जोड़ता है. इसमेंNavHostFragmentकाComposableNavHostFragmentविकल्प शामिल है. इसकी मदद से, नेविगेशन की एक्सएमएल फ़ाइलों मेंcomposableडेस्टिनेशन जोड़े जा सकते हैं. हरcomposableडेस्टिनेशन को टॉप-लेवल, बिना आर्ग्युमेंट वाले@Composableतरीके के तौर पर दिखाया जाना चाहिए. इसके पूरी तरह क्वालिफ़ाइड नाम का इस्तेमाल, हर डेस्टिनेशन परandroid:nameएट्रिब्यूट के तौर पर किया जाता है. इन डेस्टिनेशन में से किसी एक पर नेविगेट करते समय, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बनाया जाता है. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
एपीआई में हुए बदलाव
- Kotlin Serialization पर आधारित अप्रोच का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता जारी रखी गई. इन एपीआई को अभी पूरा नहीं किया गया है और इन्हें
ExperimentalSafeArgsApiएनोटेशन के साथ मार्क किया गया है. आने वाले समय में, जब पूरा एपीआई रिलीज़ हो जाएगा, तब इस एनोटेशन को हटा दिया जाएगा. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
वर्शन 2.8.0-alpha06
3 अप्रैल, 2024
androidx.navigation:navigation-*:2.8.0-alpha06 रिलीज़ हो गया है. वर्शन 2.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin Serialization पर आधारित अप्रोच का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता उपलब्ध कराई गई है. इन एपीआई को अभी पूरा नहीं किया गया है और इन्हें
ExperimentalSafeArgsApiएनोटेशन के साथ मार्क किया गया है. आने वाले समय में, जब पूरा एपीआई रिलीज़ हो जाएगा, तब इस एनोटेशन को हटा दिया जाएगा. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
गड़बड़ियां ठीक की गईं
NavHostअब contentAlignment आर्ग्युमेंट के लिए,Alignment.TopStartका इस्तेमाल डिफ़ॉल्ट तौर पर करता है. इससे यहAnimatedContentके डिफ़ॉल्ट के मुताबिक हो जाता है. साथ ही, इससे सेंटर ट्रांज़िशन से अनचाहे स्केल के कुछ उदाहरण ठीक हो जाते हैं. (I09e72, b/330111602)- Navigation Compose का इस्तेमाल करते समय, अनुमानित बैक जेस्चर को फ़्लिक करने पर,
NavHostअब कस्टम ट्रांज़िशन को तुरंत पूरा करने के बजाय सही तरीके से पूरा करेगा. (I99017, b/327292110)
वर्शन 2.8.0-alpha05
20 मार्च, 2024
androidx.navigation:navigation-*:2.8.0-alpha05 रिलीज़ हो गया है. वर्शन 2.8.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
defaultValueपर भरोसा किए बिना,startDestinationके रूट में सीधेNavGraphकेstartDestinationको आर्ग्युमेंट पास किए जा सकते हैं. यह नेस्ट किए गएNavGraphstartDestinationsपर भी लागू होता है. (I0e0b5, b/109505019, b/188693139)
एपीआई में हुए बदलाव
- नया ऐब्स्ट्रैक्ट
CollectionNavType<T>क्लास जोड़ा गया है. यहNavType<T>की सबक्लास है. इसका इस्तेमाल कलेक्शन पर आधारित आर्ग्युमेंट के लिए किया जाता है. जैसे, सूची, ऐरे, मैप. (Ic6d63, b/188693139) - डिफ़ॉल्ट
NavTypeऐरे (IntArrayType,LongArrayType,FloatArrayType,BoolArrayType, औरStringArrayType) अबCollectionNavTypeटाइप (Idcf79, b/188693139) के हैं NavTypeअब एक नया ओपनvalueEqualsएपीआई उपलब्ध कराता है. इससे यह तय किया जाता है कि एक ही तरह की दो वैल्यू एक-दूसरे के बराबर हैं या नहीं. (I6cb97, b/327229511)
गड़बड़ियां ठीक की गईं
- डीप लिंक में क्वेरी पैरामीटर अब स्ट्रिंग पर आधारित
NavTypesके लिए, मान्य वैल्यू के तौर पर आर्ग्युमेंट के नाम के आस-पास कर्ली ब्रेसिज़ (यानी कि{argName}) के फ़ॉर्म में वैल्यू इस्तेमाल करने की अनुमति देते हैं. इससे उस समस्या को ठीक किया जाता है जिसमें इस तरह की वैल्यू को सभी टाइप के लिए अमान्य माना जाता था. (I18302, b/327274038) navigateयाpopBackStackजैसे रास्तों के साथ काम करने वालेNavControllerफ़ंक्शन, अब ArrayNavTypesके आर्ग्युमेंट से भरे गए रास्तों से सही तरीके से मैच कर सकते हैं. (Iea805, b/327229511)
वर्शन 2.8.0-alpha04
6 मार्च, 2024
androidx.navigation:navigation-*:2.8.0-alpha04 रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब नेविगेशन कंपोज़ में ट्रांज़िशन के लिए
SizeTranformतय किया जा सकता है. इसके लिए, उन्हेंcomposableऔर/याnavigationफ़ंक्शन के इनिशियलाइज़ेशन के हिस्से के तौर पर तय करें. (I91062, b/296912651)
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें Compose Navigation में मौजूद
NavHost, बिना किसी जेस्चर के सिस्टम बैक का इस्तेमाल करने पर ट्रांज़िशन को सही तरीके से नहीं दिखा पा रहा था. (Iceeae, b/325998468)
वर्शन 2.8.0-alpha03
21 फ़रवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha03 रिलीज़ हो गया है. वर्शन 2.8.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavBackStackEntry.savedStateHandleको अब@MainThreadके तौर पर मार्क किया गया है, क्योंकि यह ऐसे कोड का इस्तेमाल करता है जिसे मुख्य थ्रेड पर होना ज़रूरी है. (Ibb988, b/299523245)
गड़बड़ियां ठीक की गईं
- नेविगेशन में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
NavGraphViewModelsDESTROYEDबहुत जल्द हो जाते थे. ऐसा इसलिए होता था, क्योंकि इससे जुड़ी एंट्री काViewModelसेव किए गए स्टेटस का हिस्सा नहीं था. (Ib6bb7, b/317581849)
डिपेंडेंसी अपडेट
- Navigation Compose अब Compose 1.7.0-alpha03 पर निर्भर करता है.
वर्शन 2.8.0-alpha02
7 फ़रवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha02 रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Navigation Compose अब compose-animation के नए
SeekableTransitionStateएपीआई के ज़रिए, ऐप्लिकेशन में पीछे जाने पर झलक दिखाने की सुविधा देता है. इससे, ट्रांज़िशन को पसंद के मुताबिक बनाने की सुविधा के साथ, वापस जाने के जेस्चर का इस्तेमाल करके पिछले डेस्टिनेशन को देखा जा सकता है. इसके बाद, जेस्चर पूरा करके लेन-देन को पूरा किया जा सकता है या रद्द किया जा सकता है. (I8b8e9)
वर्शन 2.8.0-alpha01
24 जनवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha01 रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BackStackStateलीक होने की समस्या ठीक की गई है. इस समस्या में, किसी डेस्टिनेशन पर कईsaveStateकॉल करने पर, कई स्थितियां सेव हो जाती थीं. हालांकि, सिर्फ़ पहली स्थिति को वापस लाया जा सकता था. (I598b0, b/309559751)- ऐप्लिकेशन बार के टाइटल में जानकारी भरने के लिए
NavigationUIहेल्पर का इस्तेमाल करने पर, स्ट्रिंग के अलावा अन्य आर्ग्युमेंट को ठीक से नहीं दिखाने की समस्या को ठीक किया गया है. (#636, b/316676794)
डिपेंडेंसी अपडेट
- नेविगेशन कंपोज़ अब कंपोज़
1.7.0-alpha01पर निर्भर करता है. इससे उस समस्या को ठीक किया जा सकता है जिसकी वजह से स्केल ऐनिमेशन में गड़बड़ी हो सकती है. (b/297258205)
बाहरी योगदान
- ऐप्लिकेशन बार के टाइटल में जानकारी भरने के लिए,
NavigationUIहेल्पर का इस्तेमाल करते समय, स्ट्रिंग के अलावा अन्य आर्ग्युमेंट के लिए डिसप्ले से जुड़ी समस्या को ठीक करने के लिए, SimonMarquis का धन्यवाद.
वर्शन 2.7.7
वर्शन 2.7.7
7 फ़रवरी, 2024
androidx.navigation:navigation-*:2.7.7 रिलीज़ हो गया है. वर्शन 2.7.7 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.8.0-alpha01से बैकपोर्ट किया गया:BackStackStateलीक की समस्या ठीक की गई. इस समस्या में, एक हीNavBackStackEntryपर कईsaveState()कॉल करने पर कई स्थितियां सेव हो जाती थीं. हालांकि, सिर्फ़ पहली सेव की गई स्थिति को वापस लाया जा सकता था. (I598b0, b/309559751) - नेविगेशन
2.8.0-alpha01से बैकपोर्ट किया गया: उस समस्या को ठीक किया गया है जिसमें ऐप्लिकेशन बार के टाइटल को भरने के लिएNavigationUIहेल्पर का इस्तेमाल करने पर, स्ट्रिंग के अलावा अन्य आर्ग्युमेंट सही तरीके से नहीं दिखते थे. (#636, b/316676794)
बाहरी योगदान
- ऐप्लिकेशन बार के टाइटल में जानकारी भरने के लिए,
NavigationUIहेल्पर का इस्तेमाल करते समय, स्ट्रिंग के अलावा अन्य आर्ग्युमेंट के लिए डिसप्ले से जुड़ी समस्या को ठीक करने के लिए, SimonMarquis का धन्यवाद.
वर्शन 2.7.6
वर्शन 2.7.6
13 दिसंबर, 2023
androidx.navigation:navigation-*:2.7.6 रिलीज़ हो गया है. वर्शन 2.7.6 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavGraphequals()फ़ंक्शन अब सिर्फ़ कॉल करने वाले ग्राफ़ के बजाय, दूसरे ग्राफ़ के नोड को भी सही तरीके से ध्यान में रखता है. इससे यह पक्का किया जा सकेगा कि अलग-अलग आईडी वाले नोड वाले ग्राफ़ को अब एक जैसा नहीं माना जाएगा (I401cb, b/311414915)
वर्शन 2.7.5
वर्शन 2.7.5
1 नवंबर, 2023
androidx.navigation:navigation-*:2.7.5 रिलीज़ हो गया है. वर्शन 2.7.5 में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
- दो ग्राफ़ की तुलना करने की परफ़ॉर्मेंस को बेहतर बनाया गया है. इसमें समय और असाइनमेंट की संख्या, दोनों शामिल हैं. इसका मतलब है कि
setGraphजैसे कॉल, नए ग्राफ़ की तुलना मौजूदा ग्राफ़ से बहुत तेज़ी से करते हैं. साथ ही, इससे कम फ़्रेम स्किप होते हैं. इस सुधार के लिए, हम Michał Z को धन्यवाद देते हैं. उन्होंने इस समस्या का बारीकी से विश्लेषण किया. (I6ad62) NavHostअब अपडेट किए गए स्टेटस को पढ़ने के लिए, दूसरे पास का इंतज़ार करने के बजाय, पहले कंपोज़िशन पास पर ही शुरुआती डेस्टिनेशन को रेंडर करेगा. (I439a7, b/304852206)
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें एक ही ग्राफ़ के लिए
setGraphको एक से ज़्यादा बार कॉल करने पर, बैक स्टैक पॉप हो जाता था. ऐसा सिर्फ़ तब होता था, जब आपके ग्राफ़ में कोई ऐसा डेस्टिनेशन होता था जिसमें दो डेस्टिनेशन को लिंक करने वाली कार्रवाई शामिल होती थी. (Ieaed7) - जिन डायलॉग बॉक्स पर तेज़ी से नेविगेट किया गया था और उन्हें बंद कर दिया गया था वे अब
NavController.visibleEntriesकी सूची में नहीं दिखेंगे. (I67586, b/287969970) - जब किसी एंट्री को पॉप किया जाता है और उसके बाद कॉन्फ़िगरेशन में बदलाव किया जाता है, तो अगर
saveStateकी वैल्यू फ़ॉल्स है, तो एंट्री काViewModelअब ठीक से मिट जाएगा. (Idf242, b/298164648) - उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने या
setGraphको कॉल करने से पहले, बैक स्टैक पूरी तरह से खाली होने पर,NavControllerएक ही डीप लिंक को एक से ज़्यादा बार हैंडल कर सकता था. ऐसा सिर्फ़ तब होता था, जब आने वाले इंटेंट मेंFLAG_ACTIVITY_NEW_TASKफ़्लैग सेट होता था. (I73c7f)
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट के साथ नेविगेशन की सुविधा अब Fragment 1.6.2 पर निर्भर करती है. इससे उस समस्या को ठीक किया गया है जिसमें
clearBackStackको कॉल करने पर, नेस्ट किए गए फ़्रैगमेंट केViewModelइंस्टेंस क्लियर नहीं होते थे.
वर्शन 2.7.4
वर्शन 2.7.4
4 अक्टूबर, 2023
androidx.navigation:navigation-*:2.7.4 रिलीज़ हो गया है. वर्शन 2.7.4 में ये बदलाव शामिल हैं.
नई सुविधाएं
popUpToके लिए सहायता जोड़ी गई है, ताकि आर्ग्युमेंट के साथ रास्तों का इस्तेमाल किया जा सके. इससे, उन आर्ग्युमेंट का इस्तेमाल करने वाली किसी खास एंट्री पर वापस जाने की अनुमति मिलती है. यह सुविधा,popBackStackमें उपलब्ध सुविधा से मिलती-जुलती है. (I731f4, b/299255572)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
popUpToकी मदद से नेविगेट करने के दौरान, किसी दूसरे नेविगेट को इंटरप्ट करने परFragmentNavigatorक्रैश हो जाता था. (I3c848, b/301887045) - उस समस्या को ठीक किया गया है जिसमें सिस्टम के बैक बटन को दबाने पर,
currentDestinationको सही तरीके से अपडेट नहीं किया जाता था, ताकि वह दिखाए गए फ़्रैगमेंट से मैच हो सके. (Id0d6c, b/289877514) - अब ऊपर मौजूद डायलॉग को खारिज करने पर,
DialogFragmentलाइफ़साइकल सही तरीके सेRESUMEDस्टेट में चला जाएगा. (I88f0d, b/301811387)
वर्शन 2.7.3
वर्शन 2.7.3
20 सितंबर, 2023
androidx.navigation:navigation-*:2.7.3 रिलीज़ हो गया है. वर्शन 2.7.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Fragments के साथ नेविगेशन में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से
visibleEntriesसूची में गलत एंट्री शामिल हो जाती थीं. (I5caa9, b/288520638) - उस समस्या को ठीक किया गया है जिसकी वजह से फ़्लोटिंग विंडो डेस्टिनेशन (जैसे,
Dialogs,Bottomsheetsवगैरह) को कभी भीRESUMEDलाइफ़साइकल कॉलबैक नहीं मिलता था. (I3b866, b/287505132)
वर्शन 2.7.2
वर्शन 2.7.2
6 सितंबर, 2023
androidx.navigation:navigation-*:2.7.2 रिलीज़ हो गया है. वर्शन 2.7.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब नेविगेशन, लाइफ़साइकल
2.6.2पर निर्भर करता है. इससेrememberSaveableऔर Navigation Compose केNavHostके बीच इंटरैक्शन की समस्या ठीक हो जाती है. इस वजह से, प्रोसेस बंद होने और फिर से शुरू होने के बाद, डेस्टिनेशन कीrememberSaveableस्थिति औरViewModelके मालिकाना हक वालेSavedStateHandleइंस्टेंस ठीक से रीस्टोर नहीं हो पाते थे. (b/298059596, b/289436035) - Navigation Compose में एक साथ कई डायलॉग दिखाने के दौरान होने वाली समस्या को ठीक किया गया है. इस समस्या में, आंशिक रूप से छिपे हुए डायलॉग (जैसे, सबसे ऊपर वाला डायलॉग नहीं)
STARTEDस्थिति के बजायCREATEDलाइफ़साइकल की स्थिति में होते थे. (aosp/2728520, b/289257213) - Navigation Compose में एक साथ कई डायलॉग दिखाने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, सबसे ऊपर वाले डायलॉग को खारिज करने पर, नया सबसे ऊपर वाला डायलॉग
RESUMEDमें सही तरीके से जाने के बजाय,STARTEDलाइफ़साइकल की स्थिति में अटक जाता था. (aosp/2629401, b/286371387) - अगर Navigation Safe Args को असल में लागू नहीं किया जा रहा है, तो अब यह टास्क को तुरंत इंस्टैंशिएट नहीं करेगा. (I0e385, b/260322841)
डिपेंडेंसी अपडेट
- नेविगेशन कंपोज़ अब कंपोज़ 1.5.1 पर निर्भर करता है.
वर्शन 2.7.1
वर्शन 2.7.1
23 अगस्त, 2023
androidx.navigation:navigation-*:2.7.1 रिलीज़ हो गया है. वर्शन 2.7.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose में नेविगेशन से जुड़ी समस्या ठीक की गई है. इस समस्या में,
Scaffoldका इस्तेमाल करते समय,Lifecycle.State.DESTROYEDViewModelको ऐक्सेस करने की कोशिश करने पर गड़बड़ी हो सकती थी. (I1dc11, b/268422136)
वर्शन 2.7.0
वर्शन 2.7.0
9 अगस्त, 2023
androidx.navigation:navigation-*:2.7.0 रिलीज़ हो गया है. वर्शन 2.7.0 में ये बदलाव शामिल हैं.
2.6.0 के बाद हुए अहम बदलाव
Accompanist से मिले ऐनिमेशन
AnimatedContent अब स्टेबल हो गया है. इसलिए, हम नेविगेशन के साथ चलने वाले ऐनिमेशन के कोड को वापस Navigation Compose में ले जा सके.
इसका मतलब है कि AnimatedNavHost में कस्टम ट्रांज़िशन सेट करने की सुविधा, NavHost में भी उपलब्ध है.
Accompanist Navigation Animation में कोई और बदलाव नहीं किया जाएगा. हम इसे जल्द ही बंद कर देंगे. साथ ही, हम Navigation Compose पर वापस माइग्रेट करने के तरीके के बारे में दिशा-निर्देश भी देंगे. हालांकि, अगर पहले से ही Accompanist के सबसे नए ऐल्फ़ा वर्शन (0.31.2-alpha) का इस्तेमाल किया जा रहा है, तो आपको माइग्रेशन गाइड के उलट काम करना होगा. साथ ही, एपीआई में कोई और बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)
गड़बड़ियां ठीक की गईं
- Navigation Compose में मौजूद NavHost अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. भले ही, ऐक्टिविटी को STOP किया गया हो और फिर से शुरू किया गया हो. (Icb6de, b/279118447)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब Compose
1.5.0पर निर्भर करता है, जो1.1.0से अपग्रेड किया गया है.
वर्शन 2.7.0-rc01
26 जुलाई, 2023
androidx.navigation:navigation-*:2.7.0-rc01 रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
EnterTransitionऔरExitTransitionलैम्डा,NavHostके हिस्से के तौर पर बनाए जाते थे. ऐसा हो सकता था किNavHostको कंपोज़िशन से हटाने के बाद भी, ये लैम्डा मेमोरी में बने रहते थे. (I893d0)
मौजूदा समस्याएं
- Navigation 2.6.x में एक समस्या है. पॉपअप करने के लिए popUpTo का इस्तेमाल करते समय,
IllegalArgumentExceptionहो सकता है. ऐसा हो सकता है कि अपने ग्राफ़ को फिर से व्यवस्थित करके, इस अपवाद से बचा जा सके. इसके लिए, यहां दिए गए सुझावों को अपनाएं. (b/287133013)
वर्शन 2.7.0-beta02
28 जून, 2023
androidx.navigation:navigation-*:2.7.0-beta02 रिलीज़ हो गया है. वर्शन 2.7.0-beta02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose में अब कस्टम ट्रांज़िशन के लिए सही z-ऑर्डर है. ये ट्रांज़िशन,
popUpToविकल्प के साथ नेविगेट करने की सुविधा का इस्तेमाल करते हैं.(/Ib1c3a, b/285153947)
वर्शन 2.7.0-beta01
7 जून, 2023
androidx.navigation:navigation-*:2.7.0-beta01 रिलीज़ हो गया है. वर्शन 2.7.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavHostअब Navigation Compose में, सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. ऐसा तब भी होता है, जबActivityकोSTOPPEDऔरRESUMEDकर दिया गया हो. (Icb6de, b/279118447)
वर्शन 2.7.0-alpha01
24 मई, 2023
androidx.navigation:navigation-*:2.7.0-alpha01 रिलीज़ हो गया है. वर्शन 2.7.0-alpha01 में ये बदलाव शामिल हैं.
Accompanist से मिले ऐनिमेशन
AnimatedContent अब स्टेबल हो गया है. इसलिए, हम नेविगेशन के साथ चलने वाले ऐनिमेशन के कोड को वापस Navigation Compose में ले जा सके.
इसका मतलब है कि AnimatedNavHost में कस्टम ट्रांज़िशन सेट करने की सुविधा, NavHost में भी उपलब्ध है.
Accompanist Navigation Animation में कोई और बदलाव नहीं किया जाएगा. हम इसे जल्द ही बंद कर देंगे. साथ ही, हम Navigation Compose पर वापस माइग्रेट करने के तरीके के बारे में दिशा-निर्देश भी देंगे. हालांकि, अगर पहले से ही Accompanist के सबसे नए ऐल्फ़ा वर्शन (0.31.2-alpha) का इस्तेमाल किया जा रहा है, तो आपको माइग्रेशन गाइड के उलट काम करना होगा. साथ ही, एपीआई में कोई और बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.6.0-rc02: फ़्रैगमेंट में नेविगेशन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में,popUpToका इस्तेमाल करके नेविगेट करने पर, सिस्टम बैक काम करना बंद कर देता था. ऐसा तब होता था, जब बैक स्टैक से किसी फ़्रैगमेंट को उसकी व्यू को फिर से बनाए बिना पॉप किया जाता था. (Ieb8d4, b/281726455)
डिपेंडेंसी से जुड़े अपडेट
- अब नेविगेशन, Compose
1.5.0-beta01पर निर्भर करता है.
वर्शन 2.6.0
वर्शन 2.6.0
7 जून, 2023
androidx.navigation:navigation-*:2.6.0 रिलीज़ हो गया है. वर्शन 2.6.0 में ये बदलाव शामिल हैं.
नेविगेशन में 2.5.0 के बाद हुए अहम बदलाव
NavBackStackEntryकेargumentsऔरOnDestinationChangedListenerको पास किए गएarguments, अब सिर्फ़ उन अपरिवर्तनीय आर्ग्युमेंट की कॉपी हैं जो डेस्टिनेशन पर नेविगेट करते समय बनाए गए थे. इसका मतलब है कि उन बंडलों में किए गए किसी भी बदलाव का असर,argumentsया अन्यOnDestinationChangedListenerइंस्टेंस के बाद के ऐक्सेस पर नहीं पड़ेगा.NavDeepLinkअब ऐरे के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे बार-बार इस्तेमाल किए जाने वाले क्वेरी पैरामीटर के साथ काम किया जा सकता है. ये पैरामीटर, आर्ग्युमेंट के ऐरे टाइप पर मैप होंगे.NavTypeमें अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे दो पार्स की गई वैल्यू को एक साथ जोड़ने के लिए बदला जा सकता है.NavTypeके कस्टम सब-क्लास अबserializeAsValueको ओवरराइड करके, किसी वैल्यू को स्ट्रिंग में बदल सकते हैं. इससे, क्रम से लगाने और क्रम से हटाने (parseValueके ज़रिए) की प्रोसेस को पूरी तरह सेNavTypeक्लास में शामिल किया जा सकता है. अबStringType, इस तरीके को बदलकरStringपरUri.encodeको कॉल करता है.
Navigation Compose 2.5.0 के बाद हुए अहम बदलाव
NavHostकी मदद से कंपोज़ेबल की झलक देखने पर, अब यह डिफ़ॉल्ट रूप से NavGraph काstartDestinationदिखाएगा.NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)अब ऐसे सभी रास्तों के साथ काम करते हैं जिनमें आंशिक या पूरी तरह से आर्ग्युमेंट भरे गए हैं. ध्यान दें कि तर्क, एंट्री के तर्कों से पूरी तरह मेल खाने चाहिए.navDeepLinkKotlin DSL का इस्तेमाल करके, खालीNavDeepLinkबनाने की कोशिश करने पर अब लिंट की चेतावनी दिखेगी. इसमें बताया जाएगा कि डीप लिंक को मान्य होने के लिए, यूआरआई, ऐक्शन, और/या माइमटाइप की ज़रूरत होती है.
Fragments 2.5.0 के बाद से, नेविगेशन में हुए अहम बदलाव
NavHostFragmentअब सिस्टम के 'वापस जाएं' बटन को इंटरसेप्ट नहीं करता. इससेFragmentManagerको सिस्टम बैक को हैंडल करने की अनुमति मिलती है. इससे Fragment1.7.0-alpha01और इसके बाद के वर्शन, Android U डिवाइसों पर ऐप्लिकेशन में पीछे जाने पर झलक दिखाने वाला ऐनिमेशन दिखा सकते हैं.- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय,
FragmentManagerके पिछली गतिविधियों के स्टैक में फ़्रैगमेंट जोड़ने के लिए, मैन्युअल तरीके सेFragmentTransactionकरने की कोशिश करने पर, अबIllegalArgumentExceptionदिखेगा. आपको हमेशाnavigate()एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए. - नेविगेशन की एक्सएमएल फ़ाइल के गतिविधि एलिमेंट में,
app:dataऔरapp:dataPatternएट्रिब्यूट में प्लेसहोल्डर के तौर पर${applicationId}स्ट्रिंग का इस्तेमाल करने पर, प्लेसहोल्डर में कॉन्टेक्स्ट काpackageNameअपने-आप भर जाएगा. FragmentNavigatorअब नेविगेट करने औरNavBackStackEntriesको पॉप करने के लिए, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntryLifecycle, फ़्रैगमेंट में एंट्री और एग्ज़िट के खास इफ़ेक्ट पूरे होने का इंतज़ार करेगा. इसके बाद ही, वह अपनी फ़ाइनलLifecycle.Stateको मूव करेगा.DialogFragmentNavigatorअब नेविगेट करने औरNavBackStackEntriesको पॉप करने के लिए, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntryLifecycleअबDialogFragmentLifecycleकेDESTROYEDपर जाने का इंतज़ार करेगा. इसके बाद, वह खुदDESTROYEDपर जाएगा.NavHostFragmentकी मदद से, अबNavControllerकोFragmentManagerसेNavHostFragmentअटैच करते ही वापस पाया जा सकता है. इसके लिए,onCreate()तक इंतज़ार करने की ज़रूरत नहीं है.- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब विस्तृत Play Feature Delivery Library पर निर्भर करती है.
- Navigation Safe Args अब Android Gradle प्लगिन 7.3.0 पर निर्भर करता है. इसका मतलब है कि अब यह सिर्फ़ 7.3.0 या इसके बाद के वर्शन के साथ काम करेगा.
NavigationUI में 2.5.0 के बाद हुए अहम बदलाव
- नेविगेशन ग्राफ़ का आईडी
AppBarConfigurationको पास करते समय (जैसे,Menuके ज़रिए),NavigationUIअब उस नेविगेशन ग्राफ़ के सिर्फ़ शुरुआती डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर मानता है. ऐसा इसलिए, ताकि ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क न किया जाए. किसी डेस्टिनेशन का आईडी पास करने के तरीके में कोई बदलाव नहीं हुआ है. यह सुविधा,AppBarConfigurationपर मौजूद नएisTopLevelDestinationफ़ंक्शन के ज़रिए, आपके कोड के लिए भी उपलब्ध है. - टॉप ऐप्लिकेशन बार के साथ काम करने के लिए,
NavigationUIमें मौजूदsetupWithNavControllerइंटिग्रेशन अबandroid:labelमें मौजूदReferenceTypeआर्ग्युमेंट के लिएR.stringवैल्यू को पार्स करेंगे. इसके बाद, अपने-आप जनरेट होने वाले संसाधन पूर्णांक को आउटपुट करने के बजाय, उन्हें स्ट्रिंग वैल्यू में बदल देंगे. NavigationUIअब चुने गएMenuItemके ज़रिए नेविगेट न कर पाने पर, लॉग उपलब्ध कराता है.
वर्शन 2.6.0-rc02
24 मई, 2023
androidx.navigation:navigation-*:2.6.0-rc02 रिलीज़ हो गया है. वर्शन 2.6.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट में नेविगेशन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में,
popUpToका इस्तेमाल करके नेविगेट करने और बैक स्टैक से किसी फ़्रैगमेंट को हटाने पर, सिस्टम बैक काम करना बंद कर देता था. ऐसा तब होता था, जब फ़्रैगमेंट के व्यू को फिर से नहीं बनाया जाता था. (Ieb8d4, b/281726455)
वर्शन 2.6.0-rc01
10 मई, 2023
androidx.navigation:navigation-*:2.6.0-rc01 रिलीज़ हो गया है. वर्शन 2.6.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन में फ़्रैगमेंट से जुड़ी समस्या ठीक की गई है. इस समस्या में, फ़्रैगमेंट के
onResume()लाइफ़साइकल कॉलबैक मेंpopUpToका इस्तेमाल करके फ़्रैगमेंट को हटाने परIllegalStateExceptionहोता था. (I21884, b/279644470)
वर्शन 2.6.0-beta01
19 अप्रैल, 2023
androidx.navigation:navigation-*:2.6.0-beta01 रिलीज़ हो गया है. वर्शन 2.6.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavBackStackEntryअब कस्टमtoStringलागू करने की सुविधा देता है. (Iff00b)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय,
FragmentManagerके पिछली गतिविधियों के स्टैक में फ़्रैगमेंट जोड़ने के लिए, मैन्युअल तरीके सेFragmentTransactionकरने की कोशिश करने पर, अबIllegalArgumentExceptionदिखेगा. आपको हमेशाnavigate()एपीआई की मदद से फ़्रैगमेंट जोड़ने चाहिए. (I6d38e) - जब एक ही फ़्रेम में, कोई एंट्री जोड़ने वाला
navigateऔर उसे हटाने वालाpopBackStackमौजूद होता है, तो पिछली गतिविधियों में सबसे ऊपर मौजूद एंट्री अब हमेशाRESUMEDLifecycle.Stateपर वापस आ जाएगी. (Id8067, b/276495952)
वर्शन 2.6.0-alpha09
5 अप्रैल, 2023
androidx.navigation:navigation-*:2.6.0-alpha09 रिलीज़ हो गया है. वर्शन 2.6.0-alpha09 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अमान्य रूट की जांच से जुड़ी समस्या ठीक की गई है. अगर किसी
NavDestinationमें नॉन-नलेबलNavArgumentशामिल है, तो इस डेस्टिनेशन के रूट में, नॉन-नलेबलNavArgumentके नाम वाले आर्ग्युमेंट के लिए प्लेसहोल्डर शामिल होने चाहिए. (Ic62bf, b/274697949) - अगर नेविगेशन ऑपरेशन में,
NavDestinationके लिए ज़रूरी ऐसाNavArgumentमौजूद नहीं है जिसे शून्य पर सेट नहीं किया जा सकता, तोAction/MimeTypeके आधार पर डीपलिंक नेविगेशन अब काम नहीं करेगा.Action/MimeType(Ibfa17, b/271777424) - जब
NavControllerपिछले ग्राफ़ के जैसे ही रूट और डेस्टिनेशन वाला कोई ग्राफ़ सेट करता है, तो अब यह अपने मौजूदा ग्राफ़ नोड और बैक स्टैक डेस्टिनेशन को नए इंस्टेंस से बदल देता है. इससे Navigation Compose में स्थिति को सेव किए बिनाonLaunchSingleTopका इस्तेमाल करते समय होने वाली क्रैश की समस्या ठीक हो जाती है. इससे उस गड़बड़ी को भी ठीक किया जाता है जिसमें रूट ग्राफ़ से जुड़े डेस्टिनेशन पर नेविगेट करने पर गलत पिछली गतिविधियां बन जाती हैं. (I5bc58, b/275258161, b/275407804)
वर्शन 2.6.0-alpha08
22 मार्च, 2023
androidx.navigation:navigation-*:2.6.0-alpha08 रिलीज़ हो गया है. वर्शन 2.6.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavHostFragmentकी मदद से, अबNavControllerकोNavHostFragmentसे अटैच करते हीFragmentManagerवापस पाया जा सकता है. इसके लिए,onCreate()तक इंतज़ार करने की ज़रूरत नहीं है. (Ic6382, b/220186282)
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए ऐसे ग्राफ़ को पॉप करते समय होने वाली
NullPointerExceptionको ठीक किया गया है जिसमें नॉन-नलेबल आर्ग्युमेंट शामिल होता है. (6b3581, b/249988437) popUpToका इस्तेमाल करके नेविगेट करने के बाद, सिस्टम बैक का इस्तेमाल करने पर,NavControllerकी स्थिति सही एंट्री पर पॉप अप होगी. (I3a8ec, b/270447657)FragmentNavigatorअब सिस्टम बैक याpopBackStack()के ज़रिए पिछली गतिविधियों को पॉप करने पर, एंट्री को सही तरीके से पॉप करेगा. साथ ही, यह भी तय करेगा कि ट्रांज़ैक्शन, फ़्रैगमेंट के लिए इफ़ेक्ट का इस्तेमाल करता है या नहीं. (I81bdf)- नेविगेशन का इस्तेमाल किए बिना,
FragmentNavigatorकेFragmentManagerमें फ़्रैगमेंट जोड़ने पर अब क्रैश नहीं होगा. (b17204, b/274167493)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब लाइफ़साइकल
2.6.1पर निर्भर करता है. (586fe7) - नेविगेशन अब SavedState
1.2.1पर निर्भर करता है. (078e4e) - नेविगेशन अब ProfileInstaller
1.3.0पर निर्भर करता है. (512f0c)
वर्शन 2.6.0-alpha07
8 मार्च, 2023
androidx.navigation:navigation-*:2.6.0-alpha07 रिलीज़ हो गया है. वर्शन 2.6.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- रास्ते की जानकारी देने वाले
getBackStackEntry,popBackStack,clearBackStackएपीआई के वर्शन अब ऐसे रूट पैटर्न का इस्तेमाल करते हैं जिनमें नल वैल्यू वाले आर्ग्युमेंट और नल वैल्यू वाले क्वेरी पैरामीटर होते हैं (I22294, b/269302500) - उस समस्या को ठीक किया गया है जिसमें
NavControllerसेclearBackStack()को कॉल करने पर, साफ़ किए गए बैक स्टैक से जुड़े फ़्रैगमेंट मैनेजर में सेव की गई स्थिति साफ़ नहीं होती थी. (Ic1cce, b/271190202) - टैब के बीच सिस्टम बैक का इस्तेमाल करते समय,
BottomNavigationViewमें गलतMenuItemहाइलाइट होने की समस्या को ठीक किया गया है. यह समस्या 2.6.0-alpha06 वर्शन में हुई थी. (I634f6, b/270447657) - 2.6.0-alpha06 वर्शन में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से,
Animationका इस्तेमाल करते समय,NavBackStackEntryको RESUMED स्थिति में नहीं ले जाया जा सका. (Ib3589, b/269646882)
वर्शन 2.6.0-alpha06
22 फ़रवरी, 2023
androidx.navigation:navigation-*:2.6.0-alpha06 रिलीज़ हो गया है. वर्शन 2.6.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavHostकी मदद से कंपोज़ेबल की झलक देखने पर, अब यह डिफ़ॉल्ट रूप से NavGraph काstartDestinationदिखाएगा. (I2b89f)
एपीआई में हुए बदलाव
- सभी
NavControllernavigateओवरलोड को अब@MainThreadके साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि उन्हें मुख्य थ्रेड पर कॉल किया गया है. (I2c0b0, b/263427111)
गड़बड़ियां ठीक की गईं
- डाइनैमिक फ़्रैगमेंट नेविगेशन का इस्तेमाल करते समय नेविगेट करने की कोशिश करने पर होने वाली क्रैश की समस्या को ठीक किया गया है. (I3ee29, b/268360479)
- उस बग को ठीक किया गया है जिसमें सिस्टम के बैक बटन से किसी दूसरे फ़्रैगमेंट पर जाने पर, बॉटम बार में सही आइटम अपडेट नहीं होता था (If559f, b/269044426)
मौजूदा समस्याएं
- Fragments के साथ नेविगेशन का इस्तेमाल करते समय,
AnimationAPI का इस्तेमाल करने पर,NavBackStackEntryका लाइफ़साइकलRESUMEDतक नहीं पहुंच पाता. (b/269646882) - फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय और
BottomNavigationके साथ नेविगेट करते समय, अगर एक से ज़्यादा एंट्री वाली पिछली गतिविधियां को वापस लाने की कोशिश की जाती है, तोBottomMenuItemको सही तरीके से अपडेट नहीं किया जाता. (b/270447657) - फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, स्थिति को वापस लाने के बाद
NavBackStackEntryLifecycleकोDESTROYEDनहीं मिलता है, जब उसका फ़्रैगमेंटDESTROYEDहोता है . (b/270610768)
वर्शन 2.6.0-alpha05
8 फ़रवरी, 2023
androidx.navigation:navigation-*:2.6.0-alpha05 रिलीज़ हो गया है. वर्शन 2.6.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)अब ऐसे सभी रास्तों के साथ काम करते हैं जिनमें आंशिक या पूरी तरह से आर्ग्युमेंट भरे गए हैं. ध्यान दें कि तर्क, एंट्री के तर्कों से पूरी तरह मेल खाने चाहिए. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigatorअब नेविगेट करने औरNavBackStackEntriesको पॉप करने के लिए, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntryLifecycle, फ़्रैगमेंट के खास इफ़ेक्ट के खत्म होने का इंतज़ार करेगा. इसके बाद ही, वह अपने फ़ाइनलLifecycle.Stateपर जाएगा. (I3cb19, b/238686802)DialogFragmentNavigatorअब नेविगेट करने औरNavBackStackEntriesको पॉप करने के लिए, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntryLifecycleअबDialogFragmentLifecycleकेDESTROYEDपर जाने का इंतज़ार करेगा. इसके बाद, वह खुदDESTROYEDपर जाएगा. (I53ee5, b/261213893)
एपीआई में हुए बदलाव
NavigatorStateअबprepareForTransitionAPI उपलब्ध कराता है, ताकिNavigator,NavBackStackEntriesको इंटरमीडिएटLifecycle.Stateमें ले जा सकें. (I42c21, b/238686802)- अब
backstackप्रॉपर्टी के ज़रिए,NavGraphNavigatorयाComposeNavigatorसे जुड़े बैक स्टैक को ऐक्सेस किया जा सकता है.ComposeNavigatorअबonTransitionComplete()कॉलबैक को भी दिखाता है, ताकि नेविगेट याpopBackStackऑपरेशन पूरा करने वालेNavBackStackEntryको 'पूरा हो गया' के तौर पर मार्क किया जा सके. (I02062, I718db, b/257519195)
गड़बड़ियां ठीक की गईं
push/popWithTransitionएपीआई का इस्तेमाल करने पर, नेविगेटर की स्थिति अब कोई कार्रवाई नहीं करेगी. साथ ही, एंट्री को पहले से ही मैनेज किया जा रहा है. (Iadbfa, b/261213893)- नेस्ट किए गए
NavGraphके साथlaunchSingleTopका इस्तेमाल करने पर, ओरिजनल डेस्टिनेशन से लेकर इसकेstartDestinationतक के सभी डेस्टिनेशन, बैकस्टैक में सबसे ऊपर सही तरीके से जोड़े जाएंगे. (Id4bea, b/253256629) - अब नेविगेशन,
DialogFragmentइंस्टेंस को सही तरीके से बदल देगा. ऐसा तब होगा, जबlaunchSingleTopफ़्लैग को 'सही है' पर सेट करके, उसी डेस्टिनेशन पर नेविगेट किया जाएगा. (I45b5a, b/149572817) - नेविगेशन SafeArgs का इस्तेमाल करते समय, 19 वर्णों वाले आर्ग्युमेंट का इस्तेमाल करने पर अब कंपाइलेशन की गड़बड़ी नहीं होगी. (Id60bc, b/257110095)
वर्शन 2.6.0-alpha04
9 नवंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha04 रिलीज़ हो गया है. वर्शन 2.6.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavTypeके कस्टम सबक्लास अबserializeAsValueको बदल सकते हैं, ताकि किसी वैल्यू को स्ट्रिंग में बदला जा सके. इससे, सीरियलाइज़ेशन और डीसीरियलाइज़ेशन (parseValueके ज़रिए) दोनों को पूरी तरह सेNavTypeक्लास में शामिल किया जा सकता है. अबStringType, इस तरीके को बदलकरStringपरUri.encodeको कॉल करता है. (Ie5213, b/247637434)NavigationUIअब चुने गएMenuItemके ज़रिए नेविगेट न कर पाने पर, लॉग उपलब्ध कराता है. (I2af5a, b/247730357)
गड़बड़ियां ठीक की गईं
- नेविगेशन डीप लिंक को अब ग्राफ़ के शुरू होने पर पार्स करने के बजाय, लेज़ी तरीके से पार्स किया जाता है. इससे ऐप्लिकेशन की परफ़ॉर्मेंस बेहतर हो सकती है. (Iab0ab)
- डिफ़ॉल्ट आर्ग्युमेंट के तौर पर शून्य वैल्यू वाले डेस्टिनेशन पर डीप लिंक करने के बाद, ऊपर की ओर नेविगेट करने पर ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई है. (I51c24, b/243183636)
डिपेंडेंसी अपडेट
- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब विस्तृत Play Feature Delivery Library पर निर्भर करती है. (Ib4ddc)
- Navigation Safe Args अब Android Gradle प्लगिन 7.3.0 पर निर्भर करता है. इसका मतलब है कि अब यह सिर्फ़ 7.3.0 और इसके बाद के वर्शन के साथ काम करता है. (I47e49)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha03 रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.3से:NavHostअबNoSuchElementExceptionनहीं दिखाएगा, क्योंकिCrossfadeके लिए कोई डेस्टिनेशन उपलब्ध नहीं है. अब यह सिर्फ़ कंपोज़िशन को स्किप करेगा. (Ieb46e, b/253299416) - नेविगेशन
2.5.3: कंपोज़ की सेव की गई स्थिति (जैसे,rememberSaveableका इस्तेमाल) को याद न रखने और बैक स्टैक से डेस्टिनेशन हटाए जाने पर उसे न हटाने की समस्या को ठीक किया गया है. (I64949)
डिपेंडेंसी से जुड़े अपडेट
- अब नेविगेशन, Fragment
1.5.4पर निर्भर करता है. (Icd424)
वर्शन 2.6.0-alpha02
5 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha02 रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- नेविगेशन ग्राफ़ का आईडी
AppBarConfigurationको पास करते समय (जैसे,Menuके ज़रिए),NavigationUIअब उस नेविगेशन ग्राफ़ के सिर्फ़ शुरुआती डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर मानता है. ऐसा इसलिए, ताकि ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क न किया जाए. किसी डेस्टिनेशन का आईडी पास करने के तरीके में कोई बदलाव नहीं हुआ है. यह सुविधा,AppBarConfigurationपर मौजूद नएisTopLevelDestinationफ़ंक्शन के ज़रिए, आपके कोड के लिए भी उपलब्ध है. (Ie936e, b/238496771)
गड़बड़ियां ठीक की गईं
navigation:navigation-fragmentकॉम्पोनेंट अब फ़्रैगमेंट वर्शन1.5.2पर निर्भर करता है. (I00ba4)- डायलॉग जैसे
FloatingWindowडेस्टिनेशन पर नेविगेट करने पर, चुना गया मेन्यू आइटम अब अपडेट नहीं होगा. (I4cde8, b/240308330)
वर्शन 2.6.0-alpha01
7 सितंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha01 रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टॉप ऐप्लिकेशन बार के साथ काम करने के लिए,
NavigationUIमें मौजूदsetupWithNavControllerइंटिग्रेशन अबandroid:labelमें मौजूदReferenceTypeआर्ग्युमेंट के लिएR.stringवैल्यू को पार्स करेंगे. इसके बाद, अपने-आप जनरेट होने वाले संसाधन पूर्णांक को आउटपुट करने के बजाय, उन्हें स्ट्रिंग वैल्यू में बदल देंगे. (I5f803, b/167959935) NavDeepLinkअब ऐरे के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे बार-बार इस्तेमाल किए जाने वाले क्वेरी पैरामीटर के साथ काम किया जा सकता है. ये पैरामीटर, आर्ग्युमेंट के ऐरे टाइप पर मैप होंगे.NavTypeमें अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे दो पार्स की गई वैल्यू को एक साथ लाने के लिए बदला जा सकता है. (Id68c3, b/209977108)- नेविगेशन की एक्सएमएल फ़ाइल के गतिविधि एलिमेंट में,
app:dataऔरapp:dataPatternएट्रिब्यूट में प्लेसहोल्डर के तौर पर${applicationId}स्ट्रिंग का इस्तेमाल करने पर, प्लेसहोल्डर में कॉन्टेक्स्ट काpackageNameअपने-आप भर जाएगा. (Iaabde, b/234223561) navDeepLinkKotlin DSL का इस्तेमाल करके, खालीNavDeepLinkबनाने की कोशिश करने पर अब लिंट की चेतावनी दिखेगी. इसमें बताया जाएगा कि डीप लिंक के मान्य होने के लिए, यूआरआई, ऐक्शन, और/या माइमटाइप की ज़रूरत होती है. (I08d2f, b/154038883)
एपीआई में हुए बदलाव
NavDestinationएक्सटेंशन फ़ंक्शन जोड़ा गया है. यहandroid:label="{arg}"के फ़ॉर्म में मौजूद आर्ग्युमेंट के साथ डाइनैमिक लेबल को स्ट्रिंग में पार्स करता है. यहReferenceTypeआर्ग्युमेंट के साथ काम करता है. इसके लिए,R.stringवैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स करता है. (I07d89, b/236269380)
व्यवहार में बदलाव
- NavBackStackEntry के
argumentsऔरOnDestinationChangedListenerको पास किए गएarguments, अब सिर्फ़ उन अपरिवर्तनीय आर्ग्युमेंट की कॉपी हैं जो डेस्टिनेशन पर नेविगेट करते समय बनाए गए थे. इसका मतलब है कि उन बंडलों में किए गए किसी भी बदलाव का असर,argumentsया अन्यOnDestinationChangedListenerइंस्टेंस के बाद के ऐक्सेस पर नहीं पड़ेगा. (I676f5)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.2से: डाइनैमिक नेविगेशन अब अन्य मॉड्यूल से ऐक्टिविटी डेस्टिनेशन इंस्टॉल करने की कोशिश करता है. इसके बाद, उन पर नेविगेट करता है. (Ia2c16, b/240292838) - नेविगेशन
2.5.2: अब एक ही डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, फ़्रैगमेंट इंस्टेंस को सही तरीके से बदल देगा. साथ ही,launchSingleTopफ़्लैग को सही पर सेट कर देगा. (I5a2f1, b/237374580) - नेविगेशन
2.5.2: डबल नेस्ट किए गए ऐसे ग्राफ़ पर नेविगेट करने की वजह से हुईIllegalStateExceptionको ठीक किया गया है जो पॉप अप किए गए नए स्टार्ट डेस्टिनेशन के साथ पैरंट शेयर करता है. (I9f7cb, b/243778589)
वर्शन 2.5
वर्शन 2.5.3
24 अक्टूबर, 2022
androidx.navigation:navigation-*:2.5.3 रिलीज़ हो गया है. वर्शन 2.5.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
Crossfadeके लिए कोई डेस्टिनेशन उपलब्ध न होने पर,NavHostअबNoSuchElementExceptionनहीं दिखाएगा. अब यह सिर्फ़ कंपोज़िशन को स्किप करेगा. (Ieb46e, b/253299416)- उस समस्या को ठीक किया गया है जिसमें डेस्टिनेशन को बैक स्टैक से हटाने पर, सेव की गई कंपोज़ स्टेट (जैसे,
rememberSaveableका इस्तेमाल) को हटाया नहीं जा रहा था. (I64949)
वर्शन 2.5.2
7 सितंबर, 2022
androidx.navigation:navigation-*:2.5.2 रिलीज़ हो गया है. वर्शन 2.5.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डाइनैमिक नेविगेशन अब अन्य मॉड्यूल से ऐक्टिविटी डेस्टिनेशन इंस्टॉल करने की कोशिश करता है. इसके बाद ही, उन पर नेविगेट करता है. (Ia2c16, b/240292838)
- अब एक ही डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, फ़्रैगमेंट इंस्टेंस को सही तरीके से बदल देगा. इसके लिए,
launchSingleTopफ़्लैग को सही पर सेट करना होगा. (I5a2f1, b/237374580) - डबल नेस्ट किए गए ऐसे ग्राफ़ पर नेविगेट करने की वजह से होने वाली
IllegalStateExceptionसमस्या ठीक की गई है जो नए पॉप किए गए स्टार्ट डेस्टिनेशन के साथ पैरंट शेयर करता है. (I9f7cb, b/243778589)
डिपेंडेंसी अपडेट
- नेविगेशन
2.5.2अब फ़्रैगमेंट1.5.2पर निर्भर करता है. (aosp/2178734)
वर्शन 2.5.1
27 जुलाई, 2022
androidx.navigation:navigation-*:2.5.1 रिलीज़ हो गया है. वर्शन 2.5.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
Navigation Safe Argsअब जनरेट की गई क्लास में, डेप्रिकेशन से जुड़ी चेतावनियां नहीं दिखाएगा. ऐसा तब होगा, जबBundleमें सेव किए गए कस्टम आर्ग्युमेंट टाइप का इस्तेमाल किया जा रहा हो. (Id86ed, b/237725966)
डिपेंडेंसी से जुड़े अपडेट
- Navigation लाइब्रेरी अब Lifecycle
2.5.1पर निर्भर करती है. (Ib4451) - Navigation library अब Activity
1.5.1पर निर्भर करती है. (I3efe8) - नेविगेशन लाइब्रेरी अब Fragment
1.5.1पर निर्भर करती है. (I56177)
वर्शन 2.5.0
29 जून, 2022
androidx.navigation:navigation-*:2.5.0 रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
2.4.0 के बाद हुए अहम बदलाव
- CreationExtras इंटिग्रेशन -
Navigationअब Lifecycle2.5.0केCreationExtrasके ज़रिए, स्टेटलेसViewModelProvider.Factoryउपलब्ध करा सकता है.
Navigation SafeArgs
Navigation Safe ArgsनेAndroid Gradle Pluginडिपेंडेंसी को अपग्रेड किया है, ताकि यह7.0.4पर काम कर सके. इससे,7.0से पहले के एजीपी वर्शन के साथ काम करने की सुविधा बंद हो गई है.- applicationId के बजाय, namespace build.gradle एट्रिब्यूट का इस्तेमाल करने की सुविधा जोड़ी गई.
अन्य बदलाव
visibleEntriesएपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. इसमें एक फ़ंक्शन दिया गया है, जिसकी मदद से उन सभी एंट्री को वापस पाया जा सकता है जिनका डेस्टिनेशन, फ़िलहालNavControllerके हिसाब से दिख रहा है.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.navigation:navigation-*:2.5.0-rc02 रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose
NavHostका इस्तेमाल करते समय, बॉटम डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. (I3979a, b/234054916) Navigation SafeArgsका इस्तेमाल करते समय, अब यह क्रैश नहीं होगा. ऐसा तब होता है, जबapplicationIdSuffixऔर नेमस्पेस में कोईapplicationIdमौजूद न हो या जबapplicationIdऔर नेमस्पेस अलग-अलग हों. (I754b1, b/233119646)NavArgumentमें अब कस्टमtoString()फ़ंक्शन है. इससे आर्ग्युमेंट की इंटरनल वैल्यू दिखाई जा सकती हैं. (I900a8)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.navigation:navigation-*:2.5.0-rc01 रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- आपकी
navigation.xmlफ़ाइल में,<deeplink>एलिमेंट को<activity>एलिमेंट के अंदर रखने पर चेतावनी देने के लिए, नया लिंट नियम जोड़ा गया है.(Ic15a5, b/178403185)
गड़बड़ियां ठीक की गईं
NavHostऔरDialogHostमें कंपोज़ेबल स्कोप अब तय किए गए क्रम में बंद किए जाते हैं. इसका मतलब है कि अंदरूनी कंपोज़ेबल, बाहरी कंपोज़ेबल से पहले बंद किए जाते हैं. (I157e6)- नेविगेशन SafeArgs अब
ArgumentsGenerationTaskमेंPathSensitivity.RELATIVEका इस्तेमाल करता है, ताकि कैश मेमोरी को दूसरी जगह ले जाया जा सके. इसका मतलब है कि अब कैश मेमोरी की एंट्री को सीआई बिल्ड से लोकल बिल्ड में फिर से इस्तेमाल किया जा सकता है. (I5f67c, b/173420454) UnrememberedGetBackStackEntryDetectorलिंट नियम को अपडेट किया गया है, ताकि यह पक्का किया जा सके किgetBackStackEntry()को कॉल करने के आस-पास मौजूदrememberकॉल,NavBackStackEntryऑब्जेक्ट को भी कुंजी के तौर पर पास करे.(Ib7081, b/227382831)
वर्शन 2.5.0-beta01
20 अप्रैल, 2022
androidx.navigation:navigation-*:2.5.0-beta01 रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
DialogNavigatorअबdismiss()कॉल को एक्ज़ीक्यूट करते समयpopWithTransitionका इस्तेमाल करता है. इस कुकी का इस्तेमाल,dialogडेस्टिनेशन मेंViewModelका इस्तेमाल करते समय रेस कंडीशन को ठीक करने के लिए किया जाता है. इससे, सिस्टम के बैक बटन का इस्तेमाल करके या डायलॉग से बाहर निकलने के लिए डायलॉग के बाहर टैप करके डायलॉग को खारिज करते समय,IllegalStateExceptionकी समस्या ठीक हो जाती है. (Id7376, b/226552301)
डिपेंडेंसी से जुड़े अपडेट
- अब नेविगेशन, लाइफ़साइकल
2.5.0-beta01पर निर्भर करता है. साथ ही, एक से ज़्यादा बैक स्टैक का इस्तेमाल करते समय, प्राइमरी बॉटम नेविगेशन टैब के अलावा किसी दूसरे टैब में एकNavHostको दूसरेNavHostमें नेस्ट करते समय,IllegalStateExceptionको ठीक किया गया है.
वर्शन 2.5.0-alpha04
6 अप्रैल, 2022
androidx.navigation:navigation-*:2.5.0-alpha04 रिलीज़ हो गया है. वर्शन 2.5.0-alpha04 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
visibleEntriesअब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I4829f, b/225394514)
गड़बड़ियां ठीक की गईं
- NavHost अब यह तय करने के लिए कि किन एंट्री को कंपोज़ करना है,
NavControllerसेvisibleEntriesपर निर्भर करता है. इसका मतलब है कि नेस्ट किए गए NavHost का इस्तेमाल करते समय, अब अंदरूनीNavHostको सही तरीके से ऐनिमेट किया जाना चाहिए. (I4ba2b, b/225394514) NavControllerकी ओर से उपलब्ध कराया गयाvisibleEntriesStateFlowअब मौजूदा लाइफ़साइकल की स्थिति के बजाय, एंट्री मैक्स लाइफ़साइकल की स्थिति पर आधारित है. इसका मतलब है कि अगरnavControllerकी होस्ट लाइफ़साइकल STARTED से कम हो जाती है, तब भी दिखने वाली एंट्री की सूची में कोई बदलाव नहीं होगा. (I9e2a8, b/225394514)SavedStateViewFactoryमें अबCreationExtrasका इस्तेमाल किया जा सकता है. भले ही, इसेSavedStateRegistryOwnerसे शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)NavDeepLinkअब बिना किसी वैल्यू वाले सिंगल क्वेरी पैरामीटर के साथ यूआरआई को पार्स कर सकता है. (I0efe8, b/148905489)- डीप लिंक में अब खाली स्ट्रिंग को मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
- नेमस्पेस का इस्तेमाल करते समय और
AndroidManifest.xmlमौजूद न होने पर,Navigation Safe Argsअब अचानक बंद नहीं होगा. (I17ccf, b/227229815)
वर्शन 2.5.0-alpha03
23 फ़रवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha03 रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- अब
ViewModelबनाने के लिए,by navGraphViewModelsमेंCreationExtrasपास किया जा सकता है. (I29217, b/217618359)
गड़बड़ियां ठीक की गईं
NavDeepLinksअब रास्तों/डीप लिंक यूआरआई में एम्बेड किए गए, नई लाइन के लिए एन्कोड किए गए वर्णों के साथ काम करता है. (I513d1, b/217815060)- अब
NavBackStackEntriesके साथCreationExtrasका इस्तेमाल करके ViewModels बनाते समय, यह सही तरीके से काम करेगा. (I69161, b/217617710) - Navigation Safe Args अब AndroidManifest में पैकेज की जगह,
build.gradleमें तय किए गए नेमस्पेस का इस्तेमाल करने की सुविधा देता है. (I659ef, b/217414933)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha02 रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.4.1से: नेस्ट किए गए ग्राफ़ के साथ viewbinding का इस्तेमाल करते समय,NavHostFragmentअबOnBackPressedDispatcherको सही तरीके से सेट करेगा. (Ifbb51, b/214577959) - नेविगेशन
2.4.1से: कई नेस्ट किए गएNavGraphके ज़रिए डीप लिंकिंग करने पर, बैक स्टैक में अब इंटरमीडिएट स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha01 रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavBackStackEntryको अब ViewModel CreationExtras के साथ इंटिग्रेट किया गया है. इसे Lifecycle2.5.0-alpha01के हिस्से के तौर पर लॉन्च किया गया था. (Ib9fe2, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, फ़्रैगमेंट के
onCreate()सेby navGraphViewModels()के ज़रिए बनाए गएViewModelको ऐक्सेस करने पर,IllegalStateExceptionकी समस्या आ रही थी. (I8a14d) NavDeepLinks अब args को दो बार डिकोड नहीं करेगा. इसका मतलब है कि अब सही args आपके फ़ाइनल डेस्टिनेशन पर पास किए जाते हैं. (I31b0a, b/210711399)
Safe Args
- Safe Args अब Android Gradle प्लगिन 7.0.4 पर निर्भर करता है. इसका मतलब है कि Navigation Safe Args, Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, अब यह Android Gradle Plugin 7.1.0 और इसके बाद के वर्शन के साथ काम करता है. (I41c88, b/213086135, b/207670704)
वर्शन 2.4.2
वर्शन 2.4.2
6 अप्रैल, 2022
androidx.navigation:navigation-*:2.4.2 रिलीज़ हो गया है. वर्शन 2.4.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.0-alpha03से बैकपोर्ट किया गया:NavDeepLinksअब रास्तों/डीप लिंक यूआरआई में एम्बेड किए गए, एन्कोड किए गए नई लाइन के वर्णों के साथ ठीक से काम करता है. (I513d1, b/217815060) - Navigation
2.5.0-alpha03से बैकपोर्ट किया गया: Navigation SafeArgs अब AndroidManifest में पैकेज की जगहbuild.gradleमें तय किए गए नेमस्पेस का इस्तेमाल करने की सुविधा देता है. (I659ef, b/217414933) - नेविगेशन
2.5.0-alpha04से बैकपोर्ट किया गया: नेमस्पेस का इस्तेमाल करते समय और कोईAndroidManifest.xmlमौजूद न होने पर,Navigation Safe Argsअब क्रैश नहीं होगा. (I17ccf, b/227229815) - नेविगेशन
2.5.0-alpha04से बैकपोर्ट किया गया: अब डीप लिंक में खाली स्ट्रिंग को मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
वर्शन 2.4.1
वर्शन 2.4.1
9 फ़रवरी, 2022
androidx.navigation:navigation-*:2.4.1 रिलीज़ हो गया है. वर्शन 2.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए ग्राफ़ के साथ ViewBinding का इस्तेमाल करने पर,
NavHostFragmentअबOnBackPressedDispatcherको सही तरीके से सेट करेगा. (Ifbb51, b/214577959) - कई नेस्ट किए गए
NavGraphके ज़रिए डीप लिंकिंग करने पर, बैक स्टैक में अब इंटरमीडिएट स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060) - Navigation
2.5.0-alpha01से बैकपोर्ट किया गया: उस समस्या को ठीक किया गया है जिसमेंby navGraphViewModels()का इस्तेमाल करके बनाए गए ViewModel को Fragment केonCreate()से ऐक्सेस करने पर,IllegalStateExceptionकी वजह से ऐक्सेस नहीं किया जा सकता था. (I8a14d) - नेविगेशन
2.5.0-alpha01से बैकपोर्ट किया गया:NavDeepLinkअब बिना किसी वजह के आर्ग्युमेंट को दो बार डिकोड नहीं करता है. इसका मतलब है कि सही तरीके से डिकोड किए गए आर्ग्युमेंट अब आपके फ़ाइनल डेस्टिनेशन पर पास किए जाते हैं. (I31b0a, b/210711399) - Navigation
2.5.0-alpha01से बैकपोर्ट किया गया: Safe Args अब Android Gradle प्लगिन 7.0.4 पर निर्भर करता है. इसका मतलब है कि Navigation Safe Args, Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, अब यह Android Gradle Plugin 7.1.0 और इसके बाद के वर्शन के साथ काम करता है. (I41c88, b/213086135, b/207670704)
वर्शन 2.4.0
वर्शन 2.4.0
26 जनवरी, 2022
androidx.navigation:navigation-*:2.4.0 रिलीज़ हो गया है. वर्शन 2.4.0 में ये बदलाव शामिल हैं.
2.3.0 के बाद हुए अहम बदलाव
- सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे,
NavTypeसबक्लास) की नल होने की स्थिति में सुधार हुआ है. Kotlin के सभी एक्सटेंशन फ़ंक्शन, जो पहले-ktxआर्टफ़ैक्ट का हिस्सा थे उन्हें उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है.-ktxआर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे. navigation-fragmentआर्टफ़ैक्ट में, अब नएAbstractListDetailFragmentके ज़रिए दो पैन वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. यह फ़्रैगमेंट, सूची वाले पैनल को मैनेज करने के लिएSlidingPaneLayoutका इस्तेमाल करता है. यह सूची वाला पैनल, आपकी सब-क्लास उपलब्ध कराती है. साथ ही, यह फ़्रैगमेंट जानकारी वाले पैनल को मैनेज करने के लिए भीNavHostFragmentका इस्तेमाल करता है. इसे लागू करने के उदाहरण में देखा जा सकता है.NavControllerपर मौजूदcurrentBackStackEntryAsFlow()तरीके से, एकFlowमिलता है. यह तब ट्रिगर होता है, जब मौजूदाNavBackStackEntryबदलता है. इस फ़्लो का इस्तेमाल,OnDestinationChangedListenerको मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है.- NavController अब एक्सपेरिमेंटल
visibleEntriesप्रॉपर्टी के ज़रिए, दिखने वाले सभीNavBackStackEntryइंस्टेंस की सूची कोStateFlowके तौर पर वापस पाने की सुविधा देता है. - अब
NavTypeक्लास को बढ़ाकर, कस्टम NavTypes बनाए जा सकते हैं. कस्टम टाइप का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब प्रोग्राम के हिसाब से नेविगेशन ग्राफ़ बनाया जा रहा हो. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए. नेविगेशन में अब
findStartDestination()औरgetHierarchy()एपीआई उपलब्ध हैं. इनका इस्तेमाल, कस्टम NavigationUI को लागू करने के लिए किया जा सकता है.findStartDestination(),NavGraphपर एक एक्सटेंशन फ़ंक्शन है. यह उस शुरुआती जगह का पता लगाएगा जो ग्राफ़ पर नेविगेट करते समय दिखेगी. भले ही,startDestinationखुद एक नेस्ट किया गयाNavGraphहो.getHierarchy(),NavDestinationपर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि दिया गया डेस्टिनेशन, किसी दूसरे डेस्टिनेशन के क्रम में है या नहीं.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }NavigationUIतरीकों को अपडेट किया गया है. इनमेंBottomNavigationViewका इस्तेमाल किया जाता था. अब इनमें Material1.4.0,NavigationBarViewमें पेश की गई सुपरक्लास का इस्तेमाल किया जाएगा. इससे इन तरीकों का इस्तेमालNavigationRailViewके साथ किया जा सकता है.एक्सएमएल के ज़रिए
<action>एलिमेंट को बड़ा करते समय, ऐनिमेशन एट्रिब्यूट,app:enterAnim="?attr/transitionEnter"सिंटैक्स का इस्तेमाल करके आपकी थीम से लिए गए एट्रिब्यूट का इस्तेमाल कर सकते हैं.Safe Args अब हर
NavArgsक्लास के लिए,fromSavedStateHandle()तरीका जनरेट करता है. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
नेविगेशन रूट और Kotlin डीएसएल
नेविगेशन के पिछले वर्शन में, हर डेस्टिनेशन के लिए एक कॉन्स्टेंट पूर्णांक आईडी होता था. इससे, डेस्टिनेशन की पहचान उसके जैसे अन्य डेस्टिनेशन से अलग तौर पर की जाती थी. साथ ही, इसकी मदद से सीधे तौर पर या किसी कार्रवाई के ज़रिए उस डेस्टिनेशन पर navigate() किया जा सकता था. यह अब भी मान्य और काम का है. खास तौर पर, उन मामलों में जहां आपको एक्सएमएल में अपना नेविगेशन ग्राफ़ तय करना होता है और अपने-आप जनरेट होने वाले R.id कॉन्स्टेंट या Safe Args का इस्तेमाल करना होता है. Safe Args, इन कॉन्स्टेंट का इस्तेमाल करके, बिल्ड प्रोसेस में लगने वाले समय पर कोड जनरेट करता है. हालांकि, यूनीक पूर्णांकों का यह सिस्टम, सिमैंटिक मीनिंग और एक्सप्रेसिवनेस को कैप्चर नहीं करता है. इसकी ज़रूरत, Navigation Kotlin DSL के ज़रिए रनटाइम पर प्रोग्राम के हिसाब से बनाए गए पूरी तरह से डाइनैमिक ग्राफ़ को सपोर्ट करने के लिए होती है.
इस रिलीज़ में, नेविगेशन ग्राफ़ में किसी डेस्टिनेशन की पहचान करने के लिए एक नया विकल्प पेश किया गया है. इसकी पहचान रूट के हिसाब से की जाती है. रास्ता एक String होता है, जो किसी डेस्टिनेशन तक पहुंचने के यूनीक पाथ के बारे में बताता है. Kotlin DSL के वे सभी तरीके अब काम नहीं करेंगे जिनमें डेस्टिनेशन आईडी की ज़रूरत होती थी. उनकी जगह, अब ऐसे एपीआई का इस्तेमाल किया जाएगा जिनमें रूट की ज़रूरत होती है.
हर रूट को Uri के ‘पाथ’ वाले हिस्से के तौर पर माना जाना चाहिए. यह हिस्सा, डेस्टिनेशन के बारे में बताता है. जैसे, home, profile/{userId}, profile/{userId}/friends वगैरह. जब किसी डेस्टिनेशन की पहचान, कॉन्टेंट के किसी खास हिस्से से जुड़ी होती है, तो उन डाइनैमिक आर्ग्युमेंट को रूट का हिस्सा होना चाहिए. इसके लिए, इंप्लिसिट डीप लिंक वाले नियमों का पालन करना होगा.
सभी NavController एपीआई, जो पहले सिर्फ़ आईडी लेते थे उनमें अब एक ओवरलोड होता है, जो रूट String लेता है. इसमें navigate(), popBackStack(), popUpTo(), और getBackStackEntry() शामिल हैं.
इससे एपीआई पर कुछ असर पड़ा है:
- Kotlin डीएसएल में मौजूद
popUpToKotlin प्रॉपर्टी को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,popUpToIdका इस्तेमाल करें. getStartDestination()API अब काम नहीं करता. उसकी जगहgetStartDestinationId()का इस्तेमाल किया जाता है.
आईडी के हिसाब से नेविगेट करने के बजाय, रूट के हिसाब से नेविगेट करने पर वही नियम लागू होते हैं जो इंप्लिसिट डीप लिंक के लिए लागू होते हैं. इसका मतलब है कि किसी भी नेस्ट किए गए ग्राफ़ में मौजूद किसी भी डेस्टिनेशन पर सीधे नेविगेट किया जा सकता है. इससे यह पक्का होता है कि इन रास्तों का इस्तेमाल मल्टी-मॉड्यूल प्रोजेक्ट में किया जा सकता है. इसके लिए, हर डेस्टिनेशन में बाहरी तौर पर दिखने वाला डीप लिंक जोड़ने की ज़रूरत नहीं होती.
Navigation Compose
navigation-compose आर्टफ़ैक्ट, Navigation Component और Jetpack Compose के बीच इंटिग्रेशन उपलब्ध कराता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.
इस रिलीज़ में ये सुविधाएं उपलब्ध हैं:
- यह एक
NavHostकंपोज़ेबल है. इसकी मदद से, Kotlin DSL का इस्तेमाल करके नेविगेशन ग्राफ़ बनाया जा सकता है. इसमेंcomposableऔरdialogडेस्टिनेशन का इस्तेमाल किया जाता है. साथ ही, Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर के लिए भी सहायता मिलती है. - डेस्टिनेशन के बीच क्रॉसफ़ेडिंग की सुविधा देना ज़रूरी है. साथ में दिखने वाले नेविगेशन ऐनिमेशन का इस्तेमाल करके, एक्सपेरिमेंट के तौर पर उपलब्ध Compose API की मदद से, स्क्रीन में शामिल होने और उससे बाहर निकलने के ट्रांज़िशन को कंट्रोल किया जा सकता है.
- हर कंपोज़ेबल डेस्टिनेशन के लिए,
Lifecycleका स्कोप तय करना. हर डेस्टिनेशन, सिर्फ़ तबRESUMEDस्थिति में पहुंचता है, जब कोई भी ट्रांज़िशन पूरा हो जाता है. इसके बाद, जैसे ही कोई ट्रांज़िशन शुरू होता है, वह तुरंतSTARTEDस्थिति में आ जाता है. इस तरह,LifecycleकेRESUMEDहोने पर सिर्फ़navigateकॉल ट्रिगर करके,IllegalStateExceptionऔर मल्टी-टच से जुड़ी सभी समस्याओं से बचा जा सकता है. - डेस्टिनेशन लेवल पर, Lifecycle ViewModel Compose
2.4.0केviewModel()API या Hilt Navigation Compose1.0.0केhiltViewModel()के ज़रिएViewModelका स्कोप तय करना. इससे कॉन्फ़िगरेशन में बदलाव होने और पिछली गतिविधियां में होने पर भी स्कोप बना रहता है. ऐसा तब होता है, जब आपके कंपोज़ेबल कॉन्टेंट को हटा दिया जाता है. साथ ही, ViewModel केonCleared()में एक सिग्नल होता है, जो उसNavBackStackEntryसे जुड़े स्टेट को हमेशा के लिए हटाने और साफ़ करने के बारे में बताता है. - डेस्टिनेशन लेवल पर
rememberSaveableकी स्कोपिंग की गई है. इससे यह पक्का होता है कि कंपोज़ेबल स्टेट की सभी जानकारी सेव हो जाए और जब आप किसी डेस्टिनेशन पर वापस आएं, तो वह अपने-आप वापस आ जाए. - प्रोसेस बंद होने और फिर से शुरू होने के बाद,
NavControllerऔर उसके डेस्टिनेशन की स्थिति को सेव करने और वापस लाने की सुविधा. - सिस्टम के 'वापस जाएं' बटन के साथ अपने-आप इंटिग्रेट होने की सुविधा.
आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजे वापस भेजने की सुविधा.
rememberNavController()औरcurrentBackStackEntryAsState()में खास हेल्पर कंपोज़ करें, ताकि होस्टिंग की स्थिति को अनुमति दी जा सके. साथ ही,NavControllerकोNavHostसे बाहर के कंपोज़ेबल (जैसे कि सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट किया जा सके.
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
ज़्यादा जानकारी के लिए, Compose Navigation गाइड देखें.
एक से ज़्यादा बैक स्टैक
NavController, डेस्टिनेशन की पिछली गतिविधियों को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate() करते हैं, तो वह उसे पिछली गतिविधियों में जोड़ देता है. इसके अलावा, जब आप popBackStack() को कॉल करते हैं या सिस्टम के 'वापस जाएं' बटन को ट्रिगर करते हैं, तो वह डेस्टिनेशन को पिछली गतिविधियों से हटा देता है. बैक स्टैक को सेव करने और पिछली गतिविधियों को वापस लाने की सुविधा को सपोर्ट करने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद मौजूदा NavOptions क्लास और <action> एलिमेंट को बड़ा किया गया है.
इस बदलाव के तहत, onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), और NavigationView.setupWithNavController() के NavigationUI तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और रीस्टोर करते हैं. इससे कोड में कोई बदलाव किए बिना, कई बैक स्टैक के लिए सहायता मिलती है. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, एक से ज़्यादा बैक स्टैक के साथ इंटिग्रेट करने का यह सबसे सही तरीका है.
स्टेट को सेव और रीस्टोर करने के लिए इस्तेमाल किए जाने वाले एपीआई, कई प्लैटफ़ॉर्म पर उपलब्ध हैं:
नेविगेशन एक्सएमएल में,
<action>एलिमेंट अबapp:popUpToSaveStateऔरapp:restoreStateके बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससेapp:popUpToके ज़रिए पॉप अप किए गए किसी भी डेस्टिनेशन की स्थिति को सेव किया जा सकता है. साथ ही,app:destinationके तौर पर पास किए गए डेस्टिनेशन से जुड़ी स्थिति को वापस लाया जा सकता है:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />navOptionsKotlin DSL में,popUpToबिल्डर परrestoreStateबूलियन प्रॉपर्टी औरsaveStateबूलियन प्रॉपर्टी जोड़ी जा सकती हैं:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }NavOptions.Builderके ज़रिए मैन्युअल तरीके सेNavOptionsऑब्जेक्ट बनाते समय,setPopUpTo()के लिएsetRestoreState()और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह एक अतिरिक्तsaveStateपैरामीटर लेता है.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);popBackStack()को प्रोग्राम के हिसाब से किए जाने वाले कॉल में, अब एक औरsaveStateपैरामीटर शामिल किया जा सकता है.clearBackStack()तरीके का इस्तेमाल करके,popBackStack()याpopUpToSaveStateके साथ सेव किए गए किसी भी स्टेट को मिटाया जा सकता है.
सभी मामलों में, NavController हर NavBackStackEntry की स्थिति को सेव और रीस्टोर करेगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel के सभी इंस्टेंस शामिल हैं. Navigator एपीआई को अपडेट किया गया है, ताकि हर Navigator अपनी स्थिति को सेव और वापस ला सके.
व्यवहार में बदलाव
NavDeepLinkBuilderअबcreatePendingIntent()से मिलेPendingIntentमेंPendingIntent.FLAG_IMMUTABLEजोड़ता है. इससे यह पक्का होता है कि Android 12 को टारगेट करते समय, यह एपीआई उम्मीद के मुताबिक काम करता है.- नेविगेशन अब लाइफ़साइकल
2.3.1पर निर्भर करता है. साथ ही, अबsetGraph(),popBackStack(),navigateUp(), औरnavigate()को मार्क करता है. ये ऐसे तरीके हैं जोNavBackStackEntryLifecycleको अपडेट करते हैं. इन्हें@MainThreadके तौर पर मार्क किया जाता है. इससे नेविगेशन, लाइफ़साइकल2.3.0में लागू किए गए मुख्य थ्रेड एनफ़ोर्समेंट के साथ अलाइन हो जाता है. - डीप लिंक अब यह पुष्टि करते हैं कि
Uriमें सभी ज़रूरी तर्क (जिनकी डिफ़ॉल्ट वैल्यू नहीं होती) मौजूद हैं. NavDeepLinkपार्स किए गए आर्ग्युमेंट में अब पाउंड के निशान को उसी तरह से माना जाता है जिस तरह से पाथ सेगमेंट के बीच सेपरेटर के तौर पर सवाल के निशान को माना जाता है. इससे पाउंड के निशान के बीच आर्ग्युमेंट को स्पैन करने से रोका जा सकता है.- कार्रवाइयां जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड अब डिफ़ॉल्ट वैल्यू वाले आर्ग्युमेंट को पैरामीटर के तौर पर इस्तेमाल करने से पहले, डिफ़ॉल्ट वैल्यू के बिना वाले आर्ग्युमेंट को पैरामीटर के तौर पर इस्तेमाल करता है.
- आर्ग्युमेंट जनरेट करते समय, Safe Args अब डिफ़ॉल्ट वैल्यू वाले पैरामीटर से पहले, डिफ़ॉल्ट वैल्यू के बिना वाले पैरामीटर रखता है.
- Safe-Args अब Android Gradle प्लगिन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको
applicationIdTextResourceका इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी.
सामान्य समस्याएं
- नेविगेशन
2.5.0-alpha01में ठीक किया गया:by navGraphViewModels()के ज़रिए बनाए गएViewModelको फ़्रैगमेंट केonCreate()से ऐक्सेस करने पर,IllegalStateExceptionदिखेगा. (b/213504272) - Navigation
2.5.0-alpha01में ठीक किया गया: Safe Args 2.4.0, Android Gradle प्लगिन 7.1.0 और इसके बाद के वर्शन के साथ काम नहीं करता. (b/213086135) - एक से ज़्यादा नेस्ट किए गए नेविगेशन ग्राफ़ के साथ डीप लिंकिंग करने पर, पूरा बैकस्टैक सही तरीके से नहीं बनता. (b/214383060)
वर्शन 2.4.0-rc01
15 दिसंबर, 2021
androidx.navigation:navigation-*:2.4.0-rc01 रिलीज़ हो गया है. वर्शन 2.4.0-rc01 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
NavDeepLinkपार्स किए गए आर्ग्युमेंट में, अब पाउंड के निशान को उसी तरह से माना जाता है जिस तरह से सवाल के निशान को आर्ग्युमेंट के बीच सेपरेटर के तौर पर माना जाता है. (I21309, b/180042703)
गड़बड़ियां ठीक की गईं
- डीपलिंक अब उन आर्ग्युमेंट को अनदेखा नहीं करेंगे जिनकी वैल्यू, प्लेसहोल्डर के नाम के जैसी है. (If8017, b/207389470)
NavControllerको वापस लाने के बाद, ट्रांज़िशन का इस्तेमाल करके नेस्ट किए गए डेस्टिनेशन को पॉप करने पर,NavControllerअब क्रैश नहीं होगा. (I0f7c9, b/205021623)- अमान्य
startDestinationका इस्तेमाल करने पर, गड़बड़ी का मैसेज अब डिफ़ॉल्ट रूप से शुरुआती डेस्टिनेशन के रास्ते पर दिखेगा. हालांकि, ऐसा तब होगा, जब कोई रास्ता उपलब्ध हो. (I86b9d, b/208041894)
Navigation Compose से जुड़ी गड़बड़ियां ठीक की गईं
- बॉटम नेविगेशन मेन्यू आइटम का इस्तेमाल करके, शुरुआती जगह और दूसरी जगह के बीच तेज़ी से स्विच करने की वजह से होने वाली संभावित क्रैश की समस्या को ठीक किया गया है. (Ic8976, b/208887901)
- कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस बंद होने के बाद, डायलॉग डेस्टिनेशन अब स्क्रीन पर सबसे ऊपर सही तरीके से वापस आ जाते हैं. (I4c0dc, b/207386169)
- उस समस्या को ठीक किया गया है जिसमें डायलॉग को खारिज करने पर, डायलॉग के
NavBackStackEntryसेViewModelको वापस पाने की कोशिश करने पर गड़बड़ी होती थी. (I6b96d, b/206465487) - Navigation Compose के
NavHostके साथactivityडेस्टिनेशन का इस्तेमाल करने पर, बार-बार कंपोज़िशन होने की समस्या ठीक की गई. (I8f64c) - नेविगेशन कंपोज़ में एक समस्या ठीक की गई है. इसमें कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस बंद होने के बाद, पुरानी गतिविधि का रेफ़रंस सेव रहता था. (I4efcb, b/204905432)
Safe Args से जुड़ी गड़बड़ियां ठीक की गईं
SafeArgsप्रोसेस बंद होने के बाद, कस्टम पार्सलेबल ऐरे को वापस लाने की कोशिश करने पर अब क्रैश नहीं होता. (I618e8, b/207315994)- सेफ़ आर्ग्युमेंट में मौजूद एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, बूलियन ऐरे में
nullवैल्यू नहीं होती थी. (I8c396, b/174787525)
वर्शन 2.4.0-beta02
3 नवंबर, 2021
androidx.navigation:navigation-*:2.4.0-beta02 रिलीज़ हो गया है. वर्शन 2.4.0-beta02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- एक्सप्लिसिट और इंप्लिसिट
, दोनों तरह के डीप लिंक को हैंडल करने के दौरान, अब किसी दूसरे ग्राफ़ पर नेविगेट करते समय
saveStateफ़्लैग अपने-आप जुड़ जाता है. इससे यह पक्का होता है किNavigationUI.setupWithNavControllerजैसे कोड और एक से ज़्यादा बैक स्टैक का इस्तेमाल करने वाले कोड, उम्मीद के मुताबिक काम करते हैं. (Ic8807)
व्यवहार में बदलाव
- डीप लिंक पैटर्न को अब इनफ़्लेशन के दौरान नहीं, बल्कि NavDeepLink में लेज़ी तरीके से कंपाइल किया जाता है. इससे डीप लिंक शामिल करने वाले नेविगेशन ग्राफ़ के इन्फ़्लेशन टाइम में सुधार होना चाहिए. (b8d257, b/184149935)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
NavHostको सीधे तौर पर गतिविधि केsetContent()में जोड़ने पर, NavBackStackEntries कोLifecycle.State.STARTEDसेLifecycle.State.CREATEDमें ले जाने के बाद, नीचे की ओर पुश किया जा रहा था. (Ia5ac1, b/203536683) - रेस कंडीशन को ठीक किया गया है. इसमें, डायलॉग के दिखने से पहले बैक स्टैक से
DialogFragmentडेस्टिनेशन को हटाने पर, डायलॉग खारिज नहीं होता था. इससे, उपयोगकर्ता के डायलॉग को मैन्युअल तरीके से खारिज करने पर क्रैश हो जाता था. (I687e5) - उस समस्या को ठीक किया गया है जिसमें
NavigationUIपर मौजूदonNavDestinationSelectedAPI,trueदिखाता था. ऐसा तब होता था, जब आपने उस नेविगेशन ग्राफ़ कोnavigate()नहीं किया होता था. अब यह उसी लॉजिक का इस्तेमाल करता है जिसका इस्तेमालsetupWithNavController, सिर्फ़ मौजूदा जगह से जुड़ेMenuItemको चुनने के लिए करता है. इसके लिए, वह जगह केhierarchyका इस्तेमाल करता है. (I2b053)
वर्शन 2.4.0-beta01
27 अक्टूबर, 2021
androidx.navigation:navigation-*:2.4.0-beta01 रिलीज़ हो गया है. वर्शन 2.4.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब आईडी के बजाय, किसी रूट के साथ
by navGraphViewModelका इस्तेमाल किया जा सकता है. इससे, फ़्रैगमेंट के साथ Navigation Kotlin DSL का इस्तेमाल करने में मदद मिलेगी. (I901e3, b/201446416)
एपीआई में हुए बदलाव
visibleEntriesAPI को अब एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. (I93f6f)
गड़बड़ियां ठीक की गईं
- एक ही स्क्रीन के बीच आगे-पीछे नेविगेट करने पर, ट्रांज़िशन में रुकावट आने पर ViewModels अब डिस्ट्रॉय नहीं होंगे (Id52d8, b/200817333)
NavDestinationमें डीप लिंक जोड़ते समय, अब शून्य हो सकने वालेNavDeepLinkआर्ग्युमेंट के लिए डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं होती. (I5aad4, b/201320030)- अब अलग-अलग लाइफ़साइकल वाले NavBackStackEntries को एक जैसा नहीं माना जाता. इसका मतलब है कि singleTop का इस्तेमाल करके नेविगेशन करने पर, NavHost सभी डेस्टिनेशन को फिर से कंपोज़ करेगा. साथ ही, बॉटम मेन्यू आइटम को फिर से चुनने पर भी ऐसा करेगा. (I1b351, b/196997433)
AbstractListDetailFragmentसे जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से,onCreateListPaneView()से मिले लिस्ट पैन पर मौजूदlayout_widthऔरlayout_weightएट्रिब्यूट को गलत तरीके से हैंडल किया जाता था या अनदेखा किया जाता था. (f5fbf3)- डायलॉग डेस्टिनेशन की विज़ुअल स्थिति अब
DialogFragmentNavigatorकी स्थिति के साथ सही तरीके से सिंक होती है. इसका मतलब है कि अबDialogFragmentके लिए, एसिंक्रोनसdismiss()एपीआई को मैन्युअल तरीके से कॉल करने पर, खारिज किए गए डायलॉग बॉक्स के ऊपर मौजूद सभी डायलॉग बॉक्स डेस्टिनेशन सही तरीके से हट जाते हैं. हालांकि, इससे उन मामलों पर कोई असर नहीं पड़ता जिनमें डायलॉग को खारिज करने के लिएpopUpToयाpopBackStack()का इस्तेमाल किया जाता है. (I77ba2) AbstractAppBarOnDestinationChangedListenerमें अबonDestinationChanged()के लिए, गड़बड़ी के मैसेज ज़्यादा साफ़ तौर पर दिखते हैं. (Ie742d)
वर्शन 2.4.0-alpha10
29 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha10 रिलीज़ हो गया है. वर्शन 2.4.0-alpha10 में ये बदलाव शामिल हैं.
नई सुविधाएं
- NavController अब
visibleEntriesStateFlow (Ia964e) के ज़रिए, दिखने वाले सभीNavBackStackEntryइंस्टेंस की सूची को वापस पाने की सुविधा देता है rememberNavController()अबNavigatorइंस्टेंस का एक वैकल्पिक सेट लेता है, जिसे लौटाए गएNavControllerमें जोड़ा जाएगा. इससे, संगीत के साथ गाने की सुविधा जैसे वैकल्पिक नेविगेटर को बेहतर तरीके से सपोर्ट किया जा सकेगा. (I4619e)
गड़बड़ियां ठीक की गईं
- गतिविधि को फिर से बनाने पर, डाइनैमिक नेविगेशन अब क्रैश नहीं होगा. (Ifa6a3, b/197942869)
- सिस्टम के बैक बटन से जुड़ी समस्या को ठीक किया गया है. यह समस्या सिर्फ़ तब होती है, जब कंपोज़ेबल डेस्टिनेशन पर वापस जाने के बाद, उसमें
NavHostमौजूद होता है. (3ed148, b/195668143) - SafeArgs अब
fromBundle()औरfromSavedStateHandle()के लिए, पैरामीटर के सही क्रम में आर्ग्युमेंट जनरेट करता है. (I824a8, b/200059831)
वर्शन 2.4.0-alpha09
15 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha09 रिलीज़ हो गया है. वर्शन 2.4.0-alpha09 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
clearBackStack()तरीके का इस्तेमाल करके,popBackStack()याpopUpToSaveStateके साथ सेव किए गए किसी भी स्टेट को मिटाया जा सकता है. (I80a0f) - अब नेस्ट किए गए नेविगेशन ग्राफ़ के बिल्डर में, आर्ग्युमेंट और/या डीप लिंक की सूची पास की जा सकती है. ये सूची, नतीजे के तौर पर मिले ग्राफ़ में अपने-आप जुड़ जाएगी. (I8a470, b/182545357)
एपीआई में हुए बदलाव
navArgumentKotlin DSL फ़ंक्शन अबnavigation-composeके बजायnavigation-commonका हिस्सा है. इस सुविधा का इस्तेमाल जारी रखने के लिए, आपको इंपोर्ट किए गए डेटा को अपडेट करना होगा. (I1d095)
व्यवहार में बदलाव
- आर्ग्युमेंट जनरेट करते समय, Safe Args अब डिफ़ॉल्ट वैल्यू वाले पैरामीटर से पहले, डिफ़ॉल्ट वैल्यू के बिना वाले पैरामीटर रखता है. (I89709, b/198493585)
गड़बड़ियां ठीक की गईं
- Navigation Compose का इस्तेमाल करते समय, NavGraphs सिर्फ़ तब
DESTROYEDहोंगे, जब उनके सभी चाइल्डDESTROYEDहों. (I86552, b/198741720) - शून्य हो सकने वाले
NavDeepLinkआर्ग्युमेंट के लिए, अब डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं होती. (Ia14ef, b/198689811) - नए ग्राफ़ के साथ
setGraph()को कॉल करने पर, अब सेव की गई सभी पिछली गतिविधियां भी मिट जाएंगी. इसके अलावा, पिछली गतिविधियों को पॉप करने का पिछला तरीका भी काम करेगा. (I97f96) launchSingleTopका इस्तेमाल करते समय,OnDestinationChangedListenerइंस्टेंस औरcurrentBackStackEntryFlowको सूचना न मिलने की समस्या को ठीक किया गया है. (Iaaebc)
डिपेंडेंसी से जुड़े अपडेट
- Navigation Compose अब Activity Compose 1.3.1 पर निर्भर करता है. (I05829)
- नेविगेशन कंपोज़ अब लाइफ़साइकल व्यू मॉडल कंपोज़
2.4.0-beta01पर निर्भर करता है. (Ib86a3)
वर्शन 2.4.0-alpha08
1 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha08 रिलीज़ हो गया है. वर्शन 2.4.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
NavTypeक्लास को बढ़ाकर, कस्टम NavTypes बनाए जा सकते हैं. कस्टम टाइप का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब प्रोग्राम के हिसाब से नेविगेशन ग्राफ़ बनाया जा रहा हो. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए. (I78440, b/196871885)
व्यवहार में बदलाव
- कार्रवाइयां जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड अब डिफ़ॉल्ट वैल्यू वाले आर्ग्युमेंट को पैरामीटर के तौर पर इस्तेमाल करने से पहले, डिफ़ॉल्ट वैल्यू के बिना वाले आर्ग्युमेंट को पैरामीटर के तौर पर इस्तेमाल करता है. (Idb697, b/188855904)
- डीप लिंक अब यह पुष्टि करते हैं कि
Uriमें सभी ज़रूरी तर्क (जिनकी डिफ़ॉल्ट वैल्यू नहीं होती) मौजूद हैं. (#204, b/185527157)
गड़बड़ियां ठीक की गईं
remember()के साथ composable() के अंदरgetBackStackEntryऔरpreviousBackStackEntryका इस्तेमाल करने पर, अब बैक स्टैक में कोई डेस्टिनेशन न होने की वजह से अपवाद नहीं होगा. (I75138, b/194313238)- स्टैक आर्ग्युमेंट को वापस बदलने और
launchSingleTop=trueका इस्तेमाल करने पर, Navigation Compose अब सही तरीके से फिर से कंपोज़ होता है. (Iebd69, b/186392337) - अब 13 या 29 डेस्टिनेशन वाले ग्राफ़ से
setGraphको कॉल करने पर,ArrayIndexOutOfBoundsExceptionनहीं होगा. (I1a9f1, b/195171984) - Args क्लास जनरेट करते समय, SafeArgs java जनरेटर से अब लिंट की चेतावनियां नहीं मिलनी चाहिए. (I1a666, b/185843837)
बाहरी योगदान
- ospixd का धन्यवाद. आपने यह पक्का किया है कि डीप लिंक से यह पुष्टि होती है कि
Uriमें सभी ज़रूरी आर्ग्युमेंट (डिफ़ॉल्ट वैल्यू के बिना वाले) मौजूद हैं. (#204, b/185527157)
वर्शन 2.4.0-alpha07
18 अगस्त, 2021
androidx.navigation:navigation-*:2.4.0-alpha07 रिलीज़ हो गया है. वर्शन 2.4.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose अब कॉन्फ़िगरेशन में बदलाव करने के बाद, स्थिति को सही तरीके से सेव करता है. साथ ही, पिछली गतिविधियों की एक से ज़्यादा सुविधाओं का इस्तेमाल करते समय, ग्राफ़ बदलते समय भी स्थिति को सही तरीके से सेव करता है. (If5a3d, b/195141957)
- एक से ज़्यादा बैक स्टैक के साथ नेविगेशन कंपोज़ का इस्तेमाल करते समय, उसी टैब को फिर से चुनने पर अब खाली स्क्रीन नहीं दिखेगी. (I860dc, b/194925622)
NavHostअबNavBackStackEntryकेLifecycle.Stateमें होने वाले बदलावों को मॉनिटर करता है. इसका मतलब है कि अब फ़्रैगमेंट मेंNavHostका इस्तेमाल करने पर, लाइफ़साइकल में होने वाले बदलावों के साथ-साथ, उसे सही तरीके से फिर से कंपोज़ किया जाएगा. इससे स्क्रीन खाली नहीं रहेगी. (I4eb85, b/195864489)- उस समस्या को ठीक किया गया है जिसमें
DialogFragmentको खारिज करने पर, आपकी गतिविधि को फिर से बनाने के बाद (यानी, कॉन्फ़िगरेशन में बदलाव करने के बाद)NavControllerकी स्थिति सही तरीके से अपडेट नहीं होती थी. (Icd72b) - उस समस्या को ठीक किया गया है जिसमें डायलॉग डेस्टिनेशन पॉप करने पर, NavController के सिस्टम के 'वापस जाएं' बटन को हैंडल करने की सुविधा अपडेट नहीं होती थी. इससे NavController, 'वापस जाएं' बटन को इंटरसेप्ट कर लेता था, भले ही उसके पास पॉप करने के लिए कोई बैक स्टैक न हो. (If3b34)
- Safe-args अब अपने-आप, आर्ग्युमेंट के लिए
toSavedStateHandleमेथड जनरेट करता है. इसका इस्तेमाल,ViewModelकोड की जांच करने के लिए किया जा सकता है. (If1e2d, b/193353880)
वर्शन 2.4.0-alpha06
4 अगस्त, 2021
androidx.navigation:navigation-*:2.4.0-alpha06 रिलीज़ हो गया है. वर्शन 2.4.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AbstractListDetailFragmentपर मौजूदrequireSlidingPaneLayout()औरrequireDetailPaneNavHostFragment()तरीकों का नाम बदलकर, क्रमशःgetSlidingPaneLayout()औरgetDetailPaneNavHostFragment()कर दिया गया है. (I34a08)
व्यवहार में बदलाव
- ऐनिमेशन (जैसे कि
Crossfade) की मदद से नेविगेट करने पर, नए डेस्टिनेशन काLifecycleअब सिर्फ़RESUMEDतक तब पहुंचेगा, जब ऐनिमेशन पूरा हो जाएगा. (If0543, b/172112072, b/194301889) - Navigation Compose
NavHostअब ग्राफ़ को पहली कंपोज़िशन के हिस्से के तौर पर सेट करता है. (Ieb7be)
गड़बड़ियां ठीक की गईं
- नेविगेशन ग्राफ़ के आखिरी डेस्टिनेशन को पॉप करने पर, अब
ClassCastExceptionनहीं दिखता है. (If0543, b/172112072, b/194301889) - ऐसी
NullPointerExceptionको ठीक किया गया है जोUriके बिना डीप लिंक जोड़ने और किसी रूट या डीप लिंक से नेविगेट करने पर होती थी. (938a0c, b/193805425) - Navigation Compose में एक समस्या ठीक की गई है. इसमें डीप लिंक किया गया
NavBackStackEntry,RESUMEDस्थिति तक नहीं पहुंच पाता था. (I192c5) - उस समस्या को ठीक किया गया है जिसमें डायलॉग डेस्टिनेशन को पॉप करने पर, NavController के सिस्टम के बैक बटन को हैंडल करने की सुविधा अपडेट नहीं होती थी. इससे NavController, बैक बटन को इंटरसेप्ट कर लेता था. भले ही, उसके पास पॉप करने के लिए कोई बैक स्टैक न हो. (aosp/1782668)
वर्शन 2.4.0-alpha05
21 जुलाई, 2021
androidx.navigation:navigation-*:2.4.0-alpha05 रिलीज़ हो गया है. वर्शन 2.4.0-alpha05 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- नेविगेशन कंपोज़ का
NavHostअब डेस्टिनेशन के बीच नेविगेट करते समय, हमेशा क्रॉसफ़ेड का इस्तेमाल करता है. (I07049, b/172112072) - अब NavHost के ग्राफ़ में बदलाव किया जा सकता है. अगर किसी ग्राफ़ में startDestination और destinations एक जैसे हैं, तो उन्हें एक जैसा माना जाएगा. साथ ही, वे
NavControllerपिछली गतिविधियां को क्लियर नहीं करेंगे. (I0b8db, b/175392262)
गड़बड़ियां ठीक की गईं
- NavController की स्थिति में फिर से होने वाले अपडेट की वजह से,
NavBackStackEntryसे जुड़ेLifecycleObserverमें मौजूदpopBackStack()को कॉल करते समय होने वालीNoSuchElementExceptionको ठीक किया गया है. (I64621) AbstractListDetailFragmentका इस्तेमाल न किए जाने पर, अबSlidingPaneLayoutको आपके APK से पूरी तरह से हटाया जा सकता है.AbstractListDetailFragment(I611ad)NavGraphऔरNavDestinationअब equals तरीके को बदल देते हैं, इसलिए एक जैसी वैल्यू वाले दो ऑब्जेक्ट को बराबर माना जाएगा. (I166eb, b/175392262)
वर्शन 2.4.0-alpha04
1 जुलाई, 2021
androidx.navigation:navigation-*:2.4.0-alpha04 रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-fragmentआर्टफ़ैक्ट में, अब नएAbstractListDetailFragmentके ज़रिए दो पैन वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. यह फ़्रैगमेंट, सूची वाले पैनल को मैनेज करने के लिएSlidingPaneLayoutका इस्तेमाल करता है. यह सूची वाला पैनल, आपकी सब-क्लास उपलब्ध कराती है. साथ ही, यह फ़्रैगमेंट जानकारी वाले पैनल को मैनेज करने के लिए भीNavHostFragmentका इस्तेमाल करता है. इसे लागू करने के उदाहरण में देखा जा सकता है. (Iac4be, b/191276636)navigation-composeआर्टफ़ैक्ट केNavHostमें अबcomposableके अलावाdialogडेस्टिनेशन भी इस्तेमाल किए जा सकते हैं. ये डायलॉग डेस्टिनेशन, हर कंपोज़ेबलDialogमें दिखाए जाएंगे. ये मौजूदाcomposableडेस्टिनेशन के ऊपर तैरते हुए दिखेंगे. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
एपीआई में हुए बदलाव
NavigatorStateमें मौजूदaddफ़ंक्शन का नाम बदलकरpushकर दिया गया है.add()को किए गए सभी मौजूदा कॉल को push() में बदलना होगा. (Ie89fc, b/172112072)- कस्टम
Navigatorइंस्टेंस अबNavigatorStateपरpushWithTransactionऔरpopWithTransitionएपीआई का इस्तेमाल कर सकते हैं. इससे, डेस्टिनेशन को एसिंक्रोनस तरीके से पुश या पॉप किया जा सकता है. ध्यान दें कि इन एपीआई का इस्तेमाल, शामिल किए गए किसी भी नेविगेटर ने अब तक नहीं किया है. (Ic4d7c, b/172112072)
व्यवहार में बदलाव
NavDeepLinkBuilderअबcreatePendingIntent()से मिलेPendingIntentमेंPendingIntent.FLAG_IMMUTABLEजोड़ता है. इससे यह पक्का होता है कि Android 12 को टारगेट करते समय, यह एपीआई उम्मीद के मुताबिक काम करता है. (If8c52)
गड़बड़ियां ठीक की गईं
<include-dynamic>से जुड़ी समस्या ठीक कर दी गई है. इस समस्या में, ग्राफ़ को पास किए गए आर्ग्युमेंट, डाइनैमिक तौर पर शामिल किए गए ग्राफ़ को सही तरीके से पास नहीं किए जाते थे. (I3e115)@nullकी डिफ़ॉल्ट वैल्यू के साथstring[]आर्ग्युमेंट का इस्तेमाल करके, किसी डेस्टिनेशन पर नेविगेट करते समय होने वालीNullPointerExceptionसमस्या को ठीक किया गया है. (I1fbe8)@Navigator.Nameके लिए ProGuard के नियम जोड़े गए हैं. साथ ही, R8 3.1 के फ़ुल मोड का इस्तेमाल करते समय आने वाली समस्याओं को ठीक किया गया है. (I2add9, b/191654433)1.5.0से पहले केKotlinवर्शन का इस्तेमाल करके ऐप्लिकेशन बनाने पर, SafeArgs अब काम नहीं करेगा. (Icd1ff, b/190739257)
वर्शन 2.4.0-alpha03
16 जून, 2021
androidx.navigation:navigation-*:2.4.0-alpha03 रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डाइनैमिक ग्राफ़ पर जाने के लिए, दो बार
navigate()कॉल करने की ज़रूरत पड़ती थी. इस समस्या को ठीक कर दिया गया है. (I7785c, b/188859835) - नेविगेशन
2.4.0-alpha01में हुई एक समस्या को ठीक किया गया है. इस समस्या की वजह से, टॉप लेवल डेस्टिनेशन पर होने परsetupActionBarWithNavController(), 'ऊपर जाएं' आइकॉन को ठीक से नहीं हटाता था. (I5d443, b/189868637) - NavController के रूट ग्राफ़ को पहले पॉप करने के बाद,
popBackStack()को कॉल करते समय होने वालीIllegalStateExceptionको ठीक किया गया. (I2a330, b/190265699) by navArgs()के लिए ProGuard के नियम अबnavigation-commonया इस पर निर्भर करने वाले किसी भी आर्टफ़ैक्ट का इस्तेमाल करते समय सही तरीके से लागू होते हैं. (I68800, b/190082521)OnDestinationChangedListenerको पहली बार कॉलबैक मिलने पर,navigate()को अब उस डेस्टिनेशन के साथ दूसरा कॉलबैक मिलेगा जिस पर वह नेविगेट किया गया था. (Ie5f9e, b/190228815)- डाइनैमिक फ़ीचर मॉड्यूल और AGP 7.0+ के साथ Safe Args का इस्तेमाल करने पर, अब यह क्रैश नहीं होता. (I69518, b/189966576)
आम समस्या
- Kotlin के पुराने वर्शन पर निर्भरता की वजह से, Gradle
6.7.0का इस्तेमाल करते समय Safe Args मेंUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’गड़बड़ी होगी. Gradle 7.0 का इस्तेमाल करके, इस समस्या को ठीक किया जा सकता है. (b/190739257)
वर्शन 2.4.0-alpha02
2 जून, 2021
androidx.navigation:navigation-*:2.4.0-alpha02 रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब Activity, Fragment, और Dialog डेस्टिनेशन के साथ-साथ, पूरे DynamicNavigation Kotlin DSL के लिए रास्तों का इस्तेमाल किया जा सकता है. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUIने कुछ समय के लिए एक्सपेरिमेंटल एपीआई जोड़े हैं, ताकि आपको अपनी स्थिति सेव करने की सुविधा से ऑप्ट आउट करने का विकल्प मिल सके. स्टेट को हमेशा सेव करना सही तरीका है. हालांकि, अब भी ऐसी पुरानी लाइब्रेरी (जैसे, बनाए रखे गए फ़्रैगमेंट) का इस्तेमाल किया जा रहा है जिन्हें बंद कर दिया गया है. स्टेट को सेव करते समय, इनका इस्तेमाल नहीं किया जा सकता. इसलिए, ऐप्लिकेशन के पास ऐसे एपीआई का इस्तेमाल बंद करने का विकल्प होता है जो काम नहीं करते. (Idf93c)नेविगेशन में अब
findDestination()औरgetHierarchy()एपीआई उपलब्ध हैं. इनका इस्तेमाल, कस्टम NavigationUI को लागू करने के लिए किया जा सकता है.findDestination(),NavGraphपर एक एक्सटेंशन फ़ंक्शन है. यह ग्राफ़ में डेस्टिनेशन का पता लगाएगा.getHierarchy(),NavDestinationपर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि दिया गया डेस्टिनेशन, किसी दूसरे डेस्टिनेशन की हैरारकी में है या नहीं.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }NavigationUI के उन तरीकों को अपडेट किया गया है जिनमें
BottomNavigationViewका इस्तेमाल किया जाता था. अब इनमें Material1.4.0,NavigationBarViewमें पेश की गई इसकी सुपरक्लास का इस्तेमाल किया जाएगा. इससे इन तरीकों का इस्तेमालNavigationRailViewके साथ किया जा सकता है. (Ib0b36, b/182938895)एक्सएमएल के ज़रिए
<action>एलिमेंट को बड़ा करते समय, ऐनिमेशन एट्रिब्यूट,app:enterAnim="?attr/transitionEnter"सिंटैक्स का इस्तेमाल करके आपकी थीम से लिए गए एट्रिब्यूट का इस्तेमाल कर सकते हैं. (I07bc1, b/178291654)
एपीआई में हुए बदलाव
- आईडी का इस्तेमाल करने वाले Kotlin डीएसएल बिल्डर अब काम नहीं करते. इसलिए, इन्हें रास्तों का इस्तेमाल करने वाले बिल्डर से बदल देना चाहिए (I85b42, b/188816479) (I9f58f, b/188816479)
गड़बड़ियां ठीक की गईं
DialogFragmentNavigatorअबNavigatorState.pop()एपीआई का इस्तेमाल करता है, ताकिNavControllerको यह सूचना दी जा सके कि सिस्टम के बैक बटन को दबाकर या डायलॉग के बाहर क्लिक करके, डायलॉग को खारिज कर दिया गया है. इससे यह पक्का किया जा सकेगा किNavControllerकी स्थिति हमेशा नेविगेटर की स्थिति के साथ सिंक रहे. (I2ead9)onDestinationChangedकॉलबैक का इस्तेमाल करके,OnDestinationChangedListenersकी सूची में बदलाव करने पर, नेविगेशन अबConcurrentModificationExceptionनहीं देता. (Ib1707, b/188860458)Kotlin में दिशा-निर्देश वाली प्रॉपर्टी जनरेट करने की कोशिश करते समय, Safe Args अब क्रैश नहीं होता. (Id2416, b/188564435)
NavDestination पर setId तरीके को अब
@IdResके साथ सही तरीके से एनोटेट किया गया है, इसलिए यह सिर्फ़ संसाधन आईडी स्वीकार करता है. (I69b80)findNodeका int पैरामीटर अबresidके बजायresIdहै. (I7711d)
डिपेंडेंसी अपडेट
- Safe-Args अब Android Gradle प्लगिन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको
applicationIdTextResourceका इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी. (I6d67b, b/172824579)
वर्शन 2.4.0-alpha01
18 मई, 2021
androidx.navigation:navigation-*:2.4.0-alpha01 रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavControllerपर मौजूदcurrentBackStackEntryAsFlow()तरीके से, एकFlowमिलता है. यह तब ट्रिगर होता है, जब मौजूदाNavBackStackEntryबदलता है. इस फ़्लो का इस्तेमाल,OnDestinationChangedListenerको मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है. (I19c4a, #89, b/163947280)
एक से ज़्यादा बैक स्टैक
NavController, डेस्टिनेशन की पिछली गतिविधियों को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate() करते हैं, तो वह उसे पिछली गतिविधियों में जोड़ देता है. इसके अलावा, जब आप popBackStack() को कॉल करते हैं या सिस्टम के 'वापस जाएं' बटन को ट्रिगर करते हैं, तो वह डेस्टिनेशन को पिछली गतिविधियों से हटा देता है. बैक स्टैक को सेव और रीस्टोर करने की सुविधा देने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद <action> एंट्री और मौजूदा NavOptions क्लास को बड़ा किया गया है. (b/80029773)
इस बदलाव के तहत, onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), और NavigationView.setupWithNavController() के NavigationUI तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और रीस्टोर करते हैं. इससे कोड में कोई बदलाव किए बिना, कई बैक स्टैक के लिए सहायता मिलती है. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, एक से ज़्यादा बैक स्टैक के साथ इंटिग्रेट करने का यह सबसे सही तरीका है. (Ie07ca)
स्टेट को सेव और रीस्टोर करने के लिए इस्तेमाल किए जाने वाले एपीआई, कई प्लैटफ़ॉर्म पर उपलब्ध हैं:
नेविगेशन एक्सएमएल में,
<action>एलिमेंट अबapp:popUpToSaveStateऔरapp:restoreStateके बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससेapp:popUpToके ज़रिए पॉप अप किए गए किसी भी डेस्टिनेशन की स्थिति को सेव किया जा सकता है. साथ ही,app:destinationके तौर पर पास किए गए डेस्टिनेशन से जुड़ी स्थिति को वापस लाया जा सकता है:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />navOptionsKotlin DSL में,popUpToबिल्डर परrestoreStateबूलियन प्रॉपर्टी औरsaveStateबूलियन प्रॉपर्टी जोड़ी जा सकती हैं:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }NavOptions.Builderके ज़रिए मैन्युअल तरीके सेNavOptionsऑब्जेक्ट बनाते समय,setPopUpTo()के लिएsetRestoreState()और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह एक अतिरिक्तsaveStateपैरामीटर लेता है.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);popBackStack()को प्रोग्राम के हिसाब से किए जाने वाले कॉल में, अब एक औरsaveStateपैरामीटर शामिल किया जा सकता है.
सभी मामलों में, NavController हर NavBackStackEntry की स्थिति को सेव और रीस्टोर करेगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel के सभी इंस्टेंस शामिल हैं. Navigator एपीआई को अपडेट किया गया है, ताकि हर Navigator अपनी स्थिति को सेव और वापस ला सके.
Navigation Compose में composable डेस्टिनेशन के लिए इस्तेमाल किए जाने वाले ComposeNavigator और फ़्रैगमेंट के साथ नेविगेशन में <fragment> डेस्टिनेशन के लिए इस्तेमाल किए जाने वाले FragmentNavigator और DynamicFragmentNavigator, दोनों को अपडेट किया गया है. इससे, ये नए नेविगेटर एपीआई का इस्तेमाल कर पाएंगे. साथ ही, स्थिति को सेव और वापस ला पाएंगे.
नेविगेशन के रूट
रास्ता एक String होता है, जो किसी डेस्टिनेशन की खास तौर पर पहचान करता है. पहले इसका इस्तेमाल सिर्फ़ Navigation Compose में किया जाता था. अब यह कॉन्सेप्ट, मुख्य Navigation API का हिस्सा बन गया है. इससे, Navigation Kotlin DSL के ज़रिए ग्राफ़ बनाते समय, पूर्णांक आईडी का इस्तेमाल करने का विकल्प मिलता है. (b/172823546)
ऐसे सभी एपीआई जो सिर्फ़ आईडी लेते थे उनमें अब एक ओवरलोड होता है, जो रूट String लेता है. इसमें navigate(), popBackStack(), popUpTo(), और getBackStackEntry() शामिल हैं.
इससे एपीआई पर कुछ असर पड़ा है:
- Kotlin डीएसएल में
popUpTokotlin प्रॉपर्टी को अब इस्तेमाल नहीं किया जा सकता. इसके बजाय,popUpToIdका इस्तेमाल करें. (I59c73, b/172823546) getStartDestination()API अब काम नहीं करता. उसकी जगहgetStartDestinationId()का इस्तेमाल किया जाता है. (I0887f, b/172823546)
Navigation Compose के पिछले वर्शन से Navigation Compose 2.4.0-alpha01 पर अपग्रेड करने वाले डेवलपर के लिए इसका मतलब है कि एक्सटेंशन के तरीकों पर ये इंपोर्ट अब ज़रूरी नहीं हैं और इन्हें हटा दिया जाना चाहिए:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
KEY_ROUTE आर्ग्युमेंट को NavDestination पर route प्रॉपर्टी से बदल दिया गया है. इससे आपको सीधे navBackStackEntry.destination.route को कॉल करने की सुविधा मिलती है.
एपीआई में हुए बदलाव
- सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे कि
NavTypeसबक्लास) की नल होने की स्थिति में सुधार हुआ है. Kotlin के सभी एक्सटेंशन फ़ंक्शन, जो पहले-ktxआर्टफ़ैक्ट का हिस्सा थे उन्हें उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है.-ktxआर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे. (b/184292145) NavDeepLinkBuilderअब जनरेट किए गए बैक स्टैक में, कई अलग-अलग डेस्टिनेशन जोड़ने की सुविधा देता है. (I3ee0d, b/147913689)DynamicNavHostFragmentके लिए फ़ैक्ट्री फ़ंक्शन जोड़े गए (Icd515, b/175222619)NavBackStackEntryका यूनीक आईडी अब इसके सार्वजनिक एपीआई के हिस्से के तौर पर दिखाया जाता है. (Ie033a)nameऔरargumentफ़ील्ड औरNamedNavArgumentके डिस्ट्रक्चरिंग फ़ंक्शन अब सार्वजनिक तौर पर उपलब्ध हैं. (#174, b/181320559)- एक नया
NavBackStackEntry#provideToCompositionLocalsएक्सटेंशन पेश किया गया है. यह काम के कंपोज़िशन लोकल के लिएNavBackStackEntryउपलब्ध कराता है. (#175, b/187229439)
Safe Args
Safe Args अब हर
NavArgsक्लास के लिएfromSavedStateHandle()तरीका जनरेट करता है. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }Safe Args को KotlinPoet
1.8.0पर निर्भर रहने के लिए अपडेट किया गया. (#172, b/183990444)
व्यवहार में बदलाव
- नेविगेशन अब लाइफ़साइकल
2.3.1पर निर्भर करता है. साथ ही, अबsetGraph(),popBackStack(),navigateUp(), औरnavigate()को मार्क करता है. ये ऐसे तरीके हैं जोNavBackStackEntryLifecycleको अपडेट करते हैं. इन्हें@MainThreadके तौर पर मार्क किया जाता है. इससे नेविगेशन, लाइफ़साइकल2.3.0में लागू किए गए मुख्य थ्रेड एनफ़ोर्समेंट के साथ अलाइन हो जाता है. (b/171125856) - डीप लिंक से Enum आर्ग्युमेंट को पार्स करने की सुविधा अब केस-इनसेंसिटिव है. इससे
http://www.example.com/redजैसे डीप लिंक कोwww.example.com/{color}डीप लिंक से मैच किया जा सकता है. भले ही, Enum की वैल्यूREDहो. (#152, b/135857840)
Compose Compatibility
androidx.navigation:navigation-compose:2.4.0-alpha01सिर्फ़ Compose के1.0.0-beta07और इसके बाद के वर्शन के साथ काम करता है.
गड़बड़ियां ठीक की गईं
- इस समस्या को ठीक किया गया है. इसमें, आखिर में मौजूद आर्ग्युमेंट के प्लेसहोल्डर को उन डीप लिंक से ज़्यादा प्राथमिकता मिलती थी जिनके सफ़िक्स पूरी तरह से मेल खाते थे. (#153, b/184072811)
NavHostFragmentअब कस्टम नेविगेटर के साथ काम करता है. ये नेविगेटर, डिफ़ॉल्टDialogFragmentNavigatorके तौर पर एक ही@Navigator.Name("dialog")का इस्तेमाल करते हैं. (Ib1c2c, b/175979140)NavigatorProvider#addNavigatorके व्यवहार को बेहतर बनाया गया है, ताकि एक ही इंस्टेंस के साथ इसे बार-बार कॉल करने पर समस्याएं न हों. (#176, b/187443146)
बाहरी योगदान
- simonschiller का धन्यवाद. उन्होंने Safe Args के लिए, हर
NavArgsक्लास के लिएfromSavedStateHandle()तरीके को जनरेट करने की सुविधा बनाई है. (#122, b/136967621) - डीप लिंक से Enum आर्ग्युमेंट को पार्स करने के लिए, केस-इनसेंसिटिव बनाने के लिए धन्यवाद Bradleycorn. (#152, b/135857840)
- osipxd का धन्यवाद. उन्होंने उस समस्या को ठीक किया है जिसमें ट्रेलिंग आर्ग्युमेंट प्लेसहोल्डर, उन डीप लिंक से ज़्यादा प्राथमिकता लेते थे जिनका सफ़िक्स पूरी तरह से मेल खाता था. (#153, b/184072811)
- Safe Args को KotlinPoet
1.8.0पर निर्भर बनाने के लिए, tatocaster का धन्यवाद. (#172, b/183990444) nameऔरargumentफ़ील्ड बनाने के लिए धन्यवाद jossiwolf. साथ ही,NamedNavArgumentके डिस्ट्रक्चरिंग फ़ंक्शन को सार्वजनिक करने के लिए भी धन्यवाद. (#174, b/181320559)- jossiwolf को धन्यवाद. उन्होंने एक नया
NavBackStackEntry#provideToCompositionLocalsएक्सटेंशन पेश किया है, जो काम के कंपोज़िशन लोकल के लिएNavBackStackEntryउपलब्ध कराता है. (#175, b/187229439) - jossiwolf को धन्यवाद. उन्होंने
NavigatorProvider#addNavigatorके व्यवहार को बेहतर बनाया है, ताकि एक ही इंस्टेंस के साथ इसे बार-बार कॉल करने पर समस्याएं न हों. (#176, b/187443146)
Navigation Compose का वर्शन 1.0.0
वर्शन 1.0.0-alpha10
7 अप्रैल, 2021
androidx.navigation:navigation-compose:1.0.0-alpha10 रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavHostअबModifierस्वीकार करता है. इसे कंपोज़ेबल कंटेनर को पास किया जाता है. यह कंटेनर, डेस्टिनेशन कंपोज़ेबल को रैप करता है. (I85aca, b/175125483)
गड़बड़ियां ठीक की गईं
NavHostअब तब भी काम करता है, जबOnBackPressedDispatcherOwnerनहीं मिलता है. ऐसा तब होता है, जबNavHostका प्रिव्यू देखा जा रहा हो. (I7d8b4)- Navigation Compose अब Navigation
2.3.5पर निर्भर करता है. इससेNavHostडेस्टिनेशन के अंदरBackHandlerका इस्तेमाल करते समय होने वाली समस्या ठीक हो गई है. (I7e63b, b/182284739)
वर्शन 1.0.0-alpha09
10 मार्च, 2021
androidx.navigation:navigation-compose:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwner.currentअब एक शून्य हो सकने वालाViewModelStoreOwnerदिखाता है, ताकि यह बेहतर तरीके से तय किया जा सके कि मौजूदा कंपोज़िशन मेंViewModelStoreOwnerउपलब्ध है या नहीं. जिन एपीआई के लिएViewModelStoreOwnerकी ज़रूरत होती है वे अब भी अपवाद दिखाते हैं. जैसे,viewModel()औरNavHost. ऐसा तब होता है, जबViewModelStoreOwnerसेट नहीं किया जाता. (Idf39a)
गड़बड़ियां ठीक की गईं
- Navigation Compose अब Navigation 2.3.4 पर निर्भर करता है. इसमें, ग्राफ़ सेट होने के बाद एक ही ViewModelStore ऑब्जेक्ट को सेट करने की कोशिश करने से जुड़ी समस्या को ठीक किया गया है. (I65c24, b/177825470)
वर्शन 1.0.0-alpha08
24 फ़रवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavHostअब उस डेस्टिनेशन केNavBackStackEntryके साथLocalSavedStateRegistryOwnerCompositionLocal को पॉप्युलेट करता है. इससे यह पक्का होता है किSavedStateRegistryमें सीधे तौर पर सेव किया गया कोई भी स्टेट, डेस्टिनेशन के साथ सेव और रीस्टोर किया जाएगा. (I435d7, b/179469431)
वर्शन 1.0.0-alpha07
10 फ़रवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
composableडेस्टिनेशन के लिएviewModel()की सुविधा देने के लिए, Navigation Compose अब Lifecycle ViewModel Compose 1.0.0-alpha01 पर निर्भर करता है. (I7a374)NavHostअब Activity-Compose 1.3.0-alpha01 से मिले नएLocalOnBackPressedDispatcherOwnerका इस्तेमाल करता है, ताकिNavControllerपर सेट किए गएOnBackPressedDispatcherको हासिल किया जा सके. (I65b12)
वर्शन 1.0.0-alpha06
28 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavControllerमेंgetBackStackEntry(route: String)एक्सटेंशन मेथड जोड़ा गया है. यह मेथड, उससे जुड़ाNavBackStackEntryदिखाता है. (If8931)
वर्शन 1.0.0-alpha05
13 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
इसे Compose 1.0.0-alpha10 पर निर्भर रहने के लिए अपडेट किया गया है.
वर्शन 1.0.0-alpha04
16 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
- Compose
1.0.0-alpha09के साथ काम करने के लिए अपडेट किया गया.
वर्शन 1.0.0-alpha03
2 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस बंद होने और फिर से शुरू होने के बाद,
popBackStack()औरnavigateUp()काम नहीं करते थे. (Icea47, b/173281473) - अब NavHost में मौजूद नेस्ट किए गए ग्राफ़ पर नेविगेट करने की सुविधा ठीक से काम करती है. (I0948d, b/173647694)
वर्शन 1.0.0-alpha02
11 नवंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन कंपोज़ अब popUpTo और launchSingleTop ऑपरेशंस का इस्तेमाल करने के लिए, NavOptions के साथ काम करता है (If96c3, b/171468994)
- नेविगेशन फ़ंक्शन जोड़ा गया है. यह आईडी के बजाय रूट लेता है. इससे आपको Navigation Compose DSL में नेस्ट किए गए ग्राफ़ बनाने की अनुमति मिलती है. (I1661d)
- NavHost (Ie620e) के लिए पैरामीटर की सूची में, अब route से पहले startDestination आता है
- अब NavHost कंपोज़ेबल के बाहर, रूट को शुरुआती डेस्टिनेशन के तौर पर इस्तेमाल करके ग्राफ़ बनाया जा सकता है. (Iceb75)
वर्शन 1.0.0-alpha01
28 अक्टूबर, 2020
android.navigation:navigation-compose:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-compose आर्टफ़ैक्ट, Navigation Component और Jetpack Compose के बीच इंटिग्रेशन उपलब्ध कराता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.
इस शुरुआती रिलीज़ में ये सुविधाएं उपलब्ध हैं:
- यह एक
NavHostकंपोज़ेबल है. इसकी मदद से, Kotlin DSL के ज़रिए अपना नेविगेशन ग्राफ़ बनाया जा सकता है. - डेस्टिनेशन लेवल पर लाइफ़साइकल,
ViewModel, और याद रखी गई स्थिति की स्कोपिंग. - सिस्टम के 'वापस जाएं' बटन के साथ अपने-आप इंटिग्रेट होने की सुविधा.
- आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजे वापस भेजने की सुविधा.
rememberNavController()औरcurrentBackStackEntryAsState()में खास हेल्पर कंपोज़ करें, ताकि होस्टिंग की स्थिति को अनुमति दी जा सके. साथ ही,NavControllerकोNavHostसे बाहर के कंपोज़ेबल (जैसे कि सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट किया जा सके.
ज़्यादा जानकारी के लिए, Compose Navigation गाइड देखें.
वर्शन 2.3.5
वर्शन 2.3.5
7 अप्रैल, 2021
androidx.navigation:navigation-*:2.3.5 रिलीज़ हो गया है. वर्शन 2.3.5 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavDeepLinkRequestयाUriका इस्तेमाल करके नेविगेट करते समय, अब आपको डेस्टिनेशन मेंUri, कार्रवाई, और माइम टाइप का ऐक्सेस मिल सकता है. इसके लिए,KEY_DEEP_LINK_INTENTके ज़रिए आर्ग्युमेंट से इंटेंट पाएं. यह सुविधा, बाहरी डीप लिंकिंग के लिए पहले से उपलब्ध है. (I975c3, b/181521877)
गड़बड़ियां ठीक की गईं
OnBackPressedCallbacksको डिस्पैचर में जोड़ा गया है. साथ ही, अबNavBackStackEntryको LifecycleOwner के तौर पर इस्तेमाल किया जा सकता है. इससे, Activity Lifecycle केSTOPPEDहोने के बाद, बैक बटन को सही तरीके से इंटरसेप्ट किया जा सकता है. इसके बाद,STARTED(Iff94f, b/182284739)- डीप लिंक के डोमेन को पार्स करने की सुविधा अब केस-इनसेंसिटिव है. इसका मतलब है कि
www.example.com,www.example.comऔरwww.Example.com, दोनों से मैच करेगा. ध्यान दें कि क्वेरी पैरामीटर के नाम अब भी केस-सेंसिटिव होते हैं. (#144, b/153829033) - उस
NullPointerExceptionको ठीक किया गया है जो तब हो सकती है, जब किसी डेस्टिनेशन में डिफ़ॉल्ट रूप से कई ऐसे आर्ग्युमेंट हों जिनकी वैल्यू कभी भी शून्य नहीं हो सकती. साथ ही, उन आर्ग्युमेंट के सिर्फ़ सबसेट को बदलते समय उस डेस्टिनेशन पर नेविगेट किया जाता है. (aosp/1644827)
डिपेंडेंसी से जुड़े अपडेट
- Navigation Safe Args Gradle प्लगिन अब Kotlin Gradle प्लगिन 1.4.31 पर निर्भर करता है. (aosp/1661058, b/181156413)
बाहरी योगदान
- पुल का अनुरोध
bentrengroveके लिए धन्यवाद, जिससे डीप लिंक डोमेन पार्सिंग केस-इनसेंसिटिव हो जाती है. (#144, b/153829033)
वर्शन 2.3.4
वर्शन 2.3.4
10 मार्च, 2021
androidx.navigation:navigation-*:2.3.4 रिलीज़ हो गया है. वर्शन 2.3.4 में ये बदलाव शामिल हैं.
नई सुविधाएं
ReferenceTypeआर्ग्युमेंट को अब डीपलिंक यूआरआई के हिस्से के तौर पर भेजे जाने पर, सही तरीके से पार्स किया जा सकता है. यह पूर्णांक की रॉ वैल्यू और0xसे शुरू होने वाली हेक्स वैल्यू, दोनों के साथ काम करता है. (#127, b/179166693)- अब
app:argType="float"वाले आर्ग्युमेंट के लिएandroid:defaultValue, पूर्णांक डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे आपको0.0के बजायandroid:defaultValue="0"का इस्तेमाल करने की सुविधा मिलती है. (#117, b/173766247)
गड़बड़ियां ठीक की गईं
- डाइनैमिक सुविधाओं के लिए नेविगेशन की सहायता का इस्तेमाल करते समय, इंस्टॉलेशन की प्रोसेस रुकने की समस्या ठीक की गई. (Ib27a7, b/169636207)
- पहले से सेट किए गए ऑब्जेक्ट के साथ
setViewModelStoreयाsetLifecycleOwnerको कॉल करने पर, अब कोई कार्रवाई नहीं होगी (Idf491, b/177825470) - Safe-Args अब Java का इस्तेमाल करते समय, सही तरीकों पर एनोटेशन को दबा देता है. (I8fbc5, b/179463137)
बाहरी योगदान
JvmNameपुल का अनुरोध के लिए धन्यवाद. यह सुनिश्चित करने के लिए कि डीपलिंक यूआरआई के हिस्से के तौर पर भेजे जाने पर,ReferenceTypeआर्ग्युमेंट को अब सही तरीके से पार्स किया जा सकता है. (#127, b/179166693)tatocasterधन्यवाद. पुल अनुरोध के ज़रिए,defaultValueको किसी ऐसे आर्ग्युमेंट के लिए इस्तेमाल करने की अनुमति दी गई है जिसमेंapp:argType=”float”अब पूर्णांक की डिफ़ॉल्ट वैल्यू के साथ काम करता है. (#117, b/173766247)
वर्शन 2.3.3
वर्शन 2.3.3
27 जनवरी, 2021
androidx.navigation:navigation-*:2.3.3 रिलीज़ हो गया है. वर्शन 2.3.3 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
LifecycleकोCREATEDमें ले जाने से पहले,NavBackStackEntryको पॉप अप करने पर अब क्रैश नहीं होता. (Ie3ba3)- b/171364502 की वजह से हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या में, ऐनिमेशन रिसॉर्स वैल्यू
0वाली किसी गतिविधि पर जाने सेResourceNotFoundExceptionहो जाता था. (I7aedb, b/176819931)
वर्शन 2.3.2
वर्शन 2.3.2
2 दिसंबर, 2020
androidx.navigation:navigation-*:2.3.2 रिलीज़ हो गया है. वर्शन 2.3.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavigationUIमें हुई एक समस्या को ठीक किया गया है. इस समस्या की वजह से,onNavDestinationSelectedके साथ<activity>डेस्टिनेशन का इस्तेमाल करने पर, गतिविधि पर नेविगेट नहीं किया जा सका. (I22e34, b/171364502)- उस समस्या को ठीक कर दिया गया है जिसमें
navigation-dynamic-features-fragmentपर क्लिक करने से, नए इंस्टॉल किए गए डेस्टिनेशन पर कई बार नेविगेट किया जाता था. (aosp/1486056, b/169636207) - उस समस्या को ठीक किया गया है जिसकी वजह से
launchSingleTopका इस्तेमाल करते समय, डिफ़ॉल्ट आर्ग्युमेंट कोOnDestinationChangedListenerइंस्टेंस में नहीं भेजा जाता था. (I2c5cb) - उस समस्या को ठीक किया गया है जिसकी वजह से नेस्ट किए गए नेविगेशन ग्राफ़ पर जाने से, बैक स्टैक पर नया ग्राफ़ इंस्टेंस नहीं बनता था. (Ifc831)
- उस समस्या को ठीक किया गया है जिसमें
navigate()के साथpopUpToका इस्तेमाल करने पर, नेविगेशन ग्राफ़ में मौजूद आखिरी डेस्टिनेशन हट जाता था. हालांकि, नेविगेशन ग्राफ़ तुरंत बंद नहीं होता था और बैक स्टैक से भी नहीं हटता था. (I910a3) - Navigation SafeArgs अब KotlinPoet के वर्शन 1.7.2 का इस्तेमाल करता है. इससे Kotlin के एक्सप्लिसिट एपीआई मोड के साथ काम करने की सुविधा मिलती है. (I918b5)
NavHostFragment.findNavController(Fragment)अब DialogFragment के रूट डेकोर व्यू की भी जांच करता है. इसके अलावा, यह Fragment के हैरारकी और Fragment के व्यू हैरारकी की मौजूदा जांच भी करता है. इससे, आपको उन डायलॉग फ़्रैगमेंट की जांच करने की सुविधा मिलती है जिनमेंFragmentScenarioऔरNavigation.setViewNavController()के साथ नेविगेशन का इस्तेमाल किया जाता है. (I69e0d)
वर्शन 2.3.1
वर्शन 2.3.1
14 अक्टूबर, 2020
androidx.navigation:navigation-*:2.3.1 रिलीज़ हो गया है. वर्शन 2.3.1 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन यूज़र इंटरफ़ेस (यूआई) में डिफ़ॉल्ट ऐनिमेटर संसाधन जोड़ दिए गए हैं. हमारा सुझाव है कि आप डिफ़ॉल्ट ऐनिमेशन संसाधनों के बजाय इनका इस्तेमाल करें. (b/167430145)
- NavOptions अब hashcode और equals तरीकों को बदल देता है (b/161586466)
- नेविगेशन में अब “No destination with ID” IllegalArgumentException में मौजूदा डेस्टिनेशन शामिल है. इससे डेवलपर को डीबग करने में आसानी होगी. (b/168311416)
गड़बड़ियां ठीक की गईं
- Safe Args अब रिटर्न लाइन को रैप नहीं करेगा. भले ही, जनरेट किए गए आर्ग्युमेंट क्लास का नाम 100 वर्णों से ज़्यादा हो. (b/168584987)
डिपेंडेंसी में बदलाव
navigation-uiअब DrawerLayout 1.1.1 पर निर्भर करता है. इससे यह पक्का होता है किNavigationUI,LOCK_MODE_LOCKED_CLOSEDयाLOCK_MODE_LOCKED_OPENका इस्तेमाल करते समय भी ड्रॉअर खोल सकता है. (b/162253907)- Safe Args अब KotlinPoet 1.6.0 (aosp/1435911) पर निर्भर करता है
- Safe Args अब AGP 4.0.1 (aosp/1442337) पर निर्भर करता है
वर्शन 2.3.0
वर्शन 2.3.0
24 जून, 2020
androidx.navigation:navigation-*:2.3.0 रिलीज़ हो गया है. वर्शन 2.3.0 में ये बदलाव शामिल हैं.
2.2.0 के बाद हुए मुख्य बदलाव
- फ़ीचर मॉड्यूल इंटिग्रेशन:
navigation-dynamic-features-runtimeऔरnavigation-dynamic-features-fragmentआर्टफ़ैक्ट की मदद से, फ़ीचर मॉड्यूल में तय किए गए डेस्टिनेशन पर नेविगेट किया जा सकता है. साथ ही, ज़रूरत के मुताबिक फ़ीचर मॉड्यूल के इंस्टॉलेशन को अपने-आप मैनेज किया जा सकता है. ज़्यादा जानकारी के लिए, सुविधा वाले मॉड्यूल की मदद से नेविगेट करना लेख पढ़ें. - नेविगेशन की जांच:
navigation-testingआर्टफ़ैक्ट,TestNavHostControllerउपलब्ध कराता है. इसकी मदद से, मौजूदा डेस्टिनेशन सेट किया जा सकता है. साथ ही, नेविगेशन की कार्रवाइयों के बाद बैक स्टैक की पुष्टि की जा सकती है. ज़्यादा जानकारी के लिए, टेस्ट नेविगेशन देखें. - नतीजा दिखाना: नेविगेशन बैक स्टैक में मौजूद हर डेस्टिनेशन से जुड़ा
NavBackStackEntryअब आपकोSavedStateHandleऐक्सेस करने की अनुमति देता है. इसका इस्तेमाल, सेव किए गए ऐसे छोटे डेटा को सेव करने के लिए किया जा सकता है जिसे बैक स्टैक की किसी खास एंट्री से जोड़ा जाना चाहिए. ज़्यादा जानकारी के लिए, किसी नतीजे को पिछले डेस्टिनेशन पर वापस भेजना लेख पढ़ें. NavigationUIके लिएOpenableका साथ:NavigationUIमेंDrawerLayoutके सभी इस्तेमाल को,Openableइंटरफ़ेस से बदल दिया गया है. इसे CustomView1.1.0में जोड़ा गया है औरDrawerLayoutने इसे DrawerLayout1.1.0में लागू किया है.- डीप लिंक में ऐक्शन और माइम टाइप के लिए सहायता: डीप लिंकिंग की सुविधा को अब
app:uriके साथ-साथapp:actionऔरapp:mimeTypeके लिए भी उपलब्ध कराया गया है.NavControllerअब नईNavDeepLinkRequestक्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन के हिसाब से नेविगेट करने की सुविधा देता है. ज़्यादा जानकारी के लिए, NavDeepLinkRequest का इस्तेमाल करके नेविगेट करना लेख पढ़ें.
मौजूदा समस्याएं
- Manifest Merger में, डीप लिंक ऐक्शन और माइम टाइप की सुविधा अभी उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में मौजूद
<nav-graph>एलिमेंट से जनरेट हुए किसी भी<intent-filter>एलिमेंट में,<data>एलिमेंट में आपका माइम टाइप या आपका कस्टम<action>शामिल नहीं होगा. आपको अपने मेनिफ़ेस्ट में सही<intent-filter>को मैन्युअल तरीके से जोड़ना होगा.
वर्शन 2.3.0-rc01
10 जून, 2020
androidx.navigation:navigation-*:2.3.0-rc01 रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेस्टिनेशन के ऐसे इंस्टेंस को
singleTopके साथ आर्ग्युमेंट वाले दूसरे इंस्टेंस से बदलते समय,NullPointerExceptionको ठीक किया गया. (b/158006669) NavControllerसे जनरेट होने वाली सभीdestination is unknownअपवादों के लिए, अब डीबग करने से जुड़ी अतिरिक्त जानकारी उपलब्ध है. इससेNavControllerकी स्थिति का पता लगाने में मदद मिलती है. (b/157764916)
वर्शन 2.3.0-beta01
20 मई, 2020
androidx.navigation:navigation-*:2.3.0-beta01 रिलीज़ हो गए हैं. वर्शन 2.3.0-beta01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद,
LifecycleकाNavBackStackEntryठीक से अपडेट नहीं होता था. (b/155218371) OnDestinationChangedListenerको कॉल करने से पहले रजिस्टर किए गएOnDestinationChangedListenerइंस्टेंस को अब प्रोसेस बंद होने के बाद, सही तरीके से डेस्टिनेशन पर भेजा जाता है.setGraph()(b/155218371)singleTopका इस्तेमाल करने पर,NavBackStackEntryके तर्क अब सही तरीके से अपडेट हो जाते हैं. साथ ही, अपडेट किए गए तर्क,OnDestinationChangeListenerके सभी इंस्टेंस को भेज दिए जाते हैं. (b/156545508)
डिपेंडेंसी से जुड़े अपडेट
NavigationUIआर्टफ़ैक्ट अब CustomView1.1.0-rc01और DrawerLayout1.1.0-rc01पर निर्भर करता है. (aosp/1309696)
वर्शन 2.3.0-alpha06
29 अप्रैल, 2020
androidx.navigation:navigation-*:2.3.0-alpha06 रिलीज़ हो गया है. (वर्शन 2.3.0-alpha06 में ये बदलाव शामिल हैं.)
नई सुविधाएं
- डीप लिंकिंग की सुविधा को अब
app:actionऔरapp:mimeTypeके लिए भी उपलब्ध कराया गया है. इससे पहले, यह सुविधा सिर्फ़app:uriके लिए उपलब्ध थी. NavController अब नईNavDeepLinkRequestक्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन से नेविगेट करने की सुविधा देता है. (b/136573074, b/135334841)
एपीआई में हुए बदलाव
- डाइनैमिक नेविगेशन डेस्टिनेशन के लिए, Kotlin DSL के साथ काम करने की सुविधा को बेहतर बनाया गया है. (b/148969800)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें नेस्ट किए गए स्टार्ट डेस्टिनेशन का इस्तेमाल करते समय, डीप लिंक इंटेंट को अनदेखा कर दिया जाता था. (b/154532067)
वर्शन 2.3.0-alpha05
15 अप्रैल, 2020
androidx.navigation:navigation-*:2.3.0-alpha05 रिलीज़ हो गया है. वर्शन 2.3.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
<include-dynamic>का इस्तेमाल करके डाइनैमिक ग्राफ़ शामिल करने के लिए, अब आपकोapp:graphPackageतय करने की ज़रूरत नहीं है. इसके बजाय, डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाएगा. इसके लिए,applicationIdमें दशमलव के बादmoduleNameसफ़िक्स जोड़ें. अगर आपकोgraphPackageको पसंद के मुताबिक बनाना है, तो अब${applicationId}प्लेसहोल्डर का इस्तेमाल किया जा सकता है. (b/152696768)- नेविगेशन ग्राफ़ Kotlin DSL अब ऐक्शन के लिए
defaultArgumentsMapदिखाता है. इससे, नेविगेशन एक्सएमएल फ़ाइलों में<action>एलिमेंट के लिए डिफ़ॉल्ट वैल्यू सेट करने की सुविधा मिलती है. (b/150345605)
गड़बड़ियां ठीक की गईं
- Navigation 2.2.2: आपकी गतिविधि में कई
NavHostFragmentइंस्टेंस होने पर, आपके ग्राफ़ के शुरुआती डेस्टिनेशन पर डीप लिंक करते समय होने वालीIllegalStateExceptionको ठीक किया गया है. (b/147378752)
डिपेंडेंसी से जुड़े अपडेट
- अब नेविगेशन, Fragment
1.2.4पर निर्भर करता है. (aosp/1277325) - डाइनैमिक नेविगेशन अब Play Core
1.7.2पर निर्भर करता है. (aosp/1282257)
वर्शन 2.3.0-alpha04
18 मार्च, 2020
androidx.navigation:navigation-*:2.3.0-alpha04 रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Navigation Kotlin DSL में, फ़ीचर मॉड्यूल गतिविधि और फ़्रैगमेंट डेस्टिनेशन के लिए सहायता जोड़ी गई है. (b/148969800)
एपीआई में हुए बदलाव
DynamicExtrasक्लास अब बिल्डर पैटर्न का इस्तेमाल नहीं करती है. इसलिए, इसे सीधे तौर पर बनाया जा सकता है. (aosp/1253671)DynamicActivityNavigatorअब अपने कंस्ट्रक्टर मेंActivityके बजायContextलेता है. (aosp/1250252)
गड़बड़ियां ठीक की गईं
NavigationUIअब खाली लेबल (यानी किandroid:label=””वाला डेस्टिनेशन) को अनदेखा नहीं करता है. साथ ही, अब टाइटल को खाली स्ट्रिंग पर सही तरीके से सेट करता है. (b/148679860)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन डाइनैमिक सुविधाओं के आर्टफ़ैक्ट, अब Play Core
1.6.5पर निर्भर करते हैं. (b/149556401)
वर्शन 2.3.0-alpha03
4 मार्च, 2020
androidx.navigation:navigation-*:2.3.0-alpha03 रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DrawerLayoutक्लास पर निर्भर रहने के बजाय, अबAppBarConfiguration, CustomView1.1.0-alpha02में पेश किए गएOpenableइंटरफ़ेस का इस्तेमाल करता है.DrawerLayout, DrawerLayout1.1.0-alpha04के तौर पर लागू होता है. इससे आपकोNavigationUIके साथOpenableके कस्टम वर्शन इस्तेमाल करने की सुविधा मिलती है. (b/129030452)
गड़बड़ियां ठीक की गईं
navigation-common-ktxProGuard के नियम अब सिर्फ़ उनNavArgsक्लास को सुरक्षित रखते हैं जिनका इस्तेमाल किया जाता है. ये नियम, सभीNavArgsइंस्टेंस को सुरक्षित नहीं रखते. (b/150213558)
डिपेंडेंसी में बदलाव
- नेविगेशन की निर्भरता को Core
1.2.0पर वापस ले जाया गया है. अब यह Core1.1.0पर निर्भर करता है, ताकि डेवलपर को नई डिपेंडेंसी पर जाने के लिए मजबूर न किया जाए. ऐसा तब होता है, जब नेविगेशन Core1.2.0में मौजूद किसी भी नए एपीआई पर निर्भर नहीं होता है.
वर्शन 2.3.0-alpha02
19 फ़रवरी, 2020
androidx.navigation:navigation-*:2.3.0-alpha02 रिलीज़ हो गया है. वर्शन 2.3.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavBackStackEntryकी मदद से, अबSavedStateHandleको ऐक्सेस किया जा सकता है. इसका इस्तेमाल, सेव किए गए कम डेटा को सेव करने के लिए किया जाता है. यह डेटा, किसी खास पिछली गतिविधि एंट्री से जुड़ा होना चाहिए. इस्तेमाल के उदाहरण के लिए, नतीजा दिखाना देखें. (b/79672220)
एपीआई में हुए बदलाव
getCurrentBackStackEntry()औरgetPreviousBackStackEntry()के आसान तरीके जोड़े गए हैं, ताकि मौजूदा और पिछली मंज़िलों के लिएNavBackStackEntryको आसानी से वापस पाया जा सके. (b/79672220)
गड़बड़ियां ठीक की गईं
navigateUp()अब मौजूदा डेस्टिनेशन के आर्ग्युमेंट औरKEY_DEEP_LINK_INTENTको पिछले डेस्टिनेशन पर पास करता है, ताकि आपके ऐप्लिकेशन को अपने टास्क स्टैक पर लॉन्च किया जा सके. (b/147456890)
डिपेंडेंसी में बदलाव
- नेविगेशन अब Core
1.2.0पर निर्भर करता है.
वर्शन 2.3.0-alpha01
5 फ़रवरी, 2020
androidx.navigation:navigation-*:2.3.0-alpha01 रिलीज़ हो गया है. वर्शन 2.3.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नया
navigation-testingआर्टफ़ैक्ट,TestNavHostControllerक्लास उपलब्ध कराता है. यह क्लास, नेविगेशन की जांच करते समय मॉकNavControllerका इस्तेमाल करने का विकल्प देती है. इससे मौजूदा डेस्टिनेशन सेट किया जा सकता है. साथ ही, नेविगेशन ऑपरेशन के बाद बैक स्टैक की पुष्टि की जा सकती है. (b/140884273) - नए
navigation-dynamic-features-fragment(और इसकी ट्रांज़िटिव डिपेंडेंसी,navigation-dynamic-features-runtime) की मदद से, फ़ीचर मॉड्यूल से डेस्टिनेशन या पूरे नेविगेशन ग्राफ़ (<include-dynamic>के ज़रिए) शामिल किए जा सकते हैं. इससे, उन डेस्टिनेशन पर नेविगेट करते समय, मांग पर उपलब्ध फ़ीचर मॉड्यूल को आसानी से इंस्टॉल किया जा सकता है. ज़्यादा जानकारी के लिए, सुविधा वाले मॉड्यूल की मदद से नेविगेट करना लेख पढ़ें. (b/132170186)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.2.1से: क्वेरी पैरामीटर के बिना डीप लिंक अब किसी भी क्वेरी पैरामीटर को सही तरीके से अनदेखा करते हैं. इसके बजाय, वे उन्हें ट्रेलिंग{argument}एलिमेंट में नहीं जोड़ते या डीप लिंक से मैच नहीं करते. (b/147447512) - नेविगेशन
2.2.1से:DrawerArrowDrawableके लिएnavigation-uiProGuard के नियमों को अपडेट कर दिया गया है, ताकि यह पक्का किया जा सके किandroid.enableJetifier=trueकी ज़रूरत न पड़े. (b/147610424) - नेविगेशन
2.2.1से:navigation-common-ktxमॉड्यूल का मेनिफ़ेस्ट पैकेज नाम अब यूनीक है. यहnavigation-runtime-ktxके मेनिफ़ेस्ट पैकेज नाम को शेयर नहीं करता है. (aosp/1141947)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन
2.2.1से: नेविगेशन2.2.1अब लाइफ़साइकल व्यूमॉडल सेव्डस्टेट2.2.0और फ़्रैगमेंट1.2.1पर निर्भर करता है.
वर्शन 2.2.2
वर्शन 2.2.2
15 अप्रैल, 2020
androidx.navigation:navigation-*:2.2.2 रिलीज़ हो गए हैं. वर्शन 2.2.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब आपकी गतिविधि में कई
NavHostFragmentइंस्टेंस होते हैं, तो आपके ग्राफ़ के शुरुआती डेस्टिनेशन पर डीप लिंक करने के दौरान होने वालीIllegalStateExceptionको ठीक किया गया है. (b/147378752) NavigationUIअब खाली लेबल (यानी किandroid:label=””वाला डेस्टिनेशन) को अनदेखा नहीं करता है. साथ ही, अब टाइटल को खाली स्ट्रिंग पर सही तरीके से सेट करता है. इसे पहले Navigation 2.3.0-alpha04 में रिलीज़ किया गया था. (b/148679860)navigation-common-ktxProGuard के नियम अब सिर्फ़ उनNavArgsक्लास को सुरक्षित रखते हैं जिनका इस्तेमाल किया जाता है. ये नियम, सभीNavArgsइंस्टेंस को सुरक्षित नहीं रखते. इसे पहले Navigation 2.3.0-alpha03 में रिलीज़ किया गया था. (b/150213558
डिपेंडेंसी से जुड़े अपडेट
- अब नेविगेशन, Fragment
1.2.4पर निर्भर करता है. (aosp/1277325)
वर्शन 2.2.1
वर्शन 2.2.1
5 फ़रवरी, 2020
androidx.navigation:navigation-*:2.2.1 रिलीज़ हो गया है. वर्शन 2.2.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- क्वेरी पैरामीटर के बिना डीप लिंक अब किसी भी क्वेरी पैरामीटर को सही तरीके से अनदेखा करते हैं. इसके बजाय, वे उन्हें ट्रेलिंग
{argument}एलिमेंट में नहीं जोड़ते या डीप लिंक से मैच नहीं करते. (b/147447512) navigation-uiके लिएDrawerArrowDrawableके ProGuard नियमों को अपडेट किया गया है, ताकि यह पक्का किया जा सके किandroid.enableJetifier=trueकी ज़रूरत न पड़े. (b/147610424)navigation-common-ktxमॉड्यूल का मेनिफ़ेस्ट पैकेज नाम अब यूनीक है. यहnavigation-runtime-ktxके मेनिफ़ेस्ट पैकेज नाम को शेयर नहीं करता है. (aosp/1141947)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन
2.2.1अब Lifecycle ViewModel SavedState2.2.0और Fragment1.2.1पर निर्भर करता है.
वर्शन 2.2.0
वर्शन 2.2.0
22 जनवरी, 2020
androidx.navigation:navigation-*:2.2.0 रिलीज़ हो गया है. वर्शन 2.2.0 में ये बदलाव शामिल हैं.
2.1.0 के बाद हुए ज़रूरी बदलाव
- NavBackStackEntry: अब
NavController.getBackStackEntry()को कॉल किया जा सकता है. इसके लिए, बैक स्टैक पर मौजूद किसी डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास करें. जवाब में मिलेNavBackStackEntryसे, नेविगेशन पर आधारितLifecycleOwner,ViewModelStoreOwner(वही जवाब जोNavController.getViewModelStoreOwner()से मिला था) औरSavedStateRegistryOwnerमिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए आर्ग्युमेंट भी मिलते हैं. - लाइफ़साइकल ViewModel SavedState इंटिग्रेशन:
SavedStateViewModelFactoryका इस्तेमाल करते समय, अबby navGraphViewModels()डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमालViewModelProviderकंस्ट्रक्टर के साथ किया जाता है. कंस्ट्रक्टर,NavController.getBackStackEntry()याNavController.getViewModelStoreOwner()से मिलेViewModelStoreOwnerका इस्तेमाल करता है. - डीप लिंक के लिए क्वेरी पैरामीटर की सुविधा: क्वेरी पैरामीटर वाले डीप लिंक अब फिर से क्रम में लगाए गए क्वेरी पैरामीटर के साथ काम करते हैं. डिफ़ॉल्ट वैल्यू वाले या शून्य हो सकने वाले आर्ग्युमेंट अब डीप लिंक से मैच करते समय ज़रूरी नहीं होते.
- ऐनिमेशन की बेहतर सुविधा:
NavHostFragmentअब Fragment 1.2.0 सेFragmentContainerViewका इस्तेमाल करता है. इससे ऐनिमेशन के z-ऑर्डरिंग से जुड़ी समस्याएं ठीक हो जाती हैं. साथ ही, विंडो इंसर्ट को फ़्रैगमेंट में भेजा जा सकता है.
वर्शन 2.2.0-rc04
18 दिसंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc04 रिलीज़ हो गया है. वर्शन 2.2.0-rc04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
navigation-uiमें इस्तेमाल किए गए डिफ़ॉल्ट फ़ेड ऐनिमेशन को, Fragment1.2.0-rc04में इस्तेमाल किए गए फ़ेड ऐनिमेशन से मैच करने के लिए अडजस्ट किया गया. (b/145769814)
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc03 रिलीज़ हो गया है. वर्शन 2.2.0-rc03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- क्वेरी पैरामीटर और पाथ के आखिरी हिस्से के तौर पर किसी आर्ग्युमेंट का इस्तेमाल करते समय, डीप लिंक पार्स करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, फ़ाइनल पाथ आर्ग्युमेंट के एक से ज़्यादा वर्ण पार्स नहीं किए जा सकते थे. (b/144554689)
- डीप लिंक पार्सिंग से जुड़ी समस्या को ठीक किया गया है. इसमें वैकल्पिक पैरामीटर को
nullके बजाय"@null"मिलता था. (b/141613546) NavHostFragmentका इस्तेमालFragmentContainerViewके साथ करने पर, कॉन्फ़िगरेशन में बदलाव होने के बाद अब ग्राफ़ को सही तरीके से वापस लाया जा सकता है. (b/143752103)
डिपेंडेंसी में बदलाव
- नेविगेशन अब Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, Activity1.1.0-rc03, और Fragment1.2.0-rc03पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc02 रिलीज़ हो गया है. वर्शन 2.2.0-rc02 में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- नेविगेशन अब androidx.lifecycle
2.2.0-rc02पर निर्भर करता है.
वर्शन 2.2.0-rc01
23 अक्टूबर, 2019
androidx.navigation:navigation-*:2.2.0-rc01 को 2.2.0-beta01 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.2.0-rc01 में ये बदलाव शामिल हैं.
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.navigation:navigation-*:2.2.0-beta01 रिलीज़ हो गया है. वर्शन 2.2.0-beta01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavDestinationऔर इसकी सबक्लास अबtoString()को बदल देती हैं, ताकि डीबग करते समय ज़्यादा मददगार जानकारी मिल सके. (b/141264986)
व्यवहार में बदलाव
- अब डीप लिंक मैच करते समय, अतिरिक्त क्वेरी पैरामीटर को अनदेखा कर दिया जाता है. इससे मैच फ़ेल नहीं होता. (b/141482822)
गड़बड़ियां ठीक की गईं
- डीप लिंक के पाथ में मौजूद आर्ग्युमेंट को अनदेखा करने की समस्या को ठीक किया गया है. ऐसा तब होता था, जब क्वेरी पैरामीटर भी तय किए गए हों. (b/141505755)
navArgs()Activityपर मौजूद Kotlin एक्सटेंशन में, अब कोई एक्स्ट्रा न होने पर गड़बड़ी का बेहतर मैसेज दिखता है. (b/141408999)- Safe Args से जनरेट हुई
DirectionsJava क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/141099045) - Safe Args से जनरेट हुई
ArgsJava क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/140123727) Toolbarका इस्तेमाल करने पर, दो टॉप लेवल डेस्टिनेशन के बीच स्विच करते समय,NavigationUIअब टेक्स्ट में बदलाव को ऐनिमेट नहीं करता. (b/140848160)
वर्शन 2.2.0-alpha03
18 सितंबर, 2019
androidx.navigation:navigation-*:2.2.0-alpha03 रिलीज़ हो गया है. वर्शन 2.2.0-alpha03 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
setGraphको कॉल करने के बाद,setViewModelStore()को कॉल करने पर अबIllegalStateExceptionमिलता है. इसे हमेशाNavHostको सेट करना चाहिए. ऐसा शुरुआती सेटअप के दौरान किया जाना चाहिए, ताकि यह पक्का किया जा सके कि सभीNavBackStackEntryइंस्टेंस मेंViewModelइंस्टेंस के लिए एक जैसा स्टोरेज हो. (aosp/1111821)
गड़बड़ियां ठीक की गईं
- एक से ज़्यादा नेविगेशन ग्राफ़ स्कोप किए गए
ViewModelStoreइंस्टेंस से जुड़ेViewModelइंस्टेंस का इस्तेमाल करते समय,ConcurrentModificationExceptionको ठीक किया गया. (aosp/1112257)
वर्शन 2.2.0-alpha02
5 सितंबर, 2019
androidx.navigation:navigation-*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- क्वेरी पैरामीटर वाले डीप लिंक अब फिर से क्रम में लगाए गए क्वेरी पैरामीटर के साथ काम करते हैं. डिफ़ॉल्ट वैल्यू वाले या शून्य हो सकने वाले आर्ग्युमेंट अब डीप लिंक मैच करते समय ज़रूरी नहीं हैं. (b/133273839)
- अब
NavController.getBackStackEntry()को कॉल किया जा सकता है. इसके लिए, बैक स्टैक पर मौजूद किसी डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास करें. जवाब में मिलेNavBackStackEntryसे, नेविगेशन पर आधारितLifecycleOwner,ViewModelStoreOwner(वही जोNavController.getViewModelStoreOwner()से मिला था), औरSavedStateRegistryOwnerमिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए तर्क भी मिलते हैं. (aosp/1101691, aosp/1101710)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से
ViewPager2मेंNavHostFragmentजोड़ने पर,IllegalArgumentExceptionदिखता था. (b/133640271) NavInflaterअबgetResourceName()को बेवजह कॉल नहीं करता है. इससे, डेटा को अपडेट होने में लगने वाला समय 40% तक कम हो जाता है. (b/139213740)
वर्शन 2.2.0-alpha01
7 अगस्त, 2019
androidx.navigation:navigation-*:2.2.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
SavedStateViewModelFactoryअब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल तब किया जाता है, जबby navGraphViewModels()याViewModelProviderकंस्ट्रक्टर का इस्तेमालNavController.getViewModelStoreOwner()से मिलेViewModelStoreOwnerके साथ किया जाता है. (b/135716331)
एपीआई में हुए बदलाव
- नेविगेशन
2.1.0-rc01से:NavControllerपर2.1.0-alpha02में पेश किया गया, बंद किया गयाgetViewModelStore()एपीआई हटा दिया गया है. (aosp/1091021)
गड़बड़ियां ठीक की गईं
NavHostFragmentअबFragmentContainerViewका इस्तेमाल करता है. इससे ऐनिमेशन के z-ऑर्डरिंग से जुड़ी समस्याएं ठीक हो जाती हैं. साथ ही, विंडो इंसर्ट को फ़्रैगमेंट में डिसपैच किया जाता है. (b/137310379)
वर्शन 2.1.0
वर्शन 2.1.0
5 सितंबर, 2019
androidx.navigation:navigation-*:2.1.0 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
2.0.0 के बाद हुए अहम बदलाव
- नेविगेशन ग्राफ़ में ViewModels को स्कोप करना: अब नेविगेशन ग्राफ़ लेवल पर स्कोप किए गए ViewModels बनाए जा सकते हैं. इसके लिए, Kotlin का इस्तेमाल करने वाले लोग
-ktxलाइब्रेरी के साथby navGraphViewModels()प्रॉपर्टी डेलिगेट का इस्तेमाल कर सकते हैं. इसके अलावा,NavControllerमें जोड़े गएgetViewModelStoreOwner()एपीआई का इस्तेमाल भी किया जा सकता है. ज़्यादा जानकारी के लिए, डेस्टिनेशन के बीच यूज़र इंटरफ़ेस (यूआई) से जुड़ा डेटा शेयर करना लेख पढ़ें. - डायलॉग डेस्टिनेशन: अब
<dialog>डेस्टिनेशन बनाए जा सकते हैं. इन डेस्टिनेशन परnavigateकरने पर,DialogFragmentदिखेगा.NavHostFragmentमें, डिफ़ॉल्ट रूप से डायलॉग डेस्टिनेशन की सुविधा काम करती है. ज़्यादा जानकारी के लिए, DialogFragment से डेस्टिनेशन बनाना लेख पढ़ें. - यूआरआई के हिसाब से नेविगेट करना: अब
Uriका इस्तेमाल करकेnavigateकिया जा सकता है. यह<deepLink>का इस्तेमाल करता है, जिसे आपने किसी डेस्टिनेशन में जोड़ा है, ताकि वहां नेविगेट किया जा सके. ज़्यादा जानकारी के लिए, Uri का इस्तेमाल करके नेविगेट करना लेख पढ़ें. - NavHostController: कस्टम
NavHostबनाने के लिए इस्तेमाल किए जाने वाले एपीआई कोNavHostControllerमें ले जाया गया है. इससे, लागू करने वाले लोग अपनेNavControllerको होस्टिंगLifecycleOwner,OnBackPressedDispatcher, औरViewModelStoreसे कनेक्ट कर सकते हैं.
वर्शन 2.1.0-rc01
7 अगस्त, 2019
androidx.navigation:navigation-*:2.1.0-rc01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
NavControllerपर काम न करने वालेgetViewModelStore()API को हटा दिया गया है. इसे2.1.0-alpha02में लॉन्च किया गया था. (aosp/1091021)
वर्शन 2.1.0-beta02
19 जुलाई, 2019
androidx.navigation:*:2.1.0-beta02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
- अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटाया गया. यह डिपेंडेंसी
2.1.0-beta01में जोड़ी गई थी. (b/137782950)
वर्शन 2.1.0-beta01
17 जुलाई, 2019
androidx.navigation:*:2.1.0-beta01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
NavigationUIअबToolbarयाCollapsingToolbarLayoutके साथsetupWithNavController()का इस्तेमाल करने पर, 'पसंद करें' बटन को हटाने पर ऐनिमेशन दिखाता है. (b/131403621)
गड़बड़ियां ठीक की गईं
- हमने एक ऐसी समस्या को ठीक किया है जिसमें
findNavController()के साथ एक ही कंटेनर में कई NavHostFragment का इस्तेमाल करने पर, टाइमिंग से जुड़ी समस्या आ रही थी. (b/136021571)
वर्शन 2.1.0-alpha06
2 जुलाई, 2019
androidx.navigation:*:2.1.0-alpha06 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- NavHostFragment इस्तेमाल करने वाले
app:navGraphएट्रिब्यूट को अबnavigation-runtimeआर्टफ़ैक्ट में ले जाया गया है. एक्सएमएल के ज़रिए जोड़े जा सकने वाले कस्टम नेविगेटर को इस एट्रिब्यूट का इस्तेमाल करना चाहिए, ताकि वे नेविगेशन एडिटर के होस्ट पैनल के साथ इंटिग्रेट हो सकें. (b/133880955)
एपीआई में हुए बदलाव
NavControllerपर मौजूदgetViewModelStore()एपीआई को बंद कर दिया गया है. इसकी जगह,getViewModelStoreOwner()का नया तरीका इस्तेमाल किया जा रहा है. यहViewModelStoreOwnerदिखाता है. (aosp/987010)- फ़्लोटिंग विंडो डेस्टिनेशन, जैसे कि
<dialog>डेस्टिनेशन को अब एक मार्कर इंटरफ़ेस,FloatingWindowमें सामान्य कर दिया गया है. अब सभी<dialog>डेस्टिनेशन इसे लागू करते हैं. टॉप ऐप्लिकेशन बार के साथ इंटरैक्ट करने के लिए, NavigationUI के तरीके अबFloatingWindowडेस्टिनेशन को अनदेखा करते हैं. (b/133600763)
व्यवहार में बदलाव
<dialog>डेस्टिनेशन का इस्तेमाल करते समय, नेविगेशन अब स्क्रीन पर दिखने वाले कॉन्टेंट के साथ अपनी स्थिति को सही तरीके से सिंक करता है. इस वजह से, अब किसी ऐसे डेस्टिनेशन पर नेविगेट करने पर, नेविगेशन अपने-आप<dialog>डेस्टिनेशन दिखाता है जो डायलॉग और गतिविधि वाला डेस्टिनेशन नहीं है. जैसे,<fragment>डेस्टिनेशन. (b/134089818)
गड़बड़ियां ठीक की गईं
- नेविगेशन अब डीप लिंक को हैंडल करते समय, गतिविधि को फिर से बनाने पर होने वाले ऐनिमेशन को बंद कर देता है. इससे विज़ुअल फ़्लैश की समस्या ठीक हो जाती है. (b/130362979)
- उस गड़बड़ी को ठीक किया गया है जिसकी वजह से, शुरुआती फ़्रैगमेंट को जोड़ने के दौरान किसी फ़्रैगमेंट को पॉप करने पर, नेविगेशन बैक स्टैक सिंक नहीं होता था. (b/133832218)
वर्शन 2.1.0-alpha05
5 जून, 2019
androidx.navigation:*:2.1.0-alpha05 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
एपीआई में हुए बदलाव
NavControllerपर होस्ट से जुड़े एपीआई का नाम बदल दिया गया है. साथ ही, इन्हेंNavControllerकी नई सबक्लास,NavHostControllerमें ले जाया गया है. (aosp/966091)NavControllersetHostOnBackPressedDispatcherOwner()मेथड कोNavHostControllerकेsetOnBackPressedDispatcher()मेथड से बदल दिया गया है. अब इसे कॉल करने से पहले, आपकोsetLifecycleOwner()को कॉल करना होगा. (aosp/965409)NavHostControllerमें अब एकenableOnBackPressed(boolean)मेथड शामिल है. यहNavHostOnBackPressedManagerक्लास की जगह लेता है.setHostOnBackPressedDispatcherOwner()पहले क्लास दिखाता था. (aosp/966091)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से यूआरआई से नेविगेट करने के बाद, बैक स्टैक सही नहीं था. (b/132509387)
- NavController अब डीप लिंक को अपने-आप मैनेज करता है. इसलिए, अब डीप लिंक सिर्फ़ एक बार ट्रिगर होते हैं. (b/132754763)
वर्शन 2.1.0-alpha04
16 मई, 2019
androidx.navigation:*:2.1.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
NavHostFragment, सिस्टम के 'वापस जाएं' बटन के इवेंट को इंटरसेप्ट करते समय,app:defaultNavHostका सही तरीके से पालन करता है. इससे Navigation2.1.0-alpha03में रिग्रेशन ठीक हो जाता है. b/132077777DialogFragmentNavigatorअबpopBackStack()औरnavigateUp()के ऑपरेशन को सही तरीके से हैंडल करता है. b/132576764- नेस्ट किए गए ग्राफ़ के बीच बार-बार नेविगेट करने पर,
IllegalStateException: unknown destination during restoreसे जुड़ी समस्या ठीक की गई. b/131733658
वर्शन 2.1.0-alpha03
7 मई, 2019
androidx.navigation:*:2.1.0-alpha03 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
मौजूदा समस्याएं
app:defaultNavHost="false"b/132077777 का इस्तेमाल करने के बावजूद, NavHostFragment सिस्टम के 'वापस जाएं' बटन को इंटरसेप्ट करता रहता है
नई सुविधाएं
- अब
<dialog>डेस्टिनेशन बनाए जा सकते हैं. इन डेस्टिनेशन परnavigateकरने पर, आपकोDialogFragmentदिखेगा.NavHostFragmentडिफ़ॉल्ट रूप से, डायलॉग डेस्टिनेशन के साथ काम करता है. b/80267254 navigateको रिसॉर्स आईडी याNavDirectionsइंस्टेंस के साथ कॉल करने के अलावा, अबUriके ज़रिए भी नेविगेट किया जा सकता है. यह<deepLink>का इस्तेमाल करता है, जिसे आपने सही डेस्टिनेशन पर नेविगेट करने के लिए डेस्टिनेशन में जोड़ा है. b/110412864
व्यवहार में बदलाव
- NavigationUI की ओर से उपलब्ध कराए गए डिफ़ॉल्ट ऐनिमेशन की स्पीड को 400 मि॰से॰ से बढ़ाकर 220 मि॰से॰ कर दिया गया है, ताकि यह गतिविधियों और फ़्रैगमेंट के डिफ़ॉल्ट ऐनिमेशन की स्पीड से मेल खाए. b/130055522
एपीआई में हुए बदलाव
NavHostFragmentकेcreateFragmentNavigator()तरीके को बंद कर दिया गया है. इसकी सुविधा को नएonCreateNavController()तरीके में ले जाया गया है, ताकि यह ज़्यादा साफ़ तौर पर बताया जा सके किNavHostFragmentको सबक्लास करते समय, कस्टम नेविगेटर जोड़ने का यह सही एंट्री पॉइंट है. b/122802849NavDestinationमेंhasDeepLink()तरीका जोड़ा गया है. इससे यह पता लगाया जा सकता है कि कोईUriउस डेस्टिनेशन से हैंडल किया जा सकता है या नहीं. इसके अलावा,NavGraphके मामले में, नेविगेशन ग्राफ़ में मौजूद किसी भी डेस्टिनेशन से हैंडल किया जा सकता है या नहीं. b/117437718
गड़बड़ियां ठीक की गईं
- डिफ़ॉल्ट आर्ग्युमेंट अब
OnDestinationChangedListenerइंस्टेंस में सही तरीके से पास किए जाते हैं. b/130630686 NavHostFragmentअबOnBackPressedDispatcherका इस्तेमाल करके, सिस्टम के बैक इवेंट को इंटरसेप्ट करता है. इससे फ़्रैगमेंट लाइफ़साइकल के तरीकों में, फ़्रैगमेंट पर वापस आने पर शर्त के हिसाब से नेविगेशन करने से जुड़ी समस्या ठीक हो जाती है. b/111598096- Safe Args के लिए,
app:argTypeके बिनाandroid:defaultValue=”@null”को अबstringआर्ग्युमेंट के तौर पर सही तरीके से अनुमान लगाया जाता है. b/129629192
वर्शन 2.1.0-alpha02
3 अप्रैल, 2019
androidx.navigation:*:2.1.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- अब नेविगेशन ग्राफ़ लेवल पर स्कोप किए गए ViewModels बनाए जा सकते हैं. इसके लिए, Kotlin का इस्तेमाल करने वाले लोग
by navGraphViewModels()प्रॉपर्टी डेलिगेट का इस्तेमाल कर सकते हैं. इसके अलावा,NavControllerमें जोड़े गएgetViewModelStore()एपीआई का इस्तेमाल करके भी ऐसा किया जा सकता है. b/111614463
एपीआई में हुए बदलाव
- अब मैचिंग पैकेज के नाम को सीमित करने के लिए,
<activity>डेस्टिनेशन मेंapp:targetPackageजोड़ा जा सकता है. यहapp:targetPackage="${applicationId}"के साथ काम करता है, ताकि पैकेज को अपने ऐप्लिकेशन आईडी तक सीमित किया जा सके. b/110975456
गड़बड़ियां ठीक की गईं
android:nameडेस्टिनेशन के लिए<activity>को अब इन्फ़्लेशन के समय क्लास में पार्स नहीं किया जाता है. इससे डाइनैमिक सुविधाओं का इस्तेमाल करते समय, ClassNotFoundExceptions को रोका जा सकता है. b/124538597
वर्शन 2.1.0-alpha01
19 मार्च, 2019
यह Navigation 2.1.0 का पहला ऐल्फ़ा वर्शन है.
डिपेंडेंसी में बदलाव
- नेविगेशन अब
androidx.core:core:1.0.1औरandroidx.fragment:fragment:1.1.0-alpha05पर निर्भर करता है. इस रिलीज़ में,androidx.legacy:legacy-support-core-utils:1.0.0पर निर्भरता को भी हटा दिया गया है. b/128632612
एपीआई में हुए बदलाव
- क्लिक लिसनर बनाने के लिए,
Navigation.createNavigateOnClickListener(NavDirections)का नया तरीका जोड़ा गया है. इसका इस्तेमाल, संसाधन आईडी और बंडल के साथ क्लिक लिसनर बनाने के विकल्प के तौर पर किया जा सकता है. b/127631752 FragmentNavigator.instantiateFragmentका अब इस्तेमाल नहीं किया जा सकता. डिफ़ॉल्ट तौर पर लागू करने की सुविधा अबFragmentFactoryका इस्तेमाल करके फ़्रैगमेंट बनाती है. b/119054429
गड़बड़ियां ठीक की गईं
- नेविगेशन अब डेस्टिनेशन से जुड़े आर्ग्युमेंट मौजूद होने पर, शून्य
Bundleनहीं भेजता. इससेandroid:defaultValue="@null"का इस्तेमाल करते समय आने वाली समस्या ठीक हो जाती है. b/128531879 - Safe Args अब KotlinPoet 1.1.0 पर निर्भर करता है. इससे बहुत लंबे पैकेज के नामों से जुड़ी समस्या ठीक हो गई है. b/123654948
वर्शन 2.0.0
वर्शन 2.0.0
14 मार्च, 2019
नेविगेशन 2.0.0 को 2.0.0-rc02 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 2.0.0-rc02
6 मार्च, 2019
Navigation 2.0.0-rc02, androidx.navigation
ग्रुप आईडी वाले नए आर्टफ़ैक्ट उपलब्ध कराता है. साथ ही, इसकी डिपेंडेंसी को AndroidX के बराबर में बदलता है.
Navigation 2.0.0-rc02 का व्यवहार, Navigation 1.0.0-rc02 के जैसा ही है. साथ ही, 1.0.0-rc02 से अपडेट करने के लिए, आपको अपने कोड में कोई बदलाव करने की ज़रूरत नहीं होगी. हालांकि, आपको नई डिपेंडेंसी से मेल खाने के लिए, अपनी डिपेंडेंसी अपडेट करनी होंगी.
Navigation के 2.X वर्शन का इस्तेमाल करने के लिए, आपके प्रोजेक्ट को AndroidX पर माइग्रेट किया गया हो. Navigation 1.0 स्टेबल वर्शन, Support Library की डिपेंडेंसी का इस्तेमाल करने वाली आखिरी रिलीज़ होगी. 1.0 के बाद के सभी डेवलपमेंट, AndroidX पर आधारित होंगे. साथ ही, 2.0 स्टेबल रिलीज़ पर बनाए जाएंगे.
AndroidX से पहले की डिपेंडेंसी
Navigation के AndroidX से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Safe args के लिए, अपनी टॉप लेवल build.gradle फ़ाइल में यह classpath जोड़ें
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
वर्शन 1.0.0
वर्शन 1.0.0
14 मार्च, 2019
नेविगेशन 1.0.0 को 1.0.0-rc02 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 1.0.0-rc02
26 फ़रवरी, 2019
यह Navigation के 1.0.0 स्टेबल वर्शन के लिए, दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में, कई गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
popBackStack()को अनदेखा किए जाने की समस्या को ठीक किया गया है. ऐसा तब होता था, जब रूट ग्राफ़ में आईडी b/126251695 नहीं होता थाnavigateUp()अब आपके ऐप्लिकेशन के टास्क पर वापस जाने की सुविधा को सही तरीके से मैनेज करता है. ऐसा तब होता है, जब इसेFLAG_ACTIVITY_NEW_TASKके बिना डीप लिंक को मैनेज करने के बाद कॉल किया जाता है b/126082008ActivityNavigator.applyPopAnimationsToPendingTransitionमें पॉप-अप के बंद होने का सही ऐनिमेशन लागू न होने की समस्या ठीक की गई b/126237567- Safe Args से जनरेट किया गया Kotlin कोड, अब Kotlin के कीवर्ड को सही तरीके से एस्केप करता है. जैसे,
Rक्लास से जुड़े पैकेज के नाम मेंinऔरfun. b/126020455
वर्शन 1.0.0-rc01
21 फ़रवरी, 2019
यह नेविगेशन लाइब्रेरी के 1.0.0 स्टेबल वर्शन का रिलीज़ कैंडिडेट है. इस रिलीज़ में, एक गड़बड़ी को ठीक किया गया है.
गड़बड़ियां ठीक की गईं
- Fragments और
singleTopनेविगेशन ऑपरेशन का इस्तेमाल करते समय आने वाली समस्या को ठीक किया गया b/124294805
वर्शन 1.0.0-beta02
12 फ़रवरी, 2019
इस रिलीज़ में, कई छोटे-मोटे सुधार किए गए हैं और ज़रूरी गड़बड़ियां ठीक की गई हैं.
नई सुविधाएं
- अब
0कोreferenceआर्ग्युमेंट के लिएandroid:defaultValueके तौर पर इस्तेमाल किया जा सकता है. b/124248602
व्यवहार में बदलाव
- अब सटीक डीप लिंक मैच को,
.*या आर्ग्युमेंट मैच वाले डीप लिंक से ज़्यादा प्राथमिकता दी जाती है. b/123969518
गड़बड़ियां ठीक की गईं
popBackStack()औरnavigateUpअब पिछली गतिविधियों पर मौजूद आखिरी डेस्टिनेशन को पॉप करते समय,falseको सही तरीके से वापस लाते हैं. इससे1.0.0-beta01में हुई रिग्रेशन की समस्या ठीक हो जाती है. b/123933201- नेविगेशन अब सेव किए गए इंस्टेंस की स्थिति को वापस लाते समय,
ClassLoaderको सही तरीके से सेट करता है. इससेNavigatorकी सेव की गई स्थिति याNavDestinationको भेजे गए आर्ग्युमेंट में कस्टम क्लास का इस्तेमाल करते समय आने वाली समस्याओं से बचा जा सकता है. b/123893858 - सेव किए गए इंस्टेंस की स्थिति से
Parcelable[]आर्ग्युमेंट को वापस लाने पर, Safe Args से जनरेट की गई NavArgs क्लास अब क्रैश नहीं होती हैं. b/123963545 - Safe Args अब जनरेट की गई गैर-ज़रूरी Kotlin क्लास को ठीक से हटा देता है. b/124120883
वर्शन 1.0.0-beta01
4 फ़रवरी, 2019
यह नेविगेशन की पहली बीटा रिलीज़ है. आने वाले समय में, नेविगेशन एपीआई के अगले वर्शन तक स्थिर रहने की उम्मीद है. हालांकि, ऐसा तब तक होगा, जब तक कोई गंभीर समस्या न हो. इस रिलीज़ में, कुछ गड़बड़ियां ठीक की गई हैं और व्यवहार में बदलाव किए गए हैं.
व्यवहार में बदलाव
- नेविगेशन लाइब्रेरी अब यह पक्का करती है कि आर्ग्युमेंट की डिफ़ॉल्ट वैल्यू को रनटाइम और Safe Args के ज़रिए एक जैसा माना जाए. इसलिए, सिर्फ़
app:argType="reference"वाले आर्ग्युमेंट की डिफ़ॉल्ट वैल्यू, किसी दूसरे रिसॉर्स (उदाहरण के लिए,@color/colorPrimary) की ओर पॉइंट कर सकती है. किसी दूसरेapp:argTypeके साथ रेफ़रंस डिफ़ॉल्ट वैल्यू का इस्तेमाल करने पर, नेविगेशन XML को पार्स करते समय एक अपवाद मिलेगा. b/123551990 - Safe Args अब Android Gradle प्लगिन 3.3.0 पर निर्भर करता है aosp/888413
- Safe Args अब Kotlin 1.3.20 पर निर्भर करता है aosp/888414
गड़बड़ियां ठीक की गईं
- Safe Args का इस्तेमाल अब Android Gradle प्लगिन के सभी वर्शन पर, लाइब्रेरी और फ़ीचर मॉड्यूल में किया जा सकता है. b/121304903
- एक रिग्रेशन को ठीक किया गया है. इसकी वजह से,
popBackStack()ऑपरेशन के दौरान, बैक स्टैक में सबसे ऊपर मौजूद डेस्टिनेशन की सभी कॉपी पॉप हो जाती थीं. हालांकि, ऐसा एक बार में सिर्फ़ एक डेस्टिनेशन के लिए होना चाहिए था. b/123552990 - उस समस्या को ठीक किया गया है जिसकी वजह से
FragmentNavigatorकी स्थिति,NavControllerकी स्थिति के साथ सिंक नहीं होती थी. इस वजह से, बैक स्टैक को वापस लाने की कोशिश करते समयIllegalStateExceptionहोता था. b/123803044 - उस समस्या को ठीक किया गया है जिसमें ProGuard का इस्तेमाल करने पर,
NavigationUIहैंडल किए गए बैक ऐरो नहीं दिखते थे. b/123449431 - Safe Args से जनरेट किया गया कोड, अब
app:argTypeका इस्तेमाल करने की सुविधा को सही तरीके से मैनेज करता है. यह कोड,.OuterClass$InnerClassफ़ॉर्मैट में स्टैटिक इनर क्लास की ओर इशारा करता है. b/123736741 - Safe Args से जनरेट किया गया Java कोड, अब ग्लोबल ऐक्शन और डीपली नेस्ट किए गए डेस्टिनेशन को सही तरीके से हैंडल करता है. b/123347762
वर्शन 1.0.0-alpha11
23 जनवरी, 2019
यह 1.0.0-alpha10 का हॉटफ़िक्स वर्शन है. इसमें Safe Args से जुड़ी समस्या को ठीक किया गया है.
गड़बड़ियां ठीक की गईं
- इस अपडेट में, उस समस्या को ठीक किया गया है जिसकी वजह से Safe Args, ग्लोबल कार्रवाइयों से जुड़ी Directions क्लास को इंपोर्ट नहीं कर पाता था. b/123307342
वर्शन 1.0.0-alpha10
23 जनवरी, 2019
मौजूदा समस्याएं
- Safe Args, ग्लोबल ऐक्शन से जुड़ी Directions क्लास को इंपोर्ट नहीं कर पाता. b/123307342
इस रिलीज़ में, एपीआई में नुकसान पहुंचाने वाले बदलाव शामिल हैं; कृपया नीचे दिया गया नुकसान पहुंचाने वाले बदलाव सेक्शन देखें.
नई सुविधाएं
- Kotlin का इस्तेमाल करने वाले लोग अब
by navArgs()प्रॉपर्टी डेलिगेट का इस्तेमाल करके,ActivityयाFragmentमें Safe Args से जनरेट की गईNavArgsक्लास का रेफ़रंस पा सकते हैं. b/122603367 - Safe Args की मदद से, अब
androidx.navigation.safeargs.kotlinप्लगिन लागू करके Kotlin कोड जनरेट किया जा सकता है. Kotlin कोड को खास तौर पर Kotlin के सिर्फ़ मॉड्यूल के लिए बनाया गया है. इसमें डिफ़ॉल्ट आर्ग्युमेंट और बिल्डर पैटर्न के बजाय इम्यूटेबल क्लास का इस्तेमाल किया गया है. बिल्डर पैटर्न अब भी पिछलेandroidx.navigation.safeargsप्लगिन के ज़रिए उपलब्ध है. b/110263087
व्यवहार में बदलाव
- अब मिलते-जुलते डीप लिंक में, उस डीप लिंक को प्राथमिकता दी जाती है जिसमें सबसे ज़्यादा मिलते-जुलते आर्ग्युमेंट होते हैं. b/118393029
- अब
NavControllerपरsetGraph()को कॉल करने पर, पिछली गतिविधियां रीसेट हो जाएंगी. b/111450672 - अब अज्ञात डीप लिंक से
IllegalStateExceptionनहीं मिलता है. हालांकि, इन्हें अनदेखा किया जाता है. इससे नेस्ट किए गए या कईNavHostFragmentसे जुड़ी समस्याएं ठीक हो जाती हैं. b/121340440
नुकसान पहुंचा सकने वाले बदलाव
- किसी ऐक्टिविटी में पॉप ऐनिमेशन लागू करने के लिए,
NavOptions.applyPopAnimationsToPendingTransition()तरीके कोActivityNavigatorपर ले जाया गया है. b/122413117 - Safe Args अब बिना आर्ग्युमेंट वाली कार्रवाइयों के लिए, एक जैसी क्लास को डुप्लीकेट करने से रोकता है. जनरेट की गई NavDirections
क्लास में, बिना किसी तर्क वाले तरीकों के लिए रिटर्न टाइप अब
NavDirectionsहै. b/123233147 - Safe Args से जनरेट की गई Directions क्लास में अब कोई पब्लिक कंस्ट्रक्टर नहीं है - आपको सिर्फ़ जनरेट किए गए स्टैटिक तरीकों का इस्तेमाल करना चाहिए. b/123031660
- Safe Args से जनरेट की गई
NavDirectionsक्लास में अब सार्वजनिक कंस्ट्रक्टर नहीं है. इन्हें सिर्फ़ जनरेट की गई Directions क्लास में स्टैटिक तरीकों से जनरेट किया जाना चाहिए. b/122963206 NavDirectionsसे मिलेgetArguments()केBundleको अब@Nullableके बजाय@NonNullके तौर पर मार्क किया गया है. b/123243957
गड़बड़ियां ठीक की गईं
NavDeepLinkBuilderअब एक ही डेस्टिनेशन पर एक साथ कईPendingIntentको सही तरीके से हैंडल करता है. इसके लिए, यह उन आर्ग्युमेंट का इस्तेमाल करता है जिन्हें आपने यूनीकनेस का पता लगाने के लिए पास किया है. b/120042732NavControllerअब नेस्ट किए गएNavHostFragmentया बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट का इस्तेमाल करते समय,popBackStack()कार्रवाइयों को सही तरीके से हैंडल करता है. b/122770335NavigationUIअब 'ऊपर जाएं' बटन के कॉन्टेंट की जानकारी को सही तरीके से सेट करता है. b/120395362- Safe Args से जनरेट की गई Directions क्लास, अब उन ग्लोबल ऐक्शन को सही तरीके से हैंडल करती हैं जिनका आईडी, डेस्टिनेशन पर मौजूद किसी ऐक्शन के आईडी के जैसा होता है. b/122962504
- Safe Args जनरेट करने वाली
NavDirectionsक्लास में अब सही तरीके से बराबरhashCode()वैल्यू होती हैं. ऐसा तब होता है, जबequals()से true वैल्यू मिलती है. b/123043662 FragmentNavigatorअबNavHostFragmentकेFragmentManagerपर कस्टमFragmentTransactionsकरने की कोशिश करने पर, गड़बड़ी का बेहतर मैसेज दिखाता है. आपको हमेशाgetChildFragmentManager()का इस्तेमाल करना चाहिए. b/112927148
वर्शन 1.0.0-alpha09
18 दिसंबर, 2018
इस रिलीज़ में, एपीआई में नुकसान पहुंचा सकने वाले बदलाव शामिल हैं; कृपया यहां दिए गए नुकसान पहुंचा सकने वाले बदलाव सेक्शन को देखें.
हमने android.arch.navigation:navigation-testing आर्टफ़ैक्ट को आगे डेवलप न करने का फ़ैसला किया है. हालांकि, यह NavController की इंटरनल टेस्टिंग के लिए मददगार साबित हुआ है, लेकिन हमारा सुझाव है कि आप टेस्टिंग की अन्य रणनीतियां अपनाएं. जैसे, NavController इंस्टेंस को मॉक करना, ताकि यह पुष्टि की जा सके कि सही navigate() कॉल किए जा रहे हैं. इस तरीके के बारे में AndroidDevSummit 2018 में सिंगल ऐक्टिविटी के बारे में हुई बातचीत में विस्तार से बताया गया है. साथ ही, हम नेविगेशन की मदद से टेस्टिंग के बारे में ज़्यादा दस्तावेज़ तैयार करेंगे.
नई सुविधाएं
menuCategory="secondary"वालेMenuItem,NavigationUIके तरीकों के साथ इस्तेमाल किए जाने पर अब बैक स्टैक नहीं दिखाएंगे. b/120104424AppBarConfigurationकी मदद से, अब फ़ॉलबैकOnNavigateUpListenerइंस्टेंस सेट किया जा सकता है.navController.navigateUp()केfalseलौटाने पर, इस इंस्टेंस को कॉल किया जाएगा. b/79993862 b/120690961
नुकसान पहुंचा सकने वाले बदलाव
argType="reference"के साथ<argument>का इस्तेमाल करने पर, नेविगेशन अब रेफ़रंस को पार्स नहीं करता. इसके बजाय, यह रॉ रिसोर्स आईडी उपलब्ध कराता है. b/111736515onNavDestinationSelected()अब डिफ़ॉल्ट रूप से, नेविगेशन ग्राफ़ के शुरुआती डेस्टिनेशन पर वापस आ जाता है. इससे येsetupतरीकों के साथ काम कर पाते हैं. बैक स्टैक को पॉप अप होने से रोकने के लिए, अपनेMenuItemमेंmenuCategory="secondary"जोड़ें. aosp/852869- जनरेट की गई
Argsक्लास केfromBundle()तरीके अब नल नहीं होने वालेBundleके बजाय, नल हो सकने वालेBundleका इस्तेमाल करते हैं aosp/845616
गड़बड़ियां ठीक की गईं
- अब डीप लिंक से आर्ग्युमेंट को सही तरीके से पार्स किया जाता है. ऐसा हमेशा स्ट्रिंग के तौर पर करने के बजाय, सही
argTypeके तौर पर किया जाता है b/110273284 - नेविगेशन अब अपने सार्वजनिक संसाधनों को सही तरीके से एक्सपोर्ट करता है b/121059552
- Safe Args अब Android Gradle प्लगिन 3.4 Canary 4 और इसके बाद के वर्शन के साथ काम करता है b/119662045
वर्शन 1.0.0-alpha08
6 दिसंबर, 2018
इस रिलीज़ में, एपीआई में नुकसान पहुंचाने वाले बदलाव शामिल हैं; कृपया नीचे दिया गया नुकसान पहुंचाने वाले बदलाव सेक्शन देखें.
नई सुविधाएं
NavigationUIतरीकों के साथ इस्तेमाल किए जाने पर, डेस्टिनेशन लेबल अबandroid:labelमें{argName}इंस्टेंस को सही आर्ग्युमेंट से अपने-आप बदल देंगे b/80267266- नेविगेशन अब Support Library 28.0.0 पर निर्भर करता है b/120293333
नुकसान पहुंचा सकने वाले बदलाव
OnNavigatedListenerका नाम बदलकरOnDestinationChangedListenerकर दिया गया है b/118670572OnDestinationChangedListenerअब आर्ग्युमेंट केBundleको भी पास करता है aosp/837142app:clearTaskऔरapp:launchDocumentएट्रिब्यूट और उनसे जुड़े तरीके हटा दिए गए हैं. अपने ग्राफ़ के रूट के साथapp:popUpToका इस्तेमाल करके, अपने बैक स्टैक से सभी डेस्टिनेशन हटाएं. b/119628354ActivityNavigator.ExtrasअबBuilderपैटर्न का इस्तेमाल करता है और इसमेंIntent.FLAG_ACTIVITY_फ़्लैग सेट करने की सुविधा जोड़ी गई है aosp/828140NavController.onHandleDeepLinkका नाम बदलकरhandleDeepLinkकर दिया गया है aosp/836063- कई क्लास और तरीके सबक्लासिंग के लिए नहीं होते हैं. जैसे,
NavOptions,NavInflater,NavDeepLinkBuilder, औरAppBarConfiguration. इन्हेंfinalaosp/835681 के तौर पर बनाया गया है - बहिष्कृत किए गए
NavHostFragment.setGraph()तरीके को हटा दिया गया है aosp/835684 - बहिष्कृत किए गए
NavigationUI.navigateUp(DrawerLayout, NavController)तरीके को हटा दिया गया है. aosp/835684 - फ़्रैगमेंट बनाने की सुविधा को
FragmentNavigatorमें ले जाया गया है. इससेFragmentFactoryको फ़्रैगमेंट बनाने की ज़िम्मेदारी सौंपना आसान हो गया है. b/119054429 NavGraphNavigatorके कंस्ट्रक्टर में अबContextनहीं लिया जाता aosp/835340- NavigatorProvider अब इंटरफ़ेस के बजाय क्लास है.
getNavigatorProvider()से मिलेNavigatorProviderकी फ़ंक्शनैलिटी में कोई बदलाव नहीं किया गया है. aosp/830660 NavDestination.navigate()को हटा दिया गया है. इसके बजाय,Navigatorपरnavigate()को कॉल करें. aosp/830663Navigatorमें काफ़ी बदलाव किया गया है. अबOnNavigatorNavigatedListenerकी ज़रूरत नहीं है. इसके बजाय,navigateउसNavDestinationको वापस भेजता है जिस पर नेविगेट किया गया था.Navigatorइंस्टेंस अबNavControllerको पॉप इवेंट नहीं भेज सकते. 'वापस जाएं' बटन दबाने की कार्रवाइयों को रोकने औरnavController.popBackStack()को कॉल करने के लिए,OnBackPressedCallbackका इस्तेमाल करें. aosp/833716
गड़बड़ियां ठीक की गईं
popUpToअब लगातार काम करता है, जब डेस्टिनेशन एक<navigation>एलिमेंट होता है b/116831650- कई बग ठीक किए गए हैं. इनकी वजह से नेस्ट किए गए ग्राफ़ का इस्तेमाल करते समय
IllegalArgumentExceptionदिखता था b/118713731 b/113611083 b/113346925 b/113305559 <activity>डेस्टिनेशन केdataPatternएट्रिब्यूट में अब नॉन-स्ट्रिंग आर्ग्युमेंट से आर्ग्युमेंट पॉप्युलेट होंगे. इसके लिए,toString()को कॉल किया जाएगा b/120161365
Safe Args
- Safe Args, सीरियलाइज़ किए जा सकने वाले ऑब्जेक्ट के साथ काम करता है. इसमें Enum वैल्यू भी शामिल हैं. क्लास के नाम के बिना enum लिटरल का इस्तेमाल करके, enum टाइप के लिए डिफ़ॉल्ट वैल्यू सेट की जा सकती है
(उदाहरण के लिए,
app:defaultValue="READ") b/111316353 - Safe Args, इस्तेमाल किए जा सकने वाले सभी टाइप के ऐरे के साथ काम करता है b/111487504
- Safe Args अब संसाधन डायरेक्ट्री के सबफ़ोल्डर को अनदेखा करता है b/117893516
- Safe Args, ज़रूरत के हिसाब से
@Overrideएनोटेशन जोड़ता है b/117145301
वर्शन 1.0.0-alpha07
29 अक्टूबर, 2018
नई सुविधाएं
- नई AppBarConfiguration क्लास की मदद से, यह तय किया जा सकता है कि किन डेस्टिनेशन को टॉप-लेवल डेस्टिनेशन माना जाए. ज़्यादा जानकारी के लिए, अपडेट किया गया दस्तावेज़ देखें. b/117333663
- अब अपने ग्राफ़ के शुरुआती डेस्टिनेशन में आर्ग्युमेंट पास किए जा सकते हैं b/110300470
- डीप लिंक में अब कस्टम स्कीम का इस्तेमाल किया जा सकता है. इनमें अवधि, हाइफ़न, और प्लस के निशान शामिल हैं. b/112806402
नुकसान पहुंचा सकने वाले बदलाव
navigation-testing-ktxमॉड्यूल कोnavigation-testing artifactमें शामिल कर दिया गया है. अब इसे पब्लिश नहीं किया जाएगा.navigation-testingआर्टफ़ैक्ट अब Kotlin की स्टैंडर्ड लाइब्रेरी पर निर्भर करता है. एपीआई को Kotlin के नियमों के मुताबिक बनाया गया है. हालांकि, इसका इस्तेमाल Java में लिखे गए टेस्ट के लिए किया जा सकता है.- रजिस्टर किए गए नेविगेशन ग्राफ़ के मेटाडेटा मेनिफ़ेस्ट अब काम नहीं करते. b/118355937
- कार्रवाइयों को अब <activity> डेस्टिनेशन से नहीं जोड़ा जा सकता. aosp/785539
गड़बड़ियां ठीक की गईं
- डीप लिंक अब क्वेरी पैरामीटर को सही तरीके से पार्स करते हैं. b/110057514
- ऐक्टिविटी डेस्टिनेशन अब सभी एंट्री और एक्ज़िट ऐनिमेशन को सही तरीके से लागू करते हैं. b/117145284
- कस्टम नेविगेटर का इस्तेमाल करते समय, कॉन्फ़िगरेशन में बदलाव करने के बाद होने वाले क्रैश की समस्या ठीक की गई. b/110763345
Safe Args
- Safe Args अब Android Gradle प्लगिन 3.2.1 पर निर्भर करता है. b/113167627
- अब इनर क्लास के लिए निर्देश जनरेट किए जा सकते हैं. b/117407555
- <include> ग्राफ़ के लिए, दिशा-निर्देश जनरेट करने से जुड़ी समस्या ठीक की गई. b/116542123
वर्शन 1.0.0-alpha06
20 सितंबर, 2018
नई सुविधाएं
- फ़्रैगमेंट और गतिविधि डेस्टिनेशन के लिए, शेयर किए गए एलिमेंट के ट्रांज़िशन की सुविधा अब काम करती है b/79665225. ज़्यादा जानकारी के लिए, Navigation Architecture Component की मदद से नेविगेशन लागू करना लेख पढ़ें
NavigationViewमें किसी आइटम को चुनने पर, अब बॉटम शीट b/112158843 बंद हो जाएगी
एपीआई में हुए बदलाव
- बदलाव: Navigator
navigate()तरीके में अबNavigator.Extrasपैरामीटर का इस्तेमाल किया जाता है. - NavController के
getGraph()तरीके को अबNonNullकर दिया गया है b/112243286
गड़बड़ियां ठीक की गईं
NavigationUI.setupWithNavController()का इस्तेमाल, अलग-अलग डेस्टिनेशन से मिले व्यू के साथ करने पर, अब व्यू की जानकारी लीक नहीं होती b/111961977- Navigator
onSaveState()को अब सिर्फ़ एक बार कॉल किया जाता है b/112627079
Safe Args
- नेविगेशन डेस्टिनेशन के लिए, निर्देश देने वाली क्लास अब अपने पैरंट की निर्देश देने वाली क्लास को बढ़ाती हैं. ऐसा तब होता है, जब पैरंट की निर्देश देने वाली क्लास मौजूद हो b/79871405
- Directions और Args क्लास में अब
toString()लागू करने का तरीका बताया गया है b/111843389
वर्शन 1.0.0-alpha05
10 अगस्त, 2018
गड़बड़ियां ठीक की गईं
- बैकस्टैक के गलत व्यवहार से जुड़ी गड़बड़ी को ठीक किया गया है. b/111907708
- जनरेट किए गए Args क्लास के
equals()में मौजूद गड़बड़ी को ठीक किया गया है. b/111450897 - Safe Args में बिल्ड फ़ेल होने की समस्या ठीक की गई. b/109409713
- संसाधन आइडेंटिफ़ायर से Java के नामों में कन्वर्ज़न की समस्या ठीक की गई b/111602491
- Safe Args प्लगिन में, नल वैल्यू की अनुमति से जुड़े गड़बड़ी के मैसेज ठीक किए गए.
- उन एनोटेशन को जोड़ें जो मौजूद नहीं हैं और जिनमें यह जानकारी दी गई है कि कोई फ़ील्ड शून्य हो सकता है या नहीं.
वर्शन 1.0.0-alpha04
19 जुलाई, 2018
नेविगेशन 1.0.0-alpha04 और इससे जुड़े Safe Args gradle प्लगिन में, एपीआई से जुड़े कई बदलाव किए गए हैं. साथ ही, इसके काम करने के तरीके में बदलाव किए गए हैं और बग ठीक किए गए हैं.
एपीआई / व्यवहार में बदलाव
- NavHostFragment, मौजूदा फ़्रैगमेंट को हमेशा प्राइमरी नेविगेशन फ़्रैगमेंट के तौर पर सेट करेगा. इससे यह पक्का होगा कि आउटर NavController को पॉप करने से पहले, चाइल्ड फ़्रैगमेंट मैनेजर पॉप हो जाएं b/111345778
Safe Args
- बदलाव:
app:typeकोapp:argTypeमें बदल दिया गया है, ताकि ConstraintLayout 2.0.0-alpha1 जैसी अन्य लाइब्रेरी के साथ टकराव से बचा जा सके b/111110548 - Safe Args से मिले गड़बड़ी के मैसेज पर अब क्लिक किया जा सकता है b/111534438
- Args क्लास अब यह पुष्टि करती है कि
NonNullएट्रिब्यूट असल में शून्य नहीं हैं b/111451769 - NavDirections और Args जनरेट करने वाली क्लास में, अतिरिक्त
NonNullएनोटेशन जोड़े गए हैं b/111455455 b/111455456
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट डेस्टिनेशन पर डीप लिंक करने के बाद, सिस्टम के बैक बटन से जुड़ी समस्या को ठीक किया गया है b/111515685
वर्शन 1.0.0-alpha03
12 जुलाई, 2018
नेविगेशन 1.0.0-alpha03 और इससे जुड़े Safe Args gradle प्लगिन में, एपीआई से जुड़े कई बदलाव किए गए हैं. साथ ही, इसके काम करने के तरीके में बदलाव किए गए हैं और बग ठीक किए गए हैं.
एपीआई / व्यवहार में बदलाव
- Toolbar के लिए NavigationUI.setupWithNavController तरीका जोड़ा गया है b/109868820
- CollapsingToolbarLayout के लिए, NavigationUI.setupWithNavController तरीका जोड़ा गया है b/110887183
- popBackStack() अब तब 'गलत' वैल्यू दिखाता है, जब पिछली गतिविधियां खाली हों या दिया गया डेस्टिनेशन आईडी पिछली गतिविधियों में न हो b/110893637
- FragmentManager के सेव किए गए स्टेट के बाद, FragmentNavigator अब नेविगेशन की कार्रवाइयों को अनदेखा करता है. इससे “Can not perform this action after onSaveInstanceState” अपवादों से बचा जा सकता है b/110987825
Safe Args
- बदलाव की जानकारी: कार्रवाई और तर्क के नामों में मौजूद नॉन-अल्फ़ान्यूमेरिक वर्णों को, NavDirections के संबंधित तरीके के नामों में कैमल केसिंग से बदल दिया जाएगा
- उदाहरण के लिए,
DemoController.index,setDemoControllerIndexb/79995048 हो जाएगा - उदाहरण के लिए,
action_show_settings,actionShowSettingsb/79642240 में बदल जाएगा
- उदाहरण के लिए,
- बदलाव: अब डिफ़ॉल्ट रूप से, आर्ग्युमेंट को नॉन-नल माना जाता है. स्ट्रिंग और पार्सल किए जा सकने वाले आर्ग्युमेंट पर शून्य वैल्यू की अनुमति देने के लिए,
app:nullable="true"b/79642307 जोड़ें - अब “123L” के फ़ॉर्म में defaultValues के साथ
app:type="long"का इस्तेमाल किया जा सकता है b/79563966 - अब पार्सल किए जा सकने वाले आर्ग्युमेंट इस्तेमाल किए जा सकते हैं. इसके लिए,
app:typeके लिए पूरी तरह क्वालिफ़ाइड क्लास नेम का इस्तेमाल किया जाता है. डिफ़ॉल्ट वैल्यू के तौर पर सिर्फ़"@null"b/79563966 का इस्तेमाल किया जा सकता है - Args क्लास अब
equals()औरhashCode()को लागू करती हैं b/79642246 - Safe Args प्लगिन को अब लाइब्रेरी प्रोजेक्ट पर लागू किया जा सकता है b/80036553
- Safe Args प्लगिन को अब फ़ीचर प्रोजेक्ट b/110011752 पर लागू किया जा सकता है
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के लाइफ़साइकल के तरीकों के दौरान नेविगेट करते समय आने वाली समस्याओं को ठीक किया गया है b/109916080
- नेस्ट किए गए ग्राफ़ में कई बार नेविगेट करने से जुड़ी समस्याएं ठीक की गईं b/110178671
- ग्राफ़ b/109909461 में पहले डेस्टिनेशन के साथ
setPopUpToका इस्तेमाल करने से जुड़ी समस्याएं ठीक की गईं - उस समस्या को ठीक किया गया है जिसमें सभी
app:defaultValueवैल्यू को स्ट्रिंग के तौर पर पास किया जा रहा था b/110710788 - Android Gradle प्लगिन 3.2 बीटा 01 के साथ बंडल किया गया aapt2, अब नेविगेशन एक्सएमएल फ़ाइलों में मौजूद हर
android:nameएट्रिब्यूट के लिए, नियमों को बनाए रखने की सुविधा जोड़ता है b/79874119 - डिफ़ॉल्ट FragmentNavigator को बदलते समय मेमोरी लीक होने की समस्या ठीक की गई b/110900142
वर्शन 1.0.0-alpha02
7 जून, 2018
व्यवहार में बदलाव
FragmentNavigatorअबsetReorderingAllowed(true)का इस्तेमाल करता है. b/109826220नेविगेशन अब डीप लिंक यूआरएल से पार्स किए गए आर्ग्युमेंट को यूआरएलडिकोड करता है. b/79982454
गड़बड़ियां ठीक की गईं
फ़्रैगमेंट की लाइफ़साइकल के तरीकों से नेविगेट करने पर होने वाली
IllegalStateExceptionसमस्या को ठीक किया गया. b/79632233ऐनिमेशन का इस्तेमाल करते समय स्क्रीन के फ़्लिकर होने की समस्या को ठीक करने के लिए, नेविगेशन अब सपोर्ट लाइब्रेरी 27.1.1 पर निर्भर करता है. b/80160903
चाइल्ड फ़्रैगमेंट के तौर पर defaultNavHost="true" का इस्तेमाल करते समय,
IllegalArgumentExceptionको ठीक किया गया. b/79656847NavDeepLinkBuilder का इस्तेमाल करते समय,
StackOverflowErrorको ठीक किया गया. b/109653065नेस्ट किए गए ग्राफ़ पर वापस जाते समय होने वाली
IllegalArgumentExceptionको ठीक किया गया है. b/80453447launchSingleTopका इस्तेमाल करते समय, ओवरलैप होने वाले फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया है. b/79407969नेस्ट किए गए ग्राफ़ के लिए, नेविगेशन अब सही सिंथेटिक बैक स्टैक बनाता है. b/79734195
MenuItemके तौर पर नेस्ट किए गए ग्राफ़ का इस्तेमाल करने पर, NavigationUI अब सही आइटम को हाइलाइट करेगा. b/109675998
एपीआई में हुए बदलाव
NavOptionsमें कार्रवाइयों के लिएclearTaskएट्रिब्यूट और उससे जुड़े एपीआई को बंद कर दिया गया है. b/80338878कार्रवाइयों के लिए
launchDocumentएट्रिब्यूट औरNavOptionsमें इससे जुड़े एपीआई को बंद कर दिया गया है. b/109806636
वर्शन 1.0.0-alpha01
8 मई, 2018
नेविगेशन, ऐप्लिकेशन में नेविगेशन बनाने के लिए एक फ़्रेमवर्क उपलब्ध कराता है. यह शुरुआती रिलीज़ 1.0.0-alpha01 है.