नेविगेशन
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
| नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
|---|---|---|---|---|
| 24 सितंबर, 2025 | 2.9.5 | - | - | - |
डिपेंडेंसी का एलान करना
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.5" // 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.5" // 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.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.5" 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.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 इंटरफ़ेस
- कस्टम नेविगेटर अब अपने डेस्टिनेशन को
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) - Navigation 2.8.8 से:
NavDeepLinkमैचिंग की समस्या ठीक कर दी गई है. इसमें यूआरआई, ऐक्शन, और माइम के लिए, डीपलिंक और डीपलिंक अनुरोध का सटीक मिलान होना ज़रूरी है. अगर सिर्फ़ एक या दो फ़ील्ड मैच होते हैं, तो अब मैचिंग की अनुमति नहीं है. (I3b029, b/395712033) - Navigation 2.8.8 में, एक बग ठीक किया गया है. इस बग की वजह से, वाइल्डकार्ड पाथ वाले रूट, जोड़े गए डीपलिंक से मैच नहीं होते थे (I7ea92, b/389970341)
बाहरी योगदान
- नेविगेशन-कॉमन, नेविगेशन-रनटाइम, और नेविगेशन-कंपोज़ एपीआई को सामान्य प्लैटफ़ॉर्म पर एक्सट्रैक्ट करें. धन्यवाद कॉन्स्टेंटिन त्स्खोवरेबोव! (I1e626, Ica76f, Idf479)
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- b/395712033 को ठीक करने के लिए किए जा रहे काम की वजह से, डीपलिंक के लिए यह ज़रूरी है कि उनमें डीपलिंक के अनुरोध और/या
Intentके सभी फ़ील्ड मौजूद हों. डीप लिंक सिर्फ़ उन फ़ील्ड से मैच होने चाहिए जो उनमें मौजूद हैं. साथ ही, जो फ़ील्ड शामिल नहीं हैं उन्हें अनदेखा किया जाना चाहिए. इस समस्या को b/399826566 के तहत, आने वाले वर्शन में ठीक कर दिया गया है.
वर्शन 2.9.0-alpha06
12 फ़रवरी, 2025
androidx.navigation:navigation-*:2.9.0-alpha06 रिलीज़ हो गया है. वर्शन 2.9.0-alpha06 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन से जुड़ी Safe Args कार्रवाइयों को अब
@CheckResultएनोटेशन के साथ जनरेट किया जाता है, ताकि यह पक्का किया जा सके कि उनका इस्तेमाल किया जा रहा है. (I14d4c, b/356323084)
गड़बड़ियां ठीक की गईं
NavControllerमें मौजूद एक गड़बड़ी को ठीक किया गया है. इस गड़बड़ी में, backStack की स्थितियों को सूची में सेव किए जाने पर, उन्हें गलत तरीके से ऐरे में वापस लाने की कोशिश की जाती थी. (Idfb9b)- नेविगेशन
2.8.7से: नेविगेशन Safe Args अब कंपोज़ेबल डेस्टिनेशन के साथ काम करता है. (I35320, b/362791955)
वर्शन 2.9.0-alpha05
29 जनवरी, 2025
androidx.navigation:navigation-*:2.9.0-alpha05 रिलीज़ हो गया है. वर्शन 2.9.0-alpha05 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज़ का इस्तेमाल करते समय, स्केल ऐनिमेशन के अचानक दिखने की समस्या को ठीक किया गया है. (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) - उस समस्या को ठीक कर दिया गया है जिसकी वजह से, नेविगेशन कंपोज़ का इस्तेमाल करते समय और उसी फ़्रेम में नेविगेट को कॉल करते समय, अनचाहा स्केल ऐनिमेशन दिखता था जिसमें मौजूदा ऐनिमेशन खत्म हो रहा होता था. (I26cb1, b/353294030)
- हमने उस
ConcurrentModificationExceptionको ठीक किया है जो तब हो सकता है, जबNavBackStackEntryसे जुड़ाLifecycleObserver, बैक स्टैक में बदलाव को ट्रिगर करता है. ऐसा तब होता है, जब होस्टLifecycleOwner, जैसे कि ऐक्टिविटी या फ़्रैगमेंट, अपने लाइफ़साइकल की स्थिति बदलता है. (Ia9494)
बाहरी योगदान
- नेविगेशन टाइप की सुरक्षा से जुड़ी सुविधा अब
List<Enum>को किसी रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की अनुमति देती है. इसके लिए, किसी कस्टमNavTypeकी ज़रूरत नहीं होती. धन्यवाद Csaba Kozák! (GH-725, b/375559962)
वर्शन 2.8.4
13 नवंबर, 2024
androidx.navigation:navigation-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन
2.9.0-alpha03से: नेविगेशन टाइप की सुरक्षा, अब वैल्यू क्लास को रास्ते के तौर पर या रास्ते के आर्ग्युमेंट टाइप (I9344a, b/374347483) के तौर पर इस्तेमाल करने की सुविधा देती है
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.9.0-alpha01से: पहलेDESTROYEDकिए गएNavControllerका इस्तेमाल करने पर, अबIllegalStateExceptionदिखेगा. (I520da, b/369616172)
वर्शन 2.8.3
16 अक्टूबर, 2024
androidx.navigation:navigation-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-common,navigation-runtime, औरnavigation-composeमॉड्यूल के लिए, नए लिंट चेक जोड़े गए हैं. इससे टाइप-सेफ़ उन रास्तों की पहचान करने में मदद मिलती है जिन्हें@Serializableके साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभीNavGraphBuilderऔरNavDeepLinkBuilderएक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)navigation-common,navigation-runtime, औरnavigation-composeमॉड्यूल के लिए, नए लिंट चेक जोड़े गए हैं. इससे Enum आर्ग्युमेंट वाले ऐसे टाइप-सेफ़ रास्तों की पहचान करने में मदद मिलेगी जिन्हें@Keepके साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभीNavGraphBuilderऔरNavDeepLinkBuilderएक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
Navigation 2.8.*में जोड़े गए नए लिंट नियमों की वजह से, Android Gradle प्लगिन 8.4+ के साथ लिंट चलाने परObsolete custom lint checkगड़बड़ी होती थी. (I1be3d, b/368070326, b/371463741)
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- Lint 16 (AGP 8.7) या इसके बाद के वर्शन के साथ 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)
डिपेंडेंसी अपडेट
- नेविगेशन सेफ़ आर्ग्युमेंट अब 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 के बाद हुए ज़रूरी बदलाव
Navigation 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अब test api का इस्तेमाल, Android के अलावा अन्य टेस्ट में भी किया जा सकता है. हालांकि, इसके लिए Robolectric को Bundles के साथ आर्ग्युमेंट पार्स करने की सुविधा देनी होगी. (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 Serializable ऑब्जेक्ट सेSavedStateHandleबनाया जा सके. (Id4867, b/339080702)
गड़बड़ियां ठीक की गईं
- Navigation Kotlin DSL फ़ंक्शन के लिए, पैरामीटर के दस्तावेज़ मौजूद नहीं थे. इन्हें जोड़ दिया गया है. (I26a36)
वर्शन 2.8.0-alpha08
1 मई, 2024
androidx.navigation:navigation-*:2.8.0-alpha08 रिलीज़ हो गया है. वर्शन 2.8.0-alpha08 में ये बदलाव शामिल हैं.
Navigation Compose में Safe Args का इस्तेमाल करना
- Kotlin Serialization पर आधारित Navigation Kotlin DSL और Navigation Compose के लिए, कंपाइल टाइम टाइप की सुरक्षा से जुड़ी सुविधा को सपोर्ट करने का काम पूरा हो गया है. साथ ही, पहले एक्सपेरिमेंट के तौर पर उपलब्ध कराए गए एपीआई अब स्टेबल हो गए हैं. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
इस सुविधा में Kotlin Serialization का इस्तेमाल किया जाता है. इससे, टाइप सेफ़ ऑब्जेक्ट और डेटा क्लास के ज़रिए, नेविगेशन ग्राफ़ में डेस्टिनेशन तय किए जा सकते हैं:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
ज़्यादा जानकारी के लिए, Navigation Compose meet Type Safety ब्लॉग पोस्ट देखें.
नई सुविधाएं
navigation-fragment-composeआर्टफ़ैक्ट अबComposableFragmentमें कंपोज़ेबल तरीकों के लिए,LocalFragmentकंपोज़िशन उपलब्ध कराता है. (If35e5)NavTypeमें अब Int, String, Boolean, Float, और Long की सूचियों के लिए, पहले से मौजूद सहायता उपलब्ध है. (I4b6dd, Ia914c, b/188693139)
वर्शन 2.8.0-alpha07
17 अप्रैल, 2024
androidx.navigation:navigation-*:2.8.0-alpha07 रिलीज़ हो गया है. वर्शन 2.8.0-alpha07 में ये बदलाव शामिल हैं.
नई सुविधाएं
यह एक नया
navigation-fragment-composeआर्टफ़ैक्ट जोड़ता है. इसमेंNavHostFragmentकाComposableNavHostFragmentविकल्प शामिल होता है. इसकी मदद से, नेविगेशन एक्सएमएल फ़ाइलों मेंcomposableडेस्टिनेशन जोड़े जा सकते हैं. हरcomposableडेस्टिनेशन को टॉप-लेवल, बिना किसी तर्क वाले@Composableतरीके के तौर पर दिखाया जाना चाहिए. इसके पूरी तरह क्वालिफ़ाइड नाम का इस्तेमाल, हर डेस्टिनेशन परandroid:nameएट्रिब्यूट के तौर पर किया जाता है. इन डेस्टिनेशन में से किसी एक पर नेविगेट करते समय, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बनाया जाता है. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
एपीआई में हुए बदलाव
- Kotlin Serialization पर आधारित अप्रोच का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता जारी रखी गई. ये एपीआई अभी तैयार नहीं हुए हैं और इन्हें
ExperimentalSafeArgsApiएनोटेशन के साथ मार्क किया गया है. आने वाली रिलीज़ में, एपीआई के सभी फ़ंक्शन उपलब्ध होने के बाद, इस एनोटेशन को हटा दिया जाएगा. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
वर्शन 2.8.0-alpha06
3 अप्रैल, 2024
androidx.navigation:navigation-*:2.8.0-alpha06 रिलीज़ हो गया है. वर्शन 2.8.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin Serialization पर आधारित अप्रोच का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता उपलब्ध है. ये एपीआई अभी तैयार नहीं हुए हैं और इन्हें
ExperimentalSafeArgsApiएनोटेशन के साथ मार्क किया गया है. आने वाली रिलीज़ में, एपीआई के सभी फ़ंक्शन उपलब्ध होने के बाद, इस एनोटेशन को हटा दिया जाएगा. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
गड़बड़ियां ठीक की गईं
NavHostअब contentAlignment आर्ग्युमेंट के लिए,Alignment.TopStartका इस्तेमाल डिफ़ॉल्ट तौर पर करता है. इससे यहAnimatedContentके डिफ़ॉल्ट के मुताबिक हो जाता है. साथ ही, इससे सेंटर ट्रांज़िशन से अनचाहे स्केल के कुछ उदाहरण ठीक हो जाते हैं. (I09e72, b/330111602)- Navigation Compose का इस्तेमाल करते समय, अनुमानित बैक जेस्चर को फ़्लिक करने पर,
NavHostअब तुरंत खत्म होने के बजाय, कस्टम ट्रांज़िशन को सही तरीके से पूरा करेगा. (I99017, b/327292110)
वर्शन 2.8.0-alpha05
20 मार्च, 2024
androidx.navigation:navigation-*:2.8.0-alpha05 रिलीज़ हो गया है. वर्शन 2.8.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
defaultValueपर भरोसा किए बिना,startDestinationके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)
गड़बड़ियां ठीक की गईं
- नेविगेशन में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
NavGraphViewModelsDESTROYEDबहुत जल्द बंद हो जाते थे. ऐसा इसलिए होता था, क्योंकि इससे जुड़ी एंट्री काViewModelसेव किए गए स्टेट का हिस्सा नहीं था. (Ib6bb7, b/317581849)
डिपेंडेंसी अपडेट
- Navigation Compose अब Compose 1.7.0-alpha03 पर निर्भर करता है.
वर्शन 2.8.0-alpha02
7 फ़रवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha02 रिलीज़ हो गया है. वर्शन 2.8.0-alpha02 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Navigation Compose अब compose-animation से मिले नए
SeekableTransitionStateएपीआई के ज़रिए, ऐप्लिकेशन में वापस जाने की सुविधा के लिए सहायता उपलब्ध कराता है. इससे, ट्रांज़िशन पूरा होने से पहले, बैक जेस्चर का इस्तेमाल करके पिछली स्क्रीन पर वापस जाया जा सकता है. इससे आपको यह तय करने में मदद मिलती है कि ट्रांज़ैक्शन को पूरा करना है या रद्द करना है. (I8b8e9)
वर्शन 2.8.0-alpha01
24 जनवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha01 रिलीज़ हो गया है. वर्शन 2.8.0-alpha01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BackStackStateलीक की समस्या ठीक की गई है. इसमें किसी डेस्टिनेशन पर कई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की वैल्यू 'गलत' है, तो एंट्री का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 में एक साथ कई डायलॉग दिखाते समय होने वाली समस्या को ठीक किया गया है. इस समस्या में, आंशिक रूप से छिपे हुए डायलॉग (जैसे, सबसे ऊपर वाला डायलॉग नहीं)
CREATEDस्थिति के बजायSTARTEDलाइफ़साइकल की स्थिति में होते थे. (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 के सबसे नए ऐल्फ़ा वर्शन (0.31.2-alpha) का इस्तेमाल किया जा रहा है, तो आपको एपीआई में कोई और बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)
गड़बड़ियां ठीक की गईं
- Navigation Compose में मौजूद NavHost अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. भले ही, गतिविधि को STOP और RESUME किया गया हो. (Icb6de, b/279118447)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब Compose
1.5.0पर निर्भर करता है, जो1.1.0से अपग्रेड किया गया है.
वर्शन 2.7.0-rc01
26 जुलाई, 2023
androidx.navigation:navigation-*:2.7.0-rc01 रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसमें
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 के सबसे नए ऐल्फ़ा वर्शन (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का इस्तेमाल करके नेविगेट करने के बाद, सिस्टम बैक का इस्तेमाल करने पर,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)- नेस्ट किए गए
launchSingleTopके साथlaunchSingleTopका इस्तेमाल करने पर, ओरिजनल डेस्टिनेशन से लेकर उसकेstartDestinationतक के सभी डेस्टिनेशन, बैकस्टैक में सबसे ऊपर सही तरीके से जोड़े जाएंगे.NavGraph(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में:NavHostकी वजह से अबNoSuchElementExceptionनहीं दिखेगा. ऐसा तब होगा, जबCrossfadeके लिए कोई डेस्टिनेशन उपलब्ध नहीं होगा. अब यह सिर्फ़ कंपोज़ करने की सुविधा को स्किप करेगा. (Ieb46e, b/253299416) - नेविगेशन
2.5.3: इस समस्या को ठीक किया गया है. इसमें डेस्टिनेशन को बैक स्टैक से हटाने पर, सेव की गई कंपोज़ स्टेट (जैसे,rememberSaveableका इस्तेमाल) को हटाया नहीं जा रहा था. (I64949)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब Fragment
1.5.4पर निर्भर करता है. (Icd424)
वर्शन 2.6.0-alpha02
5 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha02 रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
AppBarConfigurationको नेविगेशन ग्राफ़ का आईडी पास करने पर (जैसे किMenuके ज़रिए),NavigationUIअब उस नेविगेशन ग्राफ़ के सिर्फ़ शुरुआती डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर मानता है. ऐसा इसलिए, ताकि ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क न किया जाए. किसी डेस्टिनेशन का आईडी पास करने के तरीके में कोई बदलाव नहीं हुआ है. यह सुविधा,AppBarConfigurationपर मौजूद नएisTopLevelDestinationफ़ंक्शन के ज़रिए आपके कोड के लिए भी उपलब्ध है. (Ie936e, b/238496771)
गड़बड़ियां ठीक की गईं
navigation:navigation-fragmentकॉम्पोनेंट अब फ़्रैगमेंट वर्शन1.5.2पर निर्भर करता है. (I00ba4)- डायलॉग जैसे
FloatingWindowडेस्टिनेशन पर नेविगेट करने पर, चुना गया मेन्यू आइटम अब अपडेट नहीं होगा. (I4cde8, b/240308330)
वर्शन 2.6.0-alpha01
7 सितंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha01 रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टॉप ऐप्लिकेशन बार के साथ काम करने के लिए,
NavigationUIमेंsetupWithNavControllerइंटिग्रेशन अबandroid:labelमें मौजूदReferenceTypeआर्ग्युमेंट के लिएR.stringवैल्यू को पार्स करेंगे. ऐसा, अपने-आप जनरेट होने वाले संसाधन पूर्णांक को आउटपुट करने के बजाय, उनकी स्ट्रिंग वैल्यू में किया जाएगा. (I5f803, b/167959935) NavDeepLinkअब ऐरे के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे बार-बार इस्तेमाल किए जाने वाले क्वेरी पैरामीटर के साथ काम किया जा सकता है. ये क्वेरी पैरामीटर, आर्ग्युमेंट के ऐरे टाइप पर मैप होंगे.NavTypeमें अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे पार्स की गई दो वैल्यू को एक साथ लाने के लिए बदला जा सकता है. (Id68c3, b/209977108)- नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में,
app:dataऔरapp:dataPatternएट्रिब्यूट में प्लेसहोल्डर के तौर पर${applicationId}स्ट्रिंग का इस्तेमाल करने पर, प्लेसहोल्डर में कॉन्टेक्स्ट काpackageNameअपने-आप भर जाएगा. (Iaabde, b/234223561) navDeepLinkKotlin DSL का इस्तेमाल करके, खालीNavDeepLinkबनाने की कोशिश करने पर, अब लिंट की चेतावनी दिखेगी. इसमें बताया जाएगा कि डीप लिंक को मान्य होने के लिए, यूआरआई, ऐक्शन, और/या माइमटाइप की ज़रूरत होती है. (I08d2f, b/154038883)
एपीआई में हुए बदलाव
android:label="{arg}"के तौर पर आर्ग्युमेंट वाले डाइनैमिक लेबल को स्ट्रिंग में पार्स करने के लिए, नयाNavDestinationएक्सटेंशन फ़ंक्शन जोड़ा गया. यह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) - नेविगेशन लाइब्रेरी अब Activity
1.5.1पर निर्भर करती है. (I3efe8) - Navigation लाइब्रेरी अब Fragment
1.5.1पर निर्भर करती है. (I56177)
वर्शन 2.5.0
29 जून, 2022
androidx.navigation:navigation-*:2.5.0 रिलीज़ हो गया है. वर्शन 2.5.0 में ये बदलाव शामिल हैं.
2.4.0 के बाद हुए अहम बदलाव
- CreationExtras इंटिग्रेशन -
Navigationअब Lifecycle2.5.0केCreationExtrasके ज़रिए, बिना किसी स्टेटस केViewModelProvider.Factoryउपलब्ध करा सकता है.
Navigation SafeArgs
Navigation Safe ArgsनेAndroid Gradle Pluginडिपेंडेंसी को अपग्रेड किया है, ताकि यह7.0.4पर काम कर सके. इससे,7.0से पहले के AGP वर्शन के साथ काम करने की सुविधा बंद हो गई है.- applicationId के बजाय, namespace build.gradle एट्रिब्यूट का इस्तेमाल करने की सुविधा जोड़ी गई है.
अन्य बदलाव
visibleEntriesAPI अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. यह एक ऐसा फ़ंक्शन उपलब्ध कराता है जिसकी मदद से उन सभी एंट्री को वापस पाया जा सकता है जिनका डेस्टिनेशन, फ़िलहालNavControllerके हिसाब से दिख रहा है.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.navigation:navigation-*:2.5.0-rc02 रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose
NavHostका इस्तेमाल करते समय, बॉटम डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. (I3979a, b/234054916) Navigation SafeArgsअब तब क्रैश नहीं होगा, जबapplicationIdSuffixऔर नेमस्पेस का इस्तेमाल किया जा रहा हो और उनमेंapplicationIdमौजूद न हो याapplicationIdऔर नेमस्पेस अलग-अलग हों. (I754b1, b/233119646)NavArgumentमें अब एक कस्टमtoString()फ़ंक्शन है. इसकी मदद से, आर्ग्युमेंट की इंटरनल वैल्यू दिखाई जा सकती हैं. (I900a8)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.navigation:navigation-*:2.5.0-rc01 रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये बदलाव शामिल हैं.
नई सुविधाएं
- आपकी
navigation.xmlफ़ाइल में,<activity>एलिमेंट के अंदर<deeplink>एलिमेंट रखने पर चेतावनी देने के लिए, एक नया लिंट नियम जोड़ा गया है.(Ic15a5, b/178403185)
गड़बड़ियां ठीक की गईं
NavHostऔरDialogHostमें कंपोज़ेबल स्कोप अब उम्मीद के मुताबिक क्रम में हटा दिए जाते हैं. इसका मतलब है कि अंदर के कंपोज़ेबल, बाहर के कंपोज़ेबल से पहले हटा दिए जाते हैं. (I157e6)- Navigation 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)CreationExtrasका इस्तेमाल अबNavBackStackEntriesके साथ करने पर, यह सही तरीके से काम करेगा. इससे ViewModels बनाए जा सकेंगे. (I69161, b/217617710)- Navigation Safe Args अब AndroidManifest में पैकेज की जगह,
build.gradleमें तय किए गए नेमस्पेस का इस्तेमाल करने की सुविधा देता है. (I659ef, b/217414933)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha02 रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.4.1से: नेस्ट किए गए ग्राफ़ के साथ viewbinding का इस्तेमाल करते समय,NavHostFragmentअबOnBackPressedDispatcherको सही तरीके से सेट करेगा. (Ifbb51, b/214577959) - नेविगेशन
2.4.1से: कई नेस्ट किए गएNavGraphके ज़रिए डीप लिंकिंग करने पर, बैक स्टैक में अब इंटरमीडिएट स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha01 रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavBackStackEntryको अब ViewModel CreationExtras के साथ इंटिग्रेट किया गया है. इसे Lifecycle2.5.0-alpha01के हिस्से के तौर पर पेश किया गया था. (Ib9fe2, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से, फ़्रैगमेंट के
onCreate()सेby navGraphViewModels()के ज़रिए बनाए गएViewModelको ऐक्सेस करने परIllegalStateExceptionकी गड़बड़ी होती थी. (I8a14d) NavDeepLinks अब बिना वजह दो बार आर्ग्युमेंट डिकोड नहीं करेगा. इसका मतलब है कि अब सही आर्ग्युमेंट, आपके फ़ाइनल डेस्टिनेशन पर पास किए जाते हैं. (I31b0a, b/210711399)
Safe Args
- Safe Args अब Android Gradle प्लग इन 7.0.4 पर निर्भर करता है. इसका मतलब है कि नेविगेशन सेफ़ आर्ग, Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, अब यह Android Gradle Plugin 7.1.0 और इसके बाद के वर्शन के साथ काम करेगा. (I41c88, b/213086135, b/207670704)
वर्शन 2.4.2
वर्शन 2.4.2
6 अप्रैल, 2022
androidx.navigation:navigation-*:2.4.2 रिलीज़ हो गया है. वर्शन 2.4.2 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.0-alpha03से बैकपोर्ट किया गया:NavDeepLinksअब रास्तों/डीप लिंक यूआरआई में एम्बेड किए गए, एन्कोड किए गए नई लाइन के वर्णों के साथ सही तरीके से काम करता है. (I513d1, b/217815060) - Navigation
2.5.0-alpha03से बैकपोर्ट किया गया: Navigation SafeArgs अब AndroidManifest में पैकेज की जगहbuild.gradleमें तय किए गए नेमस्पेस का इस्तेमाल करने की सुविधा देता है. (I659ef, b/217414933) - नेविगेशन
2.5.0-alpha04से बैकपोर्ट किया गया: नेमस्पेस का इस्तेमाल करते समय और कोईAndroidManifest.xmlमौजूद न होने पर,Navigation Safe Argsअब क्रैश नहीं होगा. (I17ccf, b/227229815) - नेविगेशन
2.5.0-alpha04से बैकपोर्ट किया गया: अब डीप लिंक में खाली स्ट्रिंग को मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
वर्शन 2.4.1
वर्शन 2.4.1
9 फ़रवरी, 2022
androidx.navigation:navigation-*:2.4.1 रिलीज़ हो गया है. वर्शन 2.4.1 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए ग्राफ़ के साथ ViewBinding का इस्तेमाल करने पर,
NavHostFragmentअबOnBackPressedDispatcherको सही तरीके से सेट करेगा. (Ifbb51, b/214577959) - एक से ज़्यादा नेस्ट किए गए
NavGraphके ज़रिए डीप लिंकिंग करने पर, बैक स्टैक में अब इंटरमीडिएट स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060) - Navigation
2.5.0-alpha01से बैकपोर्ट किया गया: उस समस्या को ठीक किया गया है जिसमेंby navGraphViewModels()के ज़रिए बनाए गए ViewModel को Fragment केonCreate()से ऐक्सेस करने पर,IllegalStateExceptionकी वजह से ऐक्सेस नहीं किया जा सकता था. (I8a14d) - नेविगेशन
2.5.0-alpha01से बैकपोर्ट किया गया:NavDeepLinkअब यह फ़ंक्शन, आर्ग्युमेंट को दो बार डिकोड नहीं करता है. इसका मतलब है कि अब सही तरीके से डिकोड किए गए आर्ग्युमेंट, आपके फ़ाइनल डेस्टिनेशन पर पास किए जाते हैं. (I31b0a, b/210711399) - नेविगेशन
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
नेविगेशन के पिछले वर्शन में, हर डेस्टिनेशन के लिए एक पूर्णांक आईडी होता था. यह आईडी, डेस्टिनेशन की पहचान उसके जैसे अन्य डेस्टिनेशन से अलग तरीके से करता था. साथ ही, इसकी मदद से सीधे तौर पर या किसी कार्रवाई के ज़रिए उस डेस्टिनेशन पर 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 आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन की सुविधा देता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.
इस रिलीज़ में ये सुविधाएं उपलब्ध हैं:
- यह एक
NavHostकंपोज़ेबल है. इसकी मदद से, Kotlin DSL का इस्तेमाल करके नेविगेशन ग्राफ़ बनाया जा सकता है. इसके लिए,composableऔरdialogडेस्टिनेशन का इस्तेमाल किया जाता है. साथ ही, इसमें Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर के लिए भी सहायता मिलती है. - डेस्टिनेशन के बीच क्रॉसफ़ेडिंग की सुविधा देना ज़रूरी है. कंपैनियन नेविगेशन ऐनिमेशन का इस्तेमाल करके, एक्सपेरिमेंटल कंपोज़ एपीआई की मदद से, एंट्री और एग्ज़िट ट्रांज़िशन को कंट्रोल किया जा सकता है.
- हर कंपोज़ेबल डेस्टिनेशन के लिए,
Lifecycleका स्कोप तय करना. हर डेस्टिनेशन, सिर्फ़ तबRESUMEDस्थिति में पहुंचता है, जब सभी ट्रांज़िशन खत्म हो जाते हैं. इसके बाद, जैसे ही कोई ट्रांज़िशन शुरू होता है, वह तुरंतSTARTEDस्थिति में आ जाता है. इस तरह, जबLifecycleRESUMEDस्थिति में होता है, तब सिर्फ़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ऑब्जेक्ट बनाते समय,setRestoreState()और नए ओवरलोड का इस्तेमाल करकेsetPopUpTo()किया जा सकता है. इसके लिए, एक अतिरिक्त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पैरामीटर शामिल किया जा सकता है.popBackStack()याpopUpToSaveStateके साथ सेव किए गए किसी भी स्टेट को मिटाने के लिए,clearBackStack()तरीके का इस्तेमाल किया जा सकता है.
हर मामले में, 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) - नेविगेशन
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)
NavDestinationमें डीप लिंक जोड़ते समय, अब शून्य हो सकने वालेNavDeepLinkआर्ग्युमेंट के लिए डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं होती. (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 का इस्तेमाल करते समय, NavGraph सिर्फ़ तब
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) - Args क्लास जनरेट करते समय, SafeArgs java जनरेटर से अब लिंट की चेतावनियां नहीं मिलनी चाहिए. (I1a666, b/185843837)
बाहरी योगदान
- ospixd का धन्यवाद. डीप लिंक यह पुष्टि करते हैं कि
Uriमें सभी ज़रूरी तर्क (जिनकी डिफ़ॉल्ट वैल्यू नहीं होती) मौजूद हैं. (#204, b/185527157)
वर्शन 2.4.0-alpha07
18 अगस्त, 2021
androidx.navigation:navigation-*:2.4.0-alpha07 रिलीज़ हो गया है. वर्शन 2.4.0-alpha07 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose अब कॉन्फ़िगरेशन में बदलाव होने के बाद, स्थिति को सही तरीके से सेव करता है. साथ ही, एक से ज़्यादा बैक स्टैक की सुविधा का इस्तेमाल करते समय, ग्राफ़ बदलते समय भी स्थिति को सही तरीके से सेव करता है. (If5a3d, b/195141957)
- एक से ज़्यादा बैक स्टैक के साथ नेविगेशन कंपोज़ का इस्तेमाल करते समय, उसी टैब को फिर से चुनने पर अब स्क्रीन खाली नहीं होगी. (I860dc, b/194925622)
NavHostअबNavBackStackEntryकेLifecycle.Stateमें होने वाले बदलावों को मॉनिटर करता है. इसका मतलब है कि फ़्रैगमेंट मेंNavHostका इस्तेमाल करने पर, लाइफ़साइकल में होने वाले बदलावों के हिसाब से उसे फिर से कंपोज़ किया जाएगा. इससे स्क्रीन खाली नहीं रहेगी. (I4eb85, b/195864489)- उस समस्या को ठीक किया गया है जिसमें
DialogFragmentको खारिज करने पर, गतिविधि को फिर से बनाने के बादNavControllerकी स्थिति ठीक से अपडेट नहीं होती थी. गतिविधि को फिर से बनाने का मतलब है, कॉन्फ़िगरेशन में बदलाव करने के बाद गतिविधि को फिर से बनाना. (Icd72b) - डायलॉग डेस्टिनेशन पॉप अप करने पर, NavController के सिस्टम के 'वापस जाएं' बटन को हैंडल करने की सुविधा अपडेट नहीं होती थी. इस समस्या को ठीक किया गया है. इससे NavController, 'वापस जाएं' बटन को इंटरसेप्ट कर लेता था, भले ही उसके पास पॉप करने के लिए कोई बैक स्टैक न हो. (If3b34)
- Safe-args अब अपने-आप, आर्ग्युमेंट के लिए
toSavedStateHandleमेथड जनरेट करता है. इसका इस्तेमाल,ViewModelकोड की जांच करने के लिए किया जा सकता है. (If1e2d, b/193353880)
वर्शन 2.4.0-alpha06
4 अगस्त, 2021
androidx.navigation:navigation-*:2.4.0-alpha06 रिलीज़ हो गया है. वर्शन 2.4.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AbstractListDetailFragmentपर मौजूदrequireSlidingPaneLayout()औरrequireDetailPaneNavHostFragment()तरीकों का नाम बदलकर, क्रमशःgetSlidingPaneLayout()औरgetDetailPaneNavHostFragment()कर दिया गया है. (I34a08)
व्यवहार में बदलाव
- ऐनिमेशन (जैसे,
Crossfade) की मदद से नेविगेट करने पर, नए डेस्टिनेशन काLifecycleअब सिर्फ़ तबRESUMEDतक पहुंचेगा, जब ऐनिमेशन पूरा हो जाएगा. (If0543, b/172112072, b/194301889) - Navigation Compose
NavHostअब ग्राफ़ को पहली कंपोज़िशन के हिस्से के तौर पर सेट करता है. (Ieb7be)
गड़बड़ियां ठीक की गईं
- नेविगेशन ग्राफ़ के आखिरी डेस्टिनेशन को पॉप करने पर, अब
ClassCastExceptionनहीं दिखता. (If0543, b/172112072, b/194301889) - ऐसी
NullPointerExceptionको ठीक किया गया है जोUriके बिना डीप लिंक जोड़ने और किसी रूट या डीप लिंक से नेविगेट करने पर होती थी. (938a0c, b/193805425) - Navigation Compose में उस समस्या को ठीक किया गया है जिसकी वजह से डीप लिंक किया गया
NavBackStackEntry,RESUMEDस्थिति तक नहीं पहुंच पाता था. (I192c5) - उस समस्या को ठीक किया गया है जिसमें डायलॉग डेस्टिनेशन को पॉप करने पर, NavController के सिस्टम के बैक बटन को हैंडल करने की सुविधा अपडेट नहीं होती थी. इससे NavController, बैक बटन को इंटरसेप्ट कर लेता था, भले ही उसके पास पॉप करने के लिए कोई बैक स्टैक न हो. (aosp/1782668)
वर्शन 2.4.0-alpha05
21 जुलाई, 2021
androidx.navigation:navigation-*:2.4.0-alpha05 रिलीज़ हो गया है. वर्शन 2.4.0-alpha05 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- नेविगेशन कंपोज़ का
NavHostअब डेस्टिनेशन के बीच नेविगेट करते समय, हमेशा क्रॉसफ़ेड का इस्तेमाल करता है. (I07049, b/172112072) - अब NavHost के ग्राफ़ में बदलाव किए जा सकते हैं. अगर किसी ग्राफ़ में startDestination और destinations एक जैसे हैं, तो उन्हें एक जैसा माना जाएगा. साथ ही, वे
NavControllerबैक स्टैक को नहीं हटाएंगे. (I0b8db, b/175392262)
गड़बड़ियां ठीक की गईं
- NavController की स्थिति में फिर से शुरू होने वाले अपडेट की वजह से,
NavBackStackEntryसे जुड़ेLifecycleObserverमें मौजूदpopBackStack()को कॉल करते समय,NoSuchElementExceptionको ठीक किया गया है. (I64621) AbstractListDetailFragmentअबSlidingPaneLayoutको आपके APK से पूरी तरह से हटाने की अनुमति देता है. ऐसा तब होता है, जबAbstractListDetailFragmentका इस्तेमाल नहीं किया जाता. (I611ad)NavGraphऔरNavDestinationअब equals तरीके को बदल देते हैं, ताकि एक जैसी वैल्यू वाले दो ऑब्जेक्ट को बराबर माना जा सके. (I166eb, b/175392262)
वर्शन 2.4.0-alpha04
1 जुलाई, 2021
androidx.navigation:navigation-*:2.4.0-alpha04 रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-fragmentआर्टफ़ैक्ट में, अबAbstractListDetailFragmentकी मदद से दो पैनल वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. इस फ़्रैगमेंट में, सूची वाले पैन को मैनेज करने के लिएSlidingPaneLayoutका इस्तेमाल किया जाता है. यह सूची वाला पैन, आपकी सबक्लास उपलब्ध कराती है. साथ ही, इसमें जानकारी वाला पैन भी होता है, जो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)- किसी मंज़िल तक नेविगेट करने के लिए,
string[]आर्ग्युमेंट का इस्तेमाल करते समयNullPointerExceptionसमस्या ठीक की गई. इस आर्ग्युमेंट की डिफ़ॉल्ट वैल्यू@nullहै. (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का int पैरामीटर, अबresidके बजायresIdहै. (I7711d)
डिपेंडेंसी अपडेट
- Safe-Args अब Android Gradle प्लग इन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको
applicationIdTextResourceका इस्तेमाल करने पर चेतावनी नहीं मिलेगी. (I6d67b, b/172824579)
वर्शन 2.4.0-alpha01
18 मई, 2021
androidx.navigation:navigation-*:2.4.0-alpha01 रिलीज़ हो गया है. वर्शन 2.4.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavControllerपर मौजूदcurrentBackStackEntryAsFlow()तरीके से, एकFlowमिलता है. यह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ऑब्जेक्ट बनाते समय,setRestoreState()और नए ओवरलोड का इस्तेमाल करकेsetPopUpTo()किया जा सकता है. इसके लिए, एक अतिरिक्त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 DSL में
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
KEY_ROUTE आर्ग्युमेंट को NavDestination पर 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)
- KotlinPoet
1.8.0पर निर्भर रहने के लिए, Safe Args को अपडेट करने के लिए tatocaster का धन्यवाद. (#172, b/183990444) nameऔरargumentफ़ील्ड बनाने के लिए jossiwolf का धन्यवाद. साथ ही,NamedNavArgumentके डिस्ट्रक्चरिंग फ़ंक्शन को सार्वजनिक करने के लिए भी धन्यवाद. (#174, b/181320559)- jossiwolf को धन्यवाद. उन्होंने एक नया
NavBackStackEntry#provideToCompositionLocalsएक्सटेंशन पेश किया है. यह एक्सटेंशन, कंपोज़िशन से जुड़ी स्थानीय सेटिंग के लिएNavBackStackEntryउपलब्ध कराता है. (#175, b/187229439) - jossiwolf को धन्यवाद. उन्होंने
NavigatorProvider#addNavigatorके व्यवहार को बेहतर बनाया है, ताकि एक ही इंस्टेंस के साथ इसे बार-बार कॉल करने से समस्याएं न हों. (#176, b/187443146)
Navigation Compose वर्शन 1.0.0
वर्शन 1.0.0-alpha10
7 अप्रैल, 2021
androidx.navigation:navigation-compose:1.0.0-alpha10 रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavHostअबModifierस्वीकार करता है. इसे डेस्टिनेशन कंपोज़ेबल को रैप करने वाले कंपोज़ेबल कंटेनर को पास किया जाता है. (I85aca, b/175125483)
गड़बड़ियां ठीक की गईं
NavHostअब तब भी काम करता है, जबOnBackPressedDispatcherOwnerनहीं मिलता. ऐसा तब होता है, जबNavHostकी झलक देखी जा रही हो. (I7d8b4)- Navigation Compose अब Navigation
2.3.5पर निर्भर करता है. इससेNavHostडेस्टिनेशन के अंदरBackHandlerका इस्तेमाल करते समय होने वाली समस्या ठीक हो गई है. (I7e63b, b/182284739)
वर्शन 1.0.0-alpha09
10 मार्च, 2021
androidx.navigation:navigation-compose:1.0.0-alpha09 रिलीज़ हो गया है. वर्शन 1.0.0-alpha09 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
LocalViewModelStoreOwner.currentअब एक शून्य हो सकने वालाViewModelStoreOwnerदिखाता है, ताकि यह बेहतर तरीके से तय किया जा सके कि मौजूदा कंपोज़िशन मेंViewModelStoreOwnerउपलब्ध है या नहीं. जिन एपीआई के लिएViewModelStoreOwnerकी ज़रूरत होती है वे अब भी अपवाद दिखाते हैं. जैसे,viewModel()औरNavHost. ऐसा तब होता है, जबViewModelStoreOwnerसेट नहीं किया जाता. (Idf39a)
गड़बड़ियां ठीक की गईं
- Navigation Compose अब Navigation 2.3.4 पर निर्भर करता है. इसमें ग्राफ़ सेट होने के बाद, एक ही ViewModelStore ऑब्जेक्ट को सेट करने की कोशिश करने से जुड़ी समस्या को ठीक किया गया है. (I65c24, b/177825470)
वर्शन 1.0.0-alpha08
24 फ़रवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha08 रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये बदलाव शामिल हैं.
नई सुविधाएं
NavHostअब उस डेस्टिनेशन केNavBackStackEntryके साथLocalSavedStateRegistryOwnerCompositionLocal को पॉप्युलेट करता है. इससे यह पक्का होता है किSavedStateRegistryमें सीधे तौर पर सेव किया गया कोई भी स्टेट, डेस्टिनेशन के साथ सेव और रीस्टोर किया जाएगा. (I435d7, b/179469431)
वर्शन 1.0.0-alpha07
10 फ़रवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha07 रिलीज़ हो गया है. वर्शन 1.0.0-alpha07 में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन कंपोज़ अब
composableडेस्टिनेशन के लिएviewModel()सहायता देने के लिए, Lifecycle ViewModel Compose 1.0.0-alpha01 पर निर्भर करता है. (I7a374) NavHostअब Activity-Compose 1.3.0-alpha01 से मिले नएLocalOnBackPressedDispatcherOwnerका इस्तेमाल करके,NavControllerपर सेट किया गयाOnBackPressedDispatcherहासिल करता है. (I65b12)
वर्शन 1.0.0-alpha06
28 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha06 रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavControllerपरgetBackStackEntry(route: String)एक्सटेंशन मेथड जोड़ा गया है. यह मेथड, उससे जुड़ाNavBackStackEntryदिखाता है. (If8931)
वर्शन 1.0.0-alpha05
13 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha05 रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये बदलाव शामिल हैं.
इसे Compose 1.0.0-alpha10 पर निर्भर रहने के लिए अपडेट किया गया है.
वर्शन 1.0.0-alpha04
16 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha04 रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये बदलाव शामिल हैं.
- Compose
1.0.0-alpha09के साथ काम करने के लिए अपडेट किया गया.
वर्शन 1.0.0-alpha03
2 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha03 रिलीज़ हो गया है. वर्शन 1.0.0-alpha03 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस के बंद होने और फिर से शुरू होने के बाद,
popBackStack()औरnavigateUp()काम नहीं करते थे. (Icea47, b/173281473) - अब NavHost में मौजूद नेस्ट किए गए ग्राफ़ पर नेविगेट करने की सुविधा ठीक से काम करती है. (I0948d, b/173647694)
वर्शन 1.0.0-alpha02
11 नवंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha02 रिलीज़ हो गया है. वर्शन 1.0.0-alpha02 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन कंपोज़ अब popUpTo और launchSingleTop ऑपरेशंस का इस्तेमाल करने के लिए, NavOptions के साथ काम करता है (If96c3, b/171468994)
- नेविगेशन फ़ंक्शन जोड़ा गया है. यह आईडी के बजाय रूट लेता है. इससे आपको Navigation Compose DSL में नेस्ट किए गए ग्राफ़ बनाने में मदद मिलती है. (I1661d)
- NavHost (Ie620e) के पैरामीटर की सूची में, अब route से पहले startDestination आता है
- अब NavHost कंपोज़ेबल के बाहर, रूट को शुरुआती डेस्टिनेशन के तौर पर इस्तेमाल करके ग्राफ़ बनाया जा सकता है. (Iceb75)
वर्शन 1.0.0-alpha01
28 अक्टूबर, 2020
android.navigation:navigation-compose:1.0.0-alpha01 रिलीज़ हो गया है. वर्शन 1.0.0-alpha01 में ये बदलाव शामिल हैं.
नई सुविधाएं
navigation-compose आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और 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 का इस्तेमाल करके नेविगेट करना लेख पढ़ें.
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- Manifest Merger में, डीप लिंक की कार्रवाइयों और माइम टाइप के लिए अब तक सहायता उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में मौजूद
<nav-graph>एलिमेंट से जनरेट हुए किसी भी<intent-filter>एलिमेंट में,<data>एलिमेंट में आपका माइम टाइप या आपका कस्टम<action>शामिल नहीं होगा. आपको अपने मेनिफ़ेस्ट में सही<intent-filter>को मैन्युअल तरीके से जोड़ना होगा.
वर्शन 2.3.0-rc01
10 जून, 2020
androidx.navigation:navigation-*:2.3.0-rc01 रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेस्टिनेशन के ऐसे इंस्टेंस को बदलने पर
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 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- प्रोसेस बंद होने के बाद,
LifecycleकेNavBackStackEntryके ठीक से अपडेट न होने की समस्या को ठीक किया गया है. (b/155218371) OnDestinationChangedListenerको कॉल करने से पहले रजिस्टर किए गएOnDestinationChangedListenerइंस्टेंस को अब प्रोसेस बंद होने के बाद, सही तरीके से डेस्टिनेशन की जानकारी भेजी जाती है.setGraph()(b/155218371)singleTopका इस्तेमाल करने पर,NavBackStackEntryके आर्ग्युमेंट अब सही तरीके से अपडेट हो जाते हैं. साथ ही, अपडेट किए गए आर्ग्युमेंट,OnDestinationChangeListenerके सभी इंस्टेंस को भेज दिए जाते हैं. (b/156545508)
डिपेंडेंसी से जुड़े अपडेट
NavigationUIआर्टफ़ैक्ट अब CustomView1.1.0-rc01और DrawerLayout1.1.0-rc01पर निर्भर करता है. (aosp/1309696)
वर्शन 2.3.0-alpha06
29 अप्रैल, 2020
androidx.navigation:navigation-*:2.3.0-alpha06 रिलीज़ हो गया है. (वर्शन 2.3.0-alpha06 में ये बदलाव शामिल हैं.)
नई सुविधाएं
- डीप लिंकिंग की सुविधा को अब
app:uriके साथ-साथapp:actionऔरapp:mimeTypeके लिए भी उपलब्ध कराया गया है. NavController अब नईNavDeepLinkRequestक्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन से नेविगेट करने की सुविधा देता है. (b/136573074, b/135334841)
एपीआई में हुए बदलाव
- डाइनैमिक नेविगेशन डेस्टिनेशन के लिए, Kotlin DSL के साथ काम करने की सुविधा को बेहतर बनाया गया है. (b/148969800)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें नेस्ट किए गए स्टार्ट डेस्टिनेशन का इस्तेमाल करने पर, डीप लिंक इंटेंट को अनदेखा कर दिया जाता था. (b/154532067)
वर्शन 2.3.0-alpha05
15 अप्रैल, 2020
androidx.navigation:navigation-*:2.3.0-alpha05 रिलीज़ हो गया है. वर्शन 2.3.0-alpha05 में ये बदलाव शामिल हैं.
नई सुविधाएं
<include-dynamic>का इस्तेमाल करके डाइनैमिक ग्राफ़ में शामिल किए गए के लिए, अब आपकोapp:graphPackageतय करने की ज़रूरत नहीं है. इसके बजाय, डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाएगा. इसके लिए,applicationIdमें दशमलव के बादmoduleNameसफ़िक्स जोड़ें. अगर आपकोgraphPackageको पसंद के मुताबिक बनाना है, तो अब${applicationId}प्लेसहोल्डर का इस्तेमाल किया जा सकता है. (b/152696768)- नेविगेशन ग्राफ़ Kotlin DSL अब कार्रवाइयों के लिए
defaultArgumentsMapदिखाता है. इससे, नेविगेशन एक्सएमएल फ़ाइलों में<action>एलिमेंट के लिए डिफ़ॉल्ट वैल्यू सेट करने की सुविधा मिलती है. (b/150345605)
गड़बड़ियां ठीक की गईं
- Navigation 2.2.2: आपकी ऐक्टिविटी में कई
NavHostFragmentइंस्टेंस होने पर, आपके ग्राफ़ के स्टार्ट डेस्टिनेशन से डीप लिंक करने पर होने वालीIllegalStateExceptionको ठीक किया गया है. (b/147378752)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब Fragment
1.2.4पर निर्भर करता है. (aosp/1277325) - डाइनैमिक नेविगेशन अब Play Core
1.7.2पर निर्भर करता है. (aosp/1282257)
वर्शन 2.3.0-alpha04
18 मार्च, 2020
androidx.navigation:navigation-*:2.3.0-alpha04 रिलीज़ हो गया है. वर्शन 2.3.0-alpha04 में ये बदलाव शामिल हैं.
नई सुविधाएं
- Navigation Kotlin DSL में, फ़ीचर मॉड्यूल ऐक्टिविटी और फ़्रैगमेंट डेस्टिनेशन के लिए सहायता जोड़ी गई है. (b/148969800)
एपीआई में हुए बदलाव
DynamicExtrasक्लास अब बिल्डर पैटर्न का इस्तेमाल नहीं करती है. इसलिए, इसे सीधे तौर पर बनाया जा सकता है. (aosp/1253671)DynamicActivityNavigatorअब अपने कंस्ट्रक्टर मेंActivityके बजायContextलेता है. (aosp/1250252)
गड़बड़ियां ठीक की गईं
NavigationUIअब खाली लेबल (यानी किandroid:label=””वाला डेस्टिनेशन) को अनदेखा नहीं करता है. साथ ही, अब टाइटल को खाली स्ट्रिंग पर सही तरीके से सेट करता है. (b/148679860)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन डाइनैमिक फ़ीचर के आर्टफ़ैक्ट अब Play Core
1.6.5पर निर्भर करते हैं. (b/149556401)
वर्शन 2.3.0-alpha03
4 मार्च, 2020
androidx.navigation:navigation-*:2.3.0-alpha03 रिलीज़ हो गया है. वर्शन 2.3.0-alpha03 में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
DrawerLayoutक्लास पर भरोसा करने के बजाय,AppBarConfigurationअब CustomView1.1.0-alpha02में पेश किए गएOpenableइंटरफ़ेस का इस्तेमाल करता है.DrawerLayout, DrawerLayout1.1.0-alpha04के तौर पर लागू होता है. इससे,NavigationUIके साथOpenableके कस्टम इंप्लीमेंटेशन का इस्तेमाल किया जा सकता है. (b/129030452)
गड़बड़ियां ठीक की गईं
navigation-common-ktxProGuard के नियम अब सिर्फ़ इस्तेमाल की गईNavArgsक्लास को सही तरीके से सेव करते हैं. ऐसा सभीNavArgsइंस्टेंस के बजाय किया जाता है. (b/150213558)
डिपेंडेंसी में बदलाव
- नेविगेशन की निर्भरता को Core
1.2.0पर वापस ले जाया गया है. अब यह Core1.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और Fragment1.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, लाइफ़साइकल ViewModel SavedState1.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)
navArgs()Activityपर मौजूद Kotlin एक्सटेंशन में, अब कोई भी अतिरिक्त जानकारी न होने पर गड़बड़ी का बेहतर मैसेज दिखता है. (b/141408999)- Safe Args से जनरेट हुई
DirectionsJava क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/141099045) - Safe Args से जनरेट हुई
ArgsJava क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/140123727) Toolbarका इस्तेमाल करने पर, दो टॉप लेवल डेस्टिनेशन के बीच स्विच करते समय,NavigationUIअब टेक्स्ट में होने वाले बदलाव को ऐनिमेट नहीं करता. (b/140848160)
वर्शन 2.2.0-alpha03
18 सितंबर, 2019
androidx.navigation:navigation-*:2.2.0-alpha03 रिलीज़ हो गया है. वर्शन 2.2.0-alpha03 में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- अब
setGraphको कॉल करने के बादsetViewModelStore()को कॉल करने पर,IllegalStateExceptionमिलता है. इसे हमेशाNavHostको सेट करना चाहिए. ऐसा शुरुआती सेटअप के दौरान किया जाना चाहिए, ताकि यह पक्का किया जा सके कि सभीNavBackStackEntryइंस्टेंस मेंViewModelइंस्टेंस के लिए एक जैसा स्टोरेज हो. (aosp/1111821)
गड़बड़ियां ठीक की गईं
- एक से ज़्यादा नेविगेशन ग्राफ़ स्कोप किए गए
ViewModelStoreइंस्टेंस से जुड़ेViewModelइंस्टेंस का इस्तेमाल करते समय,ConcurrentModificationExceptionको ठीक किया गया. (aosp/1112257)
वर्शन 2.2.0-alpha02
5 सितंबर, 2019
androidx.navigation:navigation-*:2.2.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- क्वेरी पैरामीटर वाले डीप लिंक अब क्वेरी पैरामीटर के क्रम बदलने की सुविधा के साथ काम करते हैं. डिफ़ॉल्ट वैल्यू वाले या शून्य हो सकने वाले आर्ग्युमेंट अब डीप लिंक मैच करते समय ज़रूरी नहीं होते. (b/133273839)
- अब
NavController.getBackStackEntry()को कॉल किया जा सकता है. इसके लिए, बैक स्टैक पर मौजूद किसी डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास करें. जवाब में मिलेNavBackStackEntryमें, नेविगेशन के हिसाब सेLifecycleOwner,ViewModelStoreOwner(वही जवाब जोNavController.getViewModelStoreOwner()से मिला था) औरSavedStateRegistryOwnerशामिल होता है. साथ ही, इसमें उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए तर्क भी शामिल होते हैं. (aosp/1101691, aosp/1101710)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से
ViewPager2मेंNavHostFragmentजोड़ने पर,IllegalArgumentExceptionदिखता था. (b/133640271) NavInflaterअबgetResourceName()को बेवजह कॉल नहीं करता. इससे, इन्फ़्लेशन के समय में 40% तक की कमी आती है. (b/139213740)
वर्शन 2.2.0-alpha01
7 अगस्त, 2019
androidx.navigation:navigation-*:2.2.0-alpha01 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
SavedStateViewModelFactoryका इस्तेमाल करते समय, अब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क्लास को बदलता है.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 के लिए,
android:defaultValue=”@null”में मौजूदapp:argTypeको अबstringआर्ग्युमेंट के तौर पर सही तरीके से अनुमानित किया जाता है. b/129629192
वर्शन 2.1.0-alpha02
3 अप्रैल, 2019
androidx.navigation:*:2.1.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल बदलाव यहां देखे जा सकते हैं.
नई सुविधाएं
- अब नेविगेशन ग्राफ़ लेवल पर स्कोप किए गए ViewModels बनाए जा सकते हैं. इसके लिए, Kotlin का इस्तेमाल करने वाले लोग
by navGraphViewModels()प्रॉपर्टी डेलिगेट का इस्तेमाल कर सकते हैं. इसके अलावा,NavControllerमें जोड़े गएgetViewModelStore()एपीआई का इस्तेमाल करके भी ऐसा किया जा सकता है. b/111614463
एपीआई में हुए बदलाव
- अब मैचिंग पैकेज के नाम को सीमित करने के लिए,
<activity>डेस्टिनेशन मेंapp:targetPackageजोड़ा जा सकता है. यहapp:targetPackage="${applicationId}"के साथ काम करता है, ताकि पैकेज को सिर्फ़ आपके ऐप्लिकेशन आईडी तक सीमित रखा जा सके. b/110975456
गड़बड़ियां ठीक की गईं
android:nameडेस्टिनेशन के लिए<activity>को अब इन्फ़्लेशन के समय क्लास में पार्स नहीं किया जाता है. इससे डाइनैमिक सुविधाओं का इस्तेमाल करते समय, ClassNotFoundExceptions को रोका जा सकता है. b/124538597
वर्शन 2.1.0-alpha01
19 मार्च, 2019
यह Navigation 2.1.0 का पहला ऐल्फ़ा वर्शन है.
डिपेंडेंसी में बदलाव
- नेविगेशन अब
androidx.core:core:1.0.1औरandroidx.fragment:fragment:1.1.0-alpha05पर निर्भर करता है. इस रिलीज़ में,androidx.legacy:legacy-support-core-utils:1.0.0पर निर्भरता को भी हटा दिया गया है. b/128632612
एपीआई में हुए बदलाव
- क्लिक लिसनर बनाने के लिए,
Navigation.createNavigateOnClickListener(NavDirections)नया तरीका जोड़ा गया है. यह तरीका, संसाधन आईडी और बंडल का इस्तेमाल करके क्लिक लिसनर बनाने के तरीके का विकल्प है. b/127631752 FragmentNavigator.instantiateFragmentका अब इस्तेमाल नहीं किया जा सकता. डिफ़ॉल्ट तौर पर लागू करने की सुविधा अब फ़्रैगमेंट को इंस्टैंशिएट करने के लिएFragmentFactoryका इस्तेमाल करती है. b/119054429
गड़बड़ियां ठीक की गईं
- नेविगेशन अब किसी डेस्टिनेशन से जुड़े आर्ग्युमेंट होने पर, शून्य
Bundleनहीं भेजता. इससेandroid:defaultValue="@null"का इस्तेमाल करते समय आने वाली समस्या ठीक हो जाती है. b/128531879 - Safe Args अब KotlinPoet 1.1.0 पर निर्भर करता है. इससे, बहुत लंबे पैकेज के नामों से जुड़ी समस्या ठीक हो गई है. b/123654948
वर्शन 2.0.0
वर्शन 2.0.0
14 मार्च, 2019
नेविगेशन 2.0.0 को 2.0.0-rc02 के बाद से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 2.0.0-rc02
6 मार्च, 2019
Navigation 2.0.0-rc02, androidx.navigation ग्रुप आईडी के साथ नए आर्टफ़ैक्ट उपलब्ध कराता है. साथ ही, इसकी डिपेंडेंसी को AndroidX के बराबर में बदलता है.
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
यह Navigation के 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
यह Navigation API की पहली बीटा रिलीज़ है. आने वाले समय में, Navigation API का अगला वर्शन आने तक, इसके स्थिर बने रहने की उम्मीद है. हालांकि, ऐसा तब होगा, जब कोई गंभीर समस्या न हो. इस रिलीज़ में, कुछ गड़बड़ियां ठीक की गई हैं और व्यवहार में बदलाव किए गए हैं.
व्यवहार में बदलाव
- नेविगेशन अब यह पक्का करता है कि रनटाइम और 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 का इस्तेमाल करने वाले लोग अब
ActivityयाFragmentमें, Safe Args से जनरेट हुईNavArgsक्लास का रेफ़रंस पाने के लिए,by navArgs()प्रॉपर्टी डेलिगेट का इस्तेमाल कर सकते हैं. b/122603367 - Safe Args की मदद से, अब
androidx.navigation.safeargs.kotlinप्लगिन लागू करके Kotlin कोड जनरेट किया जा सकता है. Kotlin कोड को खास तौर पर, सिर्फ़ Kotlin मॉड्यूल के लिए बनाया गया है. इसमें डिफ़ॉल्ट आर्ग्युमेंट और बिल्डर पैटर्न के बजाय इम्यूटेबल क्लास का इस्तेमाल किया गया है. बिल्डर पैटर्न अब भीandroidx.navigation.safeargsप्लगिन के पिछले वर्शन के ज़रिए उपलब्ध है. b/110263087
व्यवहार में बदलाव
- अब मिलते-जुलते डीप लिंक में, उस डीप लिंक को प्राथमिकता दी जाती है जिसमें सबसे ज़्यादा मिलते-जुलते आर्ग्युमेंट होते हैं. b/118393029
NavControllerपरsetGraph()को कॉल करने पर, अब बैक स्टैक रीसेट हो जाएगा. b/111450672- अब अज्ञात डीप लिंक से
IllegalStateExceptionनहीं दिखता. हालांकि, इन्हें अनदेखा किया जाता है. इससे नेस्ट किए गए या कईNavHostFragmentसे जुड़ी समस्याएं ठीक हो जाती हैं. b/121340440
नुकसान पहुंचा सकने वाले बदलाव
- किसी गतिविधि में पॉप ऐनिमेशन लागू करने के लिए,
NavOptions.applyPopAnimationsToPendingTransition()तरीके कोActivityNavigatorमें ले जाया गया है. b/122413117 - Safe Args अब बिना किसी तर्क वाली कार्रवाइयों के लिए, एक जैसी क्लास को डुप्लीकेट होने से रोकता है. जनरेट की गई NavDirections
क्लास में, बिना आर्ग्युमेंट वाले तरीकों के लिए रिटर्न टाइप अब
NavDirectionsहै. b/123233147 - Safe Args से जनरेट की गई Directions क्लास में अब कोई पब्लिक कंस्ट्रक्टर नहीं है - आपको सिर्फ़ जनरेट किए गए स्टैटिक तरीकों से इंटरैक्ट करना चाहिए. b/123031660
- Safe Args से जनरेट की गई
NavDirectionsक्लास में अब सार्वजनिक कंस्ट्रक्टर नहीं होता. इन्हें सिर्फ़ जनरेट की गई Directions क्लास में स्टैटिक तरीकों से जनरेट किया जाना चाहिए. b/122963206 NavDirections'getArguments()से मिलेBundleको अब@Nullableके बजाय@NonNullके तौर पर मार्क किया गया है. b/123243957
गड़बड़ियां ठीक की गईं
NavDeepLinkBuilderअब एक ही डेस्टिनेशन पर एक साथ कईPendingIntentको सही तरीके से हैंडल करता है. इसके लिए, यह उन आर्ग्युमेंट का इस्तेमाल करता है जिन्हें आपने यूनीकनेस का पता लगाने के लिए पास किया है. b/120042732NavControllerअब नेस्ट किए गएNavHostFragmentया बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट का इस्तेमाल करते समय,popBackStack()कार्रवाइयों को सही तरीके से हैंडल करता है. b/122770335NavigationUIअब 'ऊपर जाएं' बटन के कॉन्टेंट के ब्यौरे को सही तरीके से सेट करता है. b/120395362- Safe Args से जनरेट की गई Directions क्लास, अब उन ग्लोबल ऐक्शन को सही तरीके से हैंडल करती हैं जिनका आईडी, डेस्टिनेशन पर मौजूद किसी ऐक्शन के आईडी के जैसा होता है. b/122962504
- Safe Args से जनरेट की गई
NavDirectionsक्लास में अबhashCode()की वैल्यू सही तरीके से बराबर होती हैं. ऐसा तब होता है, जबequals()से true वैल्यू मिलती है. b/123043662 FragmentNavigatorअबNavHostFragmentकेFragmentManagerपर कस्टमFragmentTransactionsकरने की कोशिश करने पर, गड़बड़ी का बेहतर मैसेज दिखाता है. आपको हमेशाgetChildFragmentManager()का इस्तेमाल करना चाहिए. b/112927148
वर्शन 1.0.0-alpha09
18 दिसंबर, 2018
इस रिलीज़ में, एपीआई में नुकसान पहुंचाने वाले बदलाव शामिल हैं; कृपया नीचे दिया गया नुकसान पहुंचाने वाले बदलाव सेक्शन देखें.
हमने android.arch.navigation:navigation-testing आर्टफ़ैक्ट को डेवलप न करने का फ़ैसला किया है. NavController की इंटरनल टेस्टिंग के लिए यह सुविधा मददगार साबित हुई है. हालांकि, हमारा सुझाव है कि आप टेस्टिंग की अन्य रणनीतियां अपनाएं. जैसे, NavController इंस्टेंस को मॉक करना, ताकि यह पुष्टि की जा सके कि सही navigate() कॉल किए जा रहे हैं. इस तरीके के बारे में, AndroidDevSummit 2018 में सिंगल ऐक्टिविटी के बारे में हुई बातचीत में विस्तार से बताया गया है. साथ ही, हम खास तौर पर नेविगेशन की मदद से टेस्टिंग के बारे में ज़्यादा दस्तावेज़ तैयार करेंगे.
नई सुविधाएं
menuCategory="secondary"वालेMenuItem, अबNavigationUIतरीकों के साथ इस्तेमाल किए जाने पर बैकस्टैक नहीं दिखाएंगे. b/120104424AppBarConfigurationअब आपको फ़ॉलबैकOnNavigateUpListenerइंस्टेंस सेट करने की अनुमति देता है. जबnavController.navigateUp(),falseदिखाता है, तब इस इंस्टेंस को कॉल किया जाएगा. b/79993862 b/120690961
नुकसान पहुंचा सकने वाले बदलाव
<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 वैल्यू भी शामिल हैं. ईनम टाइप, क्लास के नाम के बिना ईनम लिटरल का इस्तेमाल करके डिफ़ॉल्ट वैल्यू सेट कर सकते हैं
(उदाहरण के लिए,
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
- रास्तों की जानकारी और 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
डिफ़ॉल्टNavHost="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 है.