नेविगेशन
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
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 28 जनवरी, 2026 | 2.9.7 | - | - | - |
डिपेंडेंसी का एलान करना
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.9.7" // 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.9.7" // 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.9.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.7" 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.9
वर्शन 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन सेफ़ आर्ग्युमेंट अब AGP 9.0 में, बिल्ट-इन Kotlin के लिए उपलब्ध कराई गई सुविधा का इस्तेमाल कर सकते हैं. (I1d9d76)
डिपेंडेंसी अपडेट
- नेविगेशन 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से: नेविगेशन सेफ़ आर्ग्युमेंट अब कंपोज़ेबल डेस्टिनेशन के साथ काम करते हैं. (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)
गड़बड़ियां ठीक की गईं
- अपडेट Enum क्लास नहीं मिली अपवाद को, ताकि अगर मिनीफ़ाइड बिल्ड में Enum क्लास मिट जाती है, तो
@Keepएनोटेशन का इस्तेमाल करने का सुझाव दिया जा सके. (I90e79, b/358137294)
मौजूदा समस्याएं
Navigation 2.8.*में जोड़े गए नए लिंट नियमों में एक समस्या है. इसकी वजह से, Android Gradle Plugin 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation 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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें बैक स्टैक को एक एंट्री तक कम करने पर,
PredictiveBackHandlerके अंदरNavHostएक अपवाद दे सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर होता था. (I1a429, b/375343407) - ग्राफ़ के
startDestinationको अपडेट करते समय,NavDestinationNullPointerExceptionको ठीक किया गया. (I99421, b/361560785) - उस समस्या को ठीक कर दिया गया है जिसकी वजह से Navigation Compose का इस्तेमाल करते समय, स्केल ऐनिमेशन अनचाहे तरीके से काम करता था. ऐसा तब होता था, जब मौजूदा ऐनिमेशन खत्म होने वाले फ़्रेम में ही navigate को कॉल किया जाता था. (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 Plugin 8.4+ के साथ लिंट चलाने परObsolete custom lint checkगड़बड़ी होती थी. (I1be3d, b/368070326, b/371463741)
मौजूदा समस्याएं
- Lint 16 (AGP 8.7) या इसके बाद के वर्शन के साथ Lint चलाने की कोशिश करते समय, नेविगेशन लिंट, कस्टम लिंट चेक से जुड़ी पुरानी गड़बड़ी का मैसेज दिखाएगा. (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)
- Navigation Compose अब Compose
1.7.2पर निर्भर करता है.
वर्शन 2.8.0
4 सितंबर, 2024
androidx.navigation:navigation-*:2.8.0 रिलीज़ हो गया है. वर्शन 2.8.0 में ये बदलाव शामिल हैं.
2.7.0 के बाद हुए ज़रूरी बदलाव
नेविगेशन Kotlin DSL में टाइप-सेफ़्टी
- नेविगेशन अब 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 की वजह से, सिर्फ़ ऐसी Enum क्लास इस्तेमाल की जा सकती हैं जो किसी दूसरी क्लास में नेस्ट की गई हों. अगले वर्शन में, टॉप लेवल के 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)SavedStateHandleFactoryटेस्ट एपीआई का इस्तेमाल अब Android के अलावा अन्य टेस्ट में भी किया जा सकता है. हालांकि, इसके लिए Robolectric को बंडल के साथ आर्ग्युमेंट पार्स करने की सुविधा देनी होगी. (I76cdc, b/340966212)- Compose में टाइप-सेफ़ नेविगेशन का इस्तेमाल करते समय, प्रोसेस बंद होने के बाद ऐप्लिकेशन को फिर से शुरू करने पर, स्थिति को वापस लाने के दौरान क्रैश होने की समस्या ठीक की गई. (Ia8f38, b/341801005)
- Navigation Compose में उस समस्या को ठीक किया गया है जिसमें अनुमानित बैक जेस्चर को रद्द करने के बाद, उपयोगकर्ता जिस
NavBackStackEntryपर वापस जाता है वह कभी भीRESUMEDलाइफ़साइकल की स्थिति में वापस नहीं आता है. इससे यह भी पक्का होता है कि फ़्लिंग करने के बाद, डेस्टिनेशन वापस अपनी जगह पर तुरंत न आ जाए, बल्कि सही तरीके से ऐनिमेट हो. (I97a0c, b/346608857) - Navigation Compose के साथ Predictive back का इस्तेमाल करने पर, पॉप किए जा रहे डेस्टिनेशन का 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 के सीरियलाइज़ किए जा सकने वाले ऑब्जेक्ट से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केstartDestinationरूट में सीधे तौर परNavGraphके आर्ग्युमेंट पास किए जा सकते हैं. यह नेस्ट किए गए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)
गड़बड़ियां ठीक की गईं
- नेविगेशन में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
NavGraphViewModels को बहुत जल्दDESTROYEDकर दिया जाता था. ऐसा इसलिए होता था, क्योंकि इससे जुड़ी एंट्री का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लीक की समस्या ठीक की गई है. इसमें किसी डेस्टिनेशन पर कईBackStackStateकॉल करने पर, कई स्थितियां सेव हो जाती थीं. हालांकि, सिर्फ़ पहली स्थिति को वापस लाया जा सकता था.saveState(I598b0, b/309559751)- ऐसी समस्या को ठीक किया गया है जिसमें ऐप्लिकेशन बार के टाइटल को भरने के लिए
NavigationUIहेल्पर का इस्तेमाल करने पर, स्ट्रिंग के अलावा अन्य आर्ग्युमेंट ठीक से नहीं दिखते थे. (#636, b/316676794)
डिपेंडेंसी अपडेट
- नेविगेशन कंपोज़ अब Compose
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation
2.8.0-alpha01से बैकपोर्ट किया गया:BackStackStateलीक की समस्या ठीक की गई है. इस समस्या में, एक हीNavBackStackEntryपर कईsaveState()कॉल करने पर, कई स्थितियां सेव हो जाती थीं. हालांकि, सिर्फ़ पहली सेव की गई स्थिति को वापस लाया जा सकता था. (I598b0, b/309559751) - Navigation
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की वैल्यू false है, तो एंट्री का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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से
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) - नेविगेशन कंपोज़ में एक साथ कई डायलॉग दिखाने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, सबसे ऊपर वाले डायलॉग को खारिज करने पर, नया सबसे ऊपर वाला डायलॉग
RESUMEDमें सही तरीके से जाने के बजाय,STARTEDलाइफ़साइकल की स्थिति में अटक जाता था. (aosp/2629401, b/286371387) - अगर नेविगेशन सेफ़ आर्ग्युमेंट को असल में लागू नहीं किया जा रहा है, तो अब यह टास्क को तुरंत शुरू नहीं करेगा. (I0e385, b/260322841)
डिपेंडेंसी अपडेट
- Navigation Compose अब Compose 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 स्टेबल हो गया है. इसलिए, हम Accompanist Navigation Animation से कोड को वापस Navigation Compose में ले जा सके.
इसका मतलब है कि AnimatedNavHost में कस्टम ट्रांज़िशन सेट करने की सुविधा, NavHost में भी उपलब्ध है.
Accompanist Navigation Animation में कोई और बदलाव नहीं किया जाएगा. हम इसे जल्द ही बंद कर देंगे. साथ ही, हम Navigation Compose पर वापस माइग्रेट करने के तरीके के बारे में दिशा-निर्देश भी देंगे. हालांकि, अगर पहले से ही Accompanist के सबसे नए वर्शन (0.31.2-alpha) का इस्तेमाल किया जा रहा है, तो आपको माइग्रेशन गाइड के उलट काम करना होगा. इसके अलावा, आपको एपीआई में कोई और बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)
गड़बड़ियां ठीक की गईं
- Navigation Compose में मौजूद NavHost अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. भले ही, गतिविधि को STOP और RESUME किया गया हो. (Icb6de, b/279118447)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब
1.1.0से1.5.0तक कंपोज़ करने पर निर्भर करता है.
वर्शन 2.7.0-rc01
26 जुलाई, 2023
androidx.navigation:navigation-*:2.7.0-rc01 रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
NavHostके हिस्से के तौर पर बनाए गएEnterTransitionऔरExitTransitionलैम्डा, कंपोज़िशन से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 स्टेबल हो गया है. इसलिए, हम Accompanist Navigation Animation से कोड को वापस 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बनाने की कोशिश करने पर अब लिंट की चेतावनी दिखेगी. इसमें बताया जाएगा कि डीप लिंक के मान्य होने के लिए, यूआरआई, ऐक्शन, और/या माइमटाइप की ज़रूरत होती है.
2.5.0 के बाद से, फ़्रैगमेंट के साथ नेविगेशन में हुए अहम बदलाव
NavHostFragmentअब सिस्टम के बैक बटन को खुद इंटरसेप्ट नहीं करता है. इससेFragmentManagerको सिस्टम बैक को मैनेज करने की अनुमति मिलती है. इससे Fragment1.7.0-alpha01और इससे ऊपर के वर्शन, Android U डिवाइसों पर ऐप्लिकेशन में पीछे जाने पर झलक दिखाने वाला ऐनिमेशन दिखा सकते हैं.- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, मैन्युअल तरीके से
FragmentTransactionकरने की कोशिश करने पर अबIllegalArgumentExceptionदिखेगा. इससेFragmentManagerकी पिछली ऐक्टिविटी में फ़्रैगमेंट जुड़ जाता है. आपको हमेशाnavigate()एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए. - नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में,
app:dataऔरapp:dataPatternएट्रिब्यूट में प्लेसहोल्डर के तौर पर${applicationId}स्ट्रिंग का इस्तेमाल करने पर, प्लेसहोल्डर में कॉन्टेक्स्ट काpackageNameअपने-आप भर जाएगा. FragmentNavigatorअब नेविगेट करते समय औरNavBackStackEntriesको पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntryLifecycleअब फ़्रैगमेंट में एंट्री और उससे बाहर निकलने के खास इफ़ेक्ट के पूरा होने का इंतज़ार करेगा. इसके बाद ही, वह अपनी फ़ाइनलLifecycle.Stateको मूव करेगा.DialogFragmentNavigatorअब नेविगेट करते समय औरNavBackStackEntriesको पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntryLifecycle,DialogFragmentLifecycleकेDESTROYEDपर जाने का इंतज़ार करेगा. इसके बाद ही, वह खुदDESTROYEDपर जाएगा.NavHostFragmentकोFragmentManagerसे अटैच करने के तुरंत बाद,NavHostFragmentको वापस पाया जा सकता है. इसके लिए,onCreate()का इंतज़ार करने की ज़रूरत नहीं है.NavController- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब Play Feature Delivery Library पर निर्भर करती है.
- नेविगेशन सेफ़ आर्ग्युमेंट अब 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)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, मैन्युअल तरीके से
FragmentTransactionकरने की कोशिश करने पर अबIllegalArgumentExceptionदिखेगा. इससेFragmentManagerकी पिछली ऐक्टिविटी में फ़्रैगमेंट जुड़ जाता है. आपको हमेशा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कोFragmentManagerसे अटैच करने के तुरंत बाद,NavHostFragmentको वापस पाया जा सकता है. इसके लिए,onCreate()का इंतज़ार करने की ज़रूरत नहीं है.NavController(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) - 2.6.0-alpha06 वर्शन में हुई एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी की वजह से, टैब के बीच सिस्टम बैक का इस्तेमाल करते समय,
BottomNavigationViewमें मौजूद गलतMenuItemहाइलाइट हो जाता था. (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के साथ नेविगेट करते समय, अगर एक से ज़्यादा एंट्री वाली पिछली ऐक्टिविटी को वापस लाने की कोशिश की जाती है, तो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अबprepareForTransitionएपीआई उपलब्ध कराता है, ताकि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)
- नेविगेशन सेफ़ आर्ग्युमेंट अब 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में:Crossfadeके लिए कोई डेस्टिनेशन उपलब्ध न होने पर,NavHostकी वजह से अबNoSuchElementExceptionनहीं दिखेगा. अब यह सिर्फ़ कंपोज़िशन को स्किप करेगा. (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आर्ग्युमेंट के साथ काम करता है. इसके लिए,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)
- अब एक ही डेस्टिनेशन पर नेविगेट करते समय, Navigation, Fragment इंस्टेंस को सही तरीके से बदल देगा. इसके लिए,
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 लाइब्रेरी अब 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पर काम कर सके. साथ ही, AGP के7.0से पहले के वर्शन के साथ काम करने की सुविधा को बंद कर दिया है.- applicationId के बजाय, namespace build.gradle एट्रिब्यूट का इस्तेमाल करने की सुविधा जोड़ी गई.
अन्य बदलाव
visibleEntriesAPI अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. यह एक ऐसा फ़ंक्शन उपलब्ध कराता है जिसकी मदद से उन सभी एंट्री को वापस पाया जा सकता है जिनका डेस्टिनेशन, फ़िलहालNavControllerके हिसाब से दिख रहा है.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.navigation:navigation-*:2.5.0-rc02 रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज़
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
dismiss()कॉल को एक्ज़ीक्यूट करते समय,DialogNavigatorअब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बनाने के लिए,CreationExtrasकोby navGraphViewModelsमें पास किया जा सकता है. (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) NavDeepLinkअब 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अब args को दो बार गैर-ज़रूरी तरीके से डिकोड नहीं करता है. इसका मतलब है कि अब सही तरीके से डिकोड किए गए args को आपके फ़ाइनल डेस्टिनेशन पर पास किया जाता है. (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सबक्लास) की नल होने की स्थिति में सुधार हुआ है.-ktxआर्टफ़ैक्ट का हिस्सा रहे सभी Kotlin एक्सटेंशन फ़ंक्शन को उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है.-ktxआर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे. navigation-fragmentआर्टफ़ैक्ट में अबAbstractListDetailFragmentके ज़रिए, दो पैन वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. यह फ़्रैगमेंट, सूची वाले पैन को मैनेज करने के लिएSlidingPaneLayoutका इस्तेमाल करता है. यह सूची वाला पैन, आपकी सबक्लास उपलब्ध कराती है. साथ ही, यह फ़्रैगमेंट, जानकारी वाले पैन को मैनेज करने के लिए भीSlidingPaneLayoutका इस्तेमाल करता है. इसे लागू करने के उदाहरण में देखा जा सकता है.NavHostFragmentNavControllerपर मौजूदcurrentBackStackEntryAsFlow()तरीके से, एकFlowमिलता है. यह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 DSL
Navigation के पिछले वर्शन में, हर डेस्टिनेशन के लिए एक पूर्णांक आईडी होता था. यह आईडी, डेस्टिनेशन की पहचान उसके जैसे अन्य डेस्टिनेशन से अलग तौर पर करता था. इससे आपको सीधे तौर पर या किसी कार्रवाई के ज़रिए, उस डेस्टिनेशन पर 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 DSL में
popUpToKotlin प्रॉपर्टी को बंद कर दिया गया है. इसके बजाय,popUpToIdका इस्तेमाल करें. getStartDestination()एपीआई अब काम नहीं करता. उसकी जगहgetStartDestinationId()का इस्तेमाल किया जाता है.
आईडी के हिसाब से नेविगेट करने के बजाय, रूट के हिसाब से नेविगेट करने पर वही नियम लागू होते हैं जो इंप्लिसिट डीप लिंक के लिए लागू होते हैं. इसका मतलब है कि किसी भी नेस्ट किए गए ग्राफ़ में मौजूद किसी भी डेस्टिनेशन पर सीधे नेविगेट किया जा सकता है. इससे यह पक्का होता है कि इन रास्तों का इस्तेमाल मल्टी-मॉड्यूल प्रोजेक्ट में किया जा सकता है. इसके लिए, हर डेस्टिनेशन में बाहरी तौर पर दिखने वाला डीप लिंक जोड़ने की ज़रूरत नहीं होती.
Navigation Compose
navigation-compose आर्टफ़ैक्ट, Navigation Component और Jetpack Compose के बीच इंटिग्रेशन उपलब्ध कराता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.
इस रिलीज़ में ये सुविधाएं उपलब्ध हैं:
- यह एक
NavHostकंपोज़ेबल है. इसकी मदद से,composableऔरdialogडेस्टिनेशन का इस्तेमाल करके, Kotlin DSL के ज़रिए नेविगेशन ग्राफ़ बनाया जा सकता है. साथ ही, इसमें Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर के लिए भी सहायता मिलती है. - डेस्टिनेशन के बीच क्रॉसफ़ेडिंग की सुविधा देना ज़रूरी है. साथ-साथ चलने वाले नेविगेशन ऐनिमेशन का इस्तेमाल करके, एक्सपेरिमेंटल कंपोज़ एपीआई की मदद से, स्क्रीन में शामिल होने और उससे बाहर निकलने के ट्रांज़िशन को कंट्रोल किया जा सकता है.
- हर कंपोज़ेबल डेस्टिनेशन के लिए,
Lifecycleका स्कोप तय करना. हर डेस्टिनेशन, सिर्फ़ तबRESUMEDस्थिति में पहुंचता है, जब सभी ट्रांज़िशन पूरे हो जाते हैं. इसके बाद, जैसे ही कोई ट्रांज़िशन शुरू होता है, वह तुरंतSTARTEDस्थिति में आ जाता है. इस तरह,LifecycleकेRESUMEDहोने पर सिर्फ़navigateकॉल को ट्रिगर करके,IllegalStateExceptionऔर मल्टी-टच से जुड़ी सभी समस्याओं से बचा जा सकता है. - डेस्टिनेशन लेवल पर,
ViewModelको स्कोप करना. इसके लिए, Lifecycle ViewModel Compose2.4.0केviewModel()API या Hilt Navigation Compose1.0.0केhiltViewModel()का इस्तेमाल किया जाता है. इससे, कॉन्फ़िगरेशन में बदलाव होने और बैक स्टैक में होने पर भी स्कोप बना रहता है. ऐसा तब होता है, जब आपके कंपोज़ेबल कॉन्टेंट को किसी और तरीके से डिस्पोज़ किया जाता है. साथ ही, 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()याpopUpToSaveStateकी मदद से सेव किए गए किसी भी स्टेट को मिटाने के लिए,clearBackStack()तरीके का इस्तेमाल किया जा सकता है.popBackStack()
हर मामले में, 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का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी.
मौजूदा समस्याएं
- Navigation
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) - Navigation Compose में एक समस्या ठीक की गई है. इसमें कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस बंद होने के बाद, पुरानी गतिविधि का रेफ़रंस सेव रहता था. (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पर मौजूदonNavDestinationSelectedएपीआई,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)
एपीआई में हुए बदलाव
visibleEntriesएपीआई को अब एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. (I93f6f)
गड़बड़ियां ठीक की गईं
- एक ही स्क्रीन के बीच आगे-पीछे नेविगेट करने पर, ट्रांज़िशन में रुकावट आने पर ViewModels अब डिस्ट्रॉय नहीं होंगे (Id52d8, b/200817333)
NavDeepLinkमें डीप लिंक जोड़ते समय, अब शून्य हो सकने वालेNavDeepLinkआर्ग्युमेंट के लिए डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं होती.NavDestination(I5aad4, b/201320030)- अब अलग-अलग लाइफ़साइकल वाले NavBackStackEntries को एक जैसा नहीं माना जाता. इसका मतलब है कि NavHost, singleTop का इस्तेमाल करके नेविगेशन करते समय और बॉटम मेन्यू आइटम को फिर से चुनते समय, सभी डेस्टिनेशन को सही तरीके से फिर से कंपोज़ करेगा. (I1b351, b/196997433)
AbstractListDetailFragmentसे जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से,onCreateListPaneView()से मिले जवाब के लिस्ट पैन में मौजूदlayout_widthऔरlayout_weightएट्रिब्यूट को गलत तरीके से हैंडल किया जा रहा था या अनदेखा किया जा रहा था. (f5fbf3)- डायलॉग डेस्टिनेशन की विज़ुअल स्थिति अब
DialogFragmentNavigatorकी स्थिति के साथ सही तरीके से सिंक होती है. इसका मतलब है कि अबdismiss()के लिए, एसिंक्रोनसDialogFragmentएपीआई को मैन्युअल तरीके से कॉल करने पर, खारिज किए गए डायलॉग बॉक्स के ऊपर मौजूद सभी डायलॉग डेस्टिनेशन ठीक से हट जाते हैं. इससे उन मामलों पर कोई असर नहीं पड़ता जिनमें डायलॉग को खारिज करने के लिए,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में जोड़ा जाएगा, ताकि Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर को बेहतर तरीके से सपोर्ट किया जा सके. (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)
- Navigation Compose अब Lifecycle ViewModel Compose
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) - SafeArgs java जनरेटर को अब Args क्लास जनरेट करते समय, लिंट की चेतावनियां नहीं दिखानी चाहिए. (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)
गड़बड़ियां ठीक की गईं
- हमने एक
NoSuchElementExceptionको ठीक किया है. यह तब होता था, जबNavBackStackEntryसे जुड़ेLifecycleObserverमें मौजूदpopBackStack()को कॉल करने पर, NavController की स्थिति में फिर से अपडेट होने की वजह से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का इस्तेमाल करता है. यह सूची वाला पैन, आपकी सबक्लास उपलब्ध कराती है. साथ ही, यह फ़्रैगमेंट, जानकारी वाले पैन को मैनेज करने के लिए भी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)Kotlinसे पहले के वर्शन का इस्तेमाल करके ऐप्लिकेशन बनाने पर, SafeArgs अब काम नहीं करेगा.1.5.0(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 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब रास्तों का इस्तेमाल, ऐक्टिविटी, फ़्रैगमेंट, और डायलॉग डेस्टिनेशन के लिए किया जा सकता है. साथ ही, पूरे 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पैरामीटर की वैल्यू, अब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मिलता है. यहFlowतब ट्रिगर होता है, जब मौजूदाNavBackStackEntryबदलता है. इस फ़्लो का इस्तेमाल,OnDestinationChangedListenerको मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है. (I19c4a, #89, b/163947280)
एक से ज़्यादा बैक स्टैक
NavController, डेस्टिनेशन के बैक स्टैक को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate() करते हैं, तो यह उसे बैक स्टैक में जोड़ता है. साथ ही, जब आप popBackStack() को कॉल करते हैं या सिस्टम के बैक बटन को ट्रिगर करते हैं, तो यह डेस्टिनेशन को बैक स्टैक से हटाता है. बैक स्टैक को सेव करने और उसे वापस लाने की सुविधा को सपोर्ट करने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद मौजूदा NavOptions क्लास और <action> एंट्री को बड़ा किया गया है. (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 Kotlin DSL के ज़रिए ग्राफ़ बनाते समय, पूर्णांक आईडी का इस्तेमाल करने का विकल्प मिलता है. (b/172823546)
ऐसे सभी एपीआई जो सिर्फ़ आईडी लेते थे उनमें अब एक ओवरलोड होता है, जो रूट String लेता है. इसमें navigate(), popBackStack(), popUpTo(), और getBackStackEntry() शामिल हैं.
इससे एपीआई पर कुछ असर पड़ा है:
- Kotlin डीएसएल में
popUpTokotlin प्रॉपर्टी को बंद कर दिया गया है. अब इसकी जगहpopUpToIdका इस्तेमाल किया जा सकता है. (I59c73, b/172823546) getStartDestination()एपीआई अब काम नहीं करता. उसकी जगहgetStartDestinationId()का इस्तेमाल किया जाता है. (I0887f, b/172823546)
नेविगेशन कंपोज़ के पिछले वर्शन से नेविगेशन कंपोज़ 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
NavDestination पर KEY_ROUTE आर्ग्युमेंट को route प्रॉपर्टी से बदल दिया गया है. इससे आपको सीधे navBackStackEntry.destination.route को कॉल करने की सुविधा मिलती है.
एपीआई में हुए बदलाव
- नेविगेशन से जुड़े सभी आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे कि
NavTypeसबक्लास) की नल होने की स्थिति में सुधार हुआ है.-ktxआर्टफ़ैक्ट का हिस्सा रहे सभी Kotlin एक्सटेंशन फ़ंक्शन को उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है.-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)
लिखने की सुविधा
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) NamedNavArgumentकेnameऔरargumentफ़ील्ड और डिस्ट्रक्चरिंग फ़ंक्शन को सार्वजनिक करने के लिए, jossiwolf का धन्यवाद. (#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 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन कंपोज़ अब Lifecycle ViewModel Compose 1.0.0-alpha01 पर निर्भर करता है, ताकि
composableडेस्टिनेशन के लिएviewModel()सहायता उपलब्ध कराई जा सके. (I7a374) NavHostअब Activity-Compose 1.3.0-alpha01 से मिले नएLocalOnBackPressedDispatcherOwnerका इस्तेमाल करके,OnBackPressedDispatcherको हासिल करता है. यहNavControllerपर सेट होता है. (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 के पैरामीटर की सूची में, अब route से पहले startDestination दिखता है (Ie620e)
- अब 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 के तौर पर सेट किया गया है. अब यह, ऐक्टिविटी के लाइफ़साइकल के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)
- उस समस्या को ठीक किया गया है जिसमें नेविगेशन ग्राफ़ में मौजूद आखिरी डेस्टिनेशन को हटाने वाले
popUpToके साथnavigate()का इस्तेमाल करने पर, नेविगेशन ग्राफ़ तुरंत बंद नहीं होता था और न ही बैक स्टैक से हटता था. (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 का इस्तेमाल करके नेविगेट करना लेख पढ़ें.
मौजूदा समस्याएं
- डीप लिंक ऐक्शन और माइम टाइप के लिए, मेनिफ़ेस्ट मर्जर की सुविधा अभी उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में मौजूद
<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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेस्टिनेशन के ऐसे इंस्टेंस को बदलने के दौरान
NullPointerExceptionको ठीक किया गया है जिसमें कोई आर्ग्युमेंट नहीं है. इसे ऐसे इंस्टेंस से बदला गया है जिसमें आर्ग्युमेंट हैं औरsingleTopहै. (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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद,
NavBackStackEntryकाLifecycleठीक से अपडेट नहीं होता था. (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:uriके साथ-साथapp:actionऔरapp:mimeTypeके लिए भी उपलब्ध कराया गया है. NavController अब नईNavDeepLinkRequestक्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन से नेविगेट करने की सुविधा देता है. (b/136573074, b/135334841)
<deeplink> एलिमेंट में एट्रिब्यूट को मैन्युअल तरीके से जोड़ा जा सकता है. साथ ही, मेनिफ़ेस्ट में <intent-filter> को मैन्युअल तरीके से जोड़ा जा सकता है.
एपीआई में हुए बदलाव
- डाइनैमिक नेविगेशन डेस्टिनेशन के लिए, 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.2.0पर निर्भर करता है, ताकि डेवलपर को नई डिपेंडेंसी पर जाने के लिए मजबूर न किया जा सके. ऐसा तब होता है, जब नेविगेशन Core1.2.0में मौजूद किसी भी नए एपीआई पर निर्भर नहीं होता है.1.1.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अब लाइफ़साइकल ViewModel SavedState2.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के लिएnavigation-uiProGuard के नियमों को अपडेट किया गया है, ताकि यह पक्का किया जा सके किandroid.enableJetifier=trueकी ज़रूरत न पड़े.DrawerArrowDrawable(b/147610424)navigation-common-ktxमॉड्यूल का मेनिफ़ेस्ट पैकेज नाम अब यूनीक है. यहnavigation-runtime-ktxके मेनिफ़ेस्ट पैकेज नाम के साथ शेयर नहीं किया जाता है. (aosp/1141947)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन
2.2.1अब लाइफ़साइकल ViewModel SavedState2.2.0और फ़्रैगमेंट1.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मिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए आर्ग्युमेंट भी मिलते हैं. - लाइफ़साइकल व्यू मॉडल सेव्डस्टेट इंटिग्रेशन:
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)
डिपेंडेंसी में बदलाव
- नेविगेशन अब लाइफ़साइकल
2.2.0-rc03, लाइफ़साइकल व्यूमॉडल सेव्डस्टेट1.0.0-rc03, ऐक्टिविटी1.1.0-rc03, और फ़्रैगमेंट1.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)
- अगर कोई एक्स्ट्रा नहीं है, तो
ActivityपरnavArgs()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का इस्तेमाल करने पर, अबSavedStateViewModelFactoryडिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल की जाती है. इसके अलावा,NavController.getViewModelStoreOwner()से मिलेViewModelStoreOwnerके साथViewModelProviderकंस्ट्रक्टर का इस्तेमाल करने पर भी ऐसा होता है.by navGraphViewModels()(b/135716331)
एपीआई में हुए बदलाव
- नेविगेशन
2.1.0-rc01से:NavControllerपर बंद किए गएgetViewModelStore()एपीआई को हटा दिया गया है. इसे2.1.0-alpha02में लॉन्च किया गया था. (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()एपीआई को हटा दिया गया है. इसे2.1.0-alpha02में लॉन्च किया गया था. (aosp/1091021)
वर्शन 2.1.0-beta02
19 जुलाई, 2019
androidx.navigation:*:2.1.0-beta02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
2.1.0-beta01में, अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटाया गया. (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के साथapp:argTypeको अबstringआर्ग्युमेंट के तौर पर सही तरीके से अनुमान लगाया जाता है. b/129629192android:defaultValue=”@null”
वर्शन 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
गड़बड़ियां ठीक की गईं
<activity>डेस्टिनेशन के लिएandroid:nameको अब इन्फ़्लेशन के समय क्लास में पार्स नहीं किया जाता है. इससे डाइनैमिक सुविधाओं का इस्तेमाल करते समय, 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नहीं भेजता. इससे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 के बराबर में बदलता है.
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 कोड, अब
Rक्लास से जुड़े पैकेज के नाम मेंinऔरfunजैसे Kotlin कीवर्ड को सही तरीके से एस्केप करता है. b/126020455
वर्शन 1.0.0-rc01
21 फ़रवरी, 2019
यह नेविगेशन लाइब्रेरी के 1.0.0 स्टेबल वर्शन का रिलीज़ कैंडिडेट है. इस रिलीज़ में एक गड़बड़ी ठीक की गई है.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट और
singleTopनेविगेशन ऑपरेशन का इस्तेमाल करते समय आने वाली समस्या को ठीक किया गया b/124294805
वर्शन 1.0.0-beta02
12 फ़रवरी, 2019
इस रिलीज़ में, कई छोटे-मोटे सुधार किए गए हैं और ज़रूरी गड़बड़ियां ठीक की गई हैं.
नई सुविधाएं
- अब
referenceआर्ग्युमेंट के लिए,0को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नहीं मिलता है. हालांकि, इन्हें अनदेखा किया जाता है. इससे नेस्ट किए गए या कईIllegalStateExceptionसे जुड़ी समस्याएं ठीक हो जाती हैं. b/121340440NavHostFragment
नुकसान पहुंचा सकने वाले बदलाव
- किसी गतिविधि में पॉप ऐनिमेशन लागू करने के लिए,
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 में सिंगल ऐक्टिविटी के बारे में हुई बातचीत में विस्तार से बताया गया है. साथ ही, हम नेविगेशन की मदद से टेस्टिंग के बारे में ज़्यादा दस्तावेज़ तैयार करेंगे.
नई सुविधाएं
MenuItemवालेmenuCategory="secondary", अबNavigationUIतरीकों के साथ इस्तेमाल किए जाने पर बैक स्टैक नहीं दिखाएंगे. b/120104424AppBarConfigurationअब आपको फ़ॉलबैकOnNavigateUpListenerइंस्टेंस सेट करने की अनुमति देता है. जबnavController.navigateUp(),falseदिखाता है, तब इस इंस्टेंस को कॉल किया जाएगा. b/79993862 b/120690961
नुकसान पहुंचा सकने वाले बदलाव
<argument>के साथargType="reference"का इस्तेमाल करने पर, नेविगेशन अब रेफ़रंस को पार्स नहीं करता. इसके बजाय, रॉ रिसोर्स आईडी उपलब्ध कराता है. 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. इन्हेंfinalबना दिया गया है aosp/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()तरीके को अबNonNullb/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
- FragmentNavigator अब नेविगेशन की उन कार्रवाइयों को अनदेखा करता है जो FragmentManager के सेव किए गए स्टेट के बाद की जाती हैं. इससे “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
- ग्राफ़ में पहले डेस्टिनेशन के साथ
setPopUpToका इस्तेमाल करते समय आने वाली समस्याएं ठीक की गईं b/109909461 app:defaultValueकी सभी वैल्यू को स्ट्रिंग के तौर पर पास करने से जुड़ी समस्या को ठीक किया गया है b/110710788- Android Gradle प्लगिन 3.2 Beta 01 के साथ बंडल किया गया aapt2, अब नेविगेशन एक्सएमएल फ़ाइलों में मौजूद हर
android:nameएट्रिब्यूट के लिए कीप नियम जोड़ता है b/79874119 - डिफ़ॉल्ट FragmentNavigator को बदलते समय मेमोरी लीक होने की समस्या ठीक की गई b/110900142
वर्शन 1.0.0-alpha02
7 जून, 2018
व्यवहार में बदलाव
FragmentNavigatorअबsetReorderingAllowed(true)का इस्तेमाल करता है. b/109826220नेविगेशन अब डीप लिंक यूआरएल से पार्स किए गए आर्ग्युमेंट को URLDecode करता है. b/79982454
गड़बड़ियां ठीक की गईं
फ़्रैगमेंट लाइफ़साइकल के तरीकों से नेविगेट करने के दौरान,
IllegalStateExceptionको ठीक किया गया. b/79632233ऐनिमेशन का इस्तेमाल करते समय स्क्रीन के फ़्लिकर होने की समस्या को ठीक करने के लिए, नेविगेशन अब Support Library 27.1.1 पर निर्भर करता है. b/80160903
चाइल्ड फ़्रैगमेंट के तौर पर defaultNavHost="true" का इस्तेमाल करते समय,
IllegalArgumentExceptionको ठीक किया गया. b/79656847NavDeepLinkBuilder का इस्तेमाल करते समय,
StackOverflowErrorको ठीक किया गया. b/109653065नेस्ट किए गए ग्राफ़ पर वापस जाने के दौरान होने वाली
IllegalArgumentExceptionको ठीक किया गया है. b/80453447launchSingleTopका इस्तेमाल करते समय, ओवरलैप होने वाले फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया है. b/79407969नेस्ट किए गए ग्राफ़ के लिए, नेविगेशन अब सही सिंथेटिक बैक स्टैक बनाता है. b/79734195
MenuItemके तौर पर नेस्ट किए गए ग्राफ़ का इस्तेमाल करने पर, NavigationUI अब सही आइटम को हाइलाइट करेगा. b/109675998
एपीआई में हुए बदलाव
कार्रवाइयों के लिए
clearTaskएट्रिब्यूट औरNavOptionsमें इससे जुड़ा एपीआई अब काम नहीं करेगा. b/80338878कार्रवाइयों के लिए
launchDocumentएट्रिब्यूट औरNavOptionsमें इससे जुड़ा एपीआई बंद कर दिया गया है. b/109806636
वर्शन 1.0.0-alpha01
8 मई, 2018
नेविगेशन, ऐप्लिकेशन में नेविगेशन बनाने के लिए एक फ़्रेमवर्क उपलब्ध कराता है. यह शुरुआती रिलीज़ 1.0.0-alpha01 है.