नेविगेशन
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
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा वर्शन |
---|---|---|---|---|
16 जुलाई, 2025 | 2.9.2 | - | - | - |
डिपेंडेंसी का एलान करना
Navigation पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.2" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.2" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
To add Safe Args
to your project, include the following classpath
in your top level build.gradle
file:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.2" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.2" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
You must also apply one of two available plugins.
To generate Java language code suitable for Java or mixed Java and Kotlin modules, add
this line to your app or module's build.gradle
file:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
You must have android.useAndroidX=true
in your
gradle.properties
file as per
Migrating to AndroidX.
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी पाने के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव/राय दें या शिकायत करें
आपके सुझाव, शिकायत या राय से Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. कृपया नई लाइब्रेरी बनाने से पहले, इस लाइब्रेरी में मौजूद मौजूदा समस्याओं को देखें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए वोट किया जा सकता है.
ज़्यादा जानकारी के लिए, Issue Tracker का दस्तावेज़ देखें.
वर्शन 2.9
वर्शन 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
में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें बैकस्टैक की स्थितियों को सूची में सेव किए जाने पर, उन्हें गलत तरीके से ऐरे में वापस लाने की कोशिश की जाती थी. (Idfb9b)- नेविगेशन
2.8.7
से: नेविगेशन Safe Args अब कंपोज़ेबल डेस्टिनेशन के साथ काम करता है. (I35320, b/362791955)
वर्शन 2.9.0-alpha05
29 जनवरी, 2025
androidx.navigation:navigation-*:2.9.0-alpha05
रिलीज़ हो गया है. वर्शन 2.9.0-alpha05 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose का इस्तेमाल करते समय, स्केल ऐनिमेशन के अचानक दिखने की समस्या को ठीक किया गया है. (I480f4, b/353294030)
- नेविगेशन
2.8.6
से:NavDestination
एक्सएमएल के ज़रिए दिए गए लेबल,NavType.get
के ज़रिए पार्स किए जाएंगे. इससे यह पक्का किया जा सकेगा कि कस्टमNavType
लॉजिक का पालन किया गया है. (I7ec2f, b/388100796) - नेविगेशन
2.8.6
से:dataPattern
की मदद से किसी गतिविधि पर नेविगेट करते समय,ActivityNavigator
अब आर्ग्युमेंट की वैल्यू को आर्ग्युमेंट केNavType
के साथ एन्कोड करने की कोशिश करेगा. (I16376, b/383616432) - नेविगेशन
2.8.5
: नेविगेशन कंपोज़ का इस्तेमाल करते समय, स्केल ऐनिमेशन के अचानक दिखने की समस्या को ठीक किया गया है. यह समस्या तब होती थी, जब मौजूदा ऐनिमेशन खत्म होने वाले फ़्रेम में ही नेविगेट करने के लिए कॉल किया जाता था. (I26cb1, b/353294030)
वर्शन 2.9.0-alpha04
11 दिसंबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha04
रिलीज़ हो गया है. वर्शन 2.9.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
- टाइप सेफ़ एपीआई, जिन्हें पहले सिर्फ़
reified
तरीकों से ऐक्सेस किया जा सकता था. जैसे,composable<YourScreen>
के अब नॉन-रीफ़ाइड वर्शन उपलब्ध हैं. ये सीधे तौर परKClass
इंस्टेंस लेते हैं.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
नीचे दी गई टेबल में, रीफ़ाइड और KClass एपीआई दिए गए हैं.
रीफ़ाइड | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
एपीआई में हुए बदलाव
- टाइप की सुरक्षा के लिए, Kotlin के लिए खास तौर पर तैयार किया गया
NavGraph.setStartDestination
ओवरलोड, Java सोर्स से छिपा होता है. (Ic640c, b/364634035)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.8.5
से जुड़ी समस्या ठीक की गई: इस समस्या में, बैक स्टैक को एक एंट्री पर पॉप डाउन करने पर,NavHost
,PredictiveBackHandler
के अंदर एक अपवाद थ्रो कर सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर किए जाते थे. (I1a429, b/375343407) - नेविगेशन
2.8.5
: ग्राफ़ केstartDestination
को अपडेट करते समय,NavDestination
NullPointerException
को ठीक किया गया. (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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें बैक स्टैक को एक एंट्री तक कम करने पर,
NavHost
के अंदरPredictiveBackHandler
एक अपवाद दे सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर होता था. (I1a429, b/375343407) - ग्राफ़ के
startDestination
को अपडेट करते समय,NavDestination
NullPointerException
को ठीक किया गया. (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 में ये कमिट शामिल हैं.
नई सुविधाएं
- नेविगेशन टाइप सेफ़्टी अब सीरियलाइज़ किए जा सकने वाले उन क्लास के साथ काम करती है जिनमें
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)
- नेविगेशन कंपोज़ अब कंपोज़
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 की वजह से, बॉक्स से बाहर सिर्फ़ ऐसी Enums काम करती हैं जो किसी दूसरी क्लास में नेस्ट की गई हों. अगले वर्शन में, टॉप लेवल के 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
के रूट में सीधे तौर परNavGraph
केstartDestination
को आर्ग्युमेंट पास किए जा सकते हैं. यह नेस्ट किए गएNavGraph
startDestinations
पर भी लागू होता है. (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)
गड़बड़ियां ठीक की गईं
- नेविगेशन में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
NavGraph
ViewModelsDESTROYED
बहुत जल्द बंद हो जाते थे, क्योंकि इससे जुड़ी एंट्री का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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
NavGraph
equals()
फ़ंक्शन अब सिर्फ़ कॉल करने वाले ग्राफ़ के बजाय, दूसरे ग्राफ़ के नोड को भी सही तरीके से ध्यान में रखता है. इससे यह पक्का किया जा सकेगा कि अलग-अलग आईडी वाले नोड वाले ग्राफ़ को अब एक जैसा नहीं माना जाएगा (I401cb, b/311414915)
वर्शन 2.7.5
वर्शन 2.7.5
1 नवंबर, 2023
androidx.navigation:navigation-*:2.7.5
रिलीज़ हो गया है. वर्शन 2.7.5 में ये कमिट शामिल हैं.
परफ़ॉर्मेंस में सुधार
- दो ग्राफ़ की तुलना करने की परफ़ॉर्मेंस को बेहतर बनाया गया है. इसमें समय और संख्या, दोनों के हिसाब से सुधार किया गया है. इसका मतलब है कि
setGraph
जैसे कॉल, जो नए ग्राफ़ की तुलना मौजूदा ग्राफ़ से करते हैं, वे बहुत तेज़ी से काम करते हैं. साथ ही, इससे कम फ़्रेम स्किप होते हैं. इस सुधार के लिए, हम Michał Z को धन्यवाद देते हैं. उन्होंने इस समस्या का बारीकी से विश्लेषण किया. (I6ad62) NavHost
अब अपडेट किए गए स्टेटस को पढ़ने के लिए, दूसरे पास का इंतज़ार करने के बजाय, पहले कंपोज़िशन पास पर ही शुरुआती डेस्टिनेशन को रेंडर करेगा. (I439a7, b/304852206)
गड़बड़ियां ठीक की गईं
- हमने उस समस्या को ठीक कर दिया है जिसमें एक ही ग्राफ़ के साथ
setGraph
को एक से ज़्यादा बार कॉल करने पर, बैक स्टैक पॉप हो जाता था. ऐसा सिर्फ़ तब होता था, जब आपके ग्राफ़ में कोई ऐसा डेस्टिनेशन होता था जिसमें दो डेस्टिनेशन को लिंक करने वाली कार्रवाई शामिल होती थी. (Ieaed7) - जिन डायलॉग बॉक्स को तुरंत नेविगेट करके बंद कर दिया गया था वे अब
NavController.visibleEntries
की सूची में नहीं दिखेंगे. (I67586, b/287969970) - जब कॉन्फ़िगरेशन में बदलाव के बाद कोई एंट्री पॉप की जाती है, तो अगर
saveState
की वैल्यू false है, तो एंट्री काViewModel
अब ठीक से मिटा दिया जाएगा. (Idf242, b/298164648) - उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने या
setGraph
को कॉल करने से पहले, बैक स्टैक पूरी तरह से खाली होने परNavController
एक ही डीप लिंक को एक से ज़्यादा बार हैंडल कर सकता था. ऐसा सिर्फ़ तब होता था, जब आने वाले इंटेंट मेंFLAG_ACTIVITY_NEW_TASK
फ़्लैग सेट किया गया हो. (I73c7f)
डिपेंडेंसी से जुड़े अपडेट
- अब फ़्रैगमेंट के साथ नेविगेशन, Fragment 1.6.2 पर निर्भर करता है. इससे उस समस्या को ठीक किया गया है जिसमें
clearBackStack
को कॉल करने पर, नेस्ट किए गए फ़्रैगमेंट केViewModel
इंस्टेंस क्लियर नहीं होते थे.
वर्शन 2.7.4
वर्शन 2.7.4
4 अक्टूबर, 2023
androidx.navigation:navigation-*:2.7.4
रिलीज़ हो गया है. वर्शन 2.7.4 में ये कमिट शामिल हैं.
नई सुविधाएं
popUpTo
के लिए, आर्ग्युमेंट के साथ रास्तों का इस्तेमाल करने की सुविधा जोड़ी गई है. इससे, उन आर्ग्युमेंट का इस्तेमाल करने वाली किसी खास एंट्री पर वापस जाने की अनुमति मिलती है. यह सुविधा,popBackStack
में उपलब्ध सुविधा से मिलती-जुलती है. (I731f4, b/299255572)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें
popUpTo
की मदद से नेविगेट करने के दौरान, किसी दूसरे नेविगेट को इंटरप्ट करने परFragmentNavigator
क्रैश हो जाता था. (I3c848, b/301887045) - उस समस्या को ठीक किया गया है जिसमें सिस्टम बैक प्रेस की वजह से,
currentDestination
को सही तरीके से अपडेट नहीं किया जाता था, ताकि वह दिखाए गए फ़्रैगमेंट से मैच हो सके. (Id0d6c, b/289877514) - ऊपर मौजूद डायलॉग को खारिज करने पर,
DialogFragment
लाइफ़साइकल अबRESUMED
स्थिति में ठीक से चला जाएगा. (I88f0d, b/301811387)
वर्शन 2.7.3
वर्शन 2.7.3
20 सितंबर, 2023
androidx.navigation:navigation-*:2.7.3
रिलीज़ हो गया है. वर्शन 2.7.3 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से
visibleEntries
सूची में गलत एंट्री शामिल हो जाती थीं. (I5caa9, b/288520638) - उस समस्या को ठीक किया गया है जिसकी वजह से फ़्लोटिंग विंडो डेस्टिनेशन (जैसे कि
Dialogs
,Bottomsheets
वगैरह) को कभी भीRESUMED
लाइफ़साइकल कॉलबैक नहीं मिलता था. (I3b866, b/287505132)
वर्शन 2.7.2
वर्शन 2.7.2
6 सितंबर, 2023
androidx.navigation:navigation-*:2.7.2
रिलीज़ हो गया है. वर्शन 2.7.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- अब नेविगेशन, लाइफ़साइकल
2.6.2
पर निर्भर करता है. इससेrememberSaveable
और Navigation Compose केNavHost
के बीच होने वाली बातचीत ठीक हो जाती है. इससे डेस्टिनेशन कीrememberSaveable
स्थिति औरViewModel
के मालिकाना हक वालेSavedStateHandle
इंस्टेंस, प्रोसेस बंद होने और फिर से शुरू होने के बाद ठीक से रीस्टोर हो जाते हैं. (b/298059596, b/289436035) - Navigation Compose में एक साथ कई डायलॉग दिखाने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, आंशिक रूप से छिपे हुए डायलॉग (जैसे, सबसे ऊपर वाला डायलॉग नहीं)
STARTED
स्थिति के बजायCREATED
लाइफ़साइकल की स्थिति में होते थे. (aosp/2728520, b/289257213) - नेविगेशन कंपोज़ में एक साथ कई डायलॉग दिखाने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, सबसे ऊपर मौजूद डायलॉग को खारिज करने पर, नया सबसे ऊपर मौजूद डायलॉग
RESUMED
में सही तरीके से जाने के बजाय,STARTED
लाइफ़साइकल की स्थिति में अटक जाता था. (aosp/2629401, b/286371387) - अगर नेविगेशन सेफ़ आर्ग्युमेंट को असल में लागू नहीं किया जा रहा है, तो अब यह अपने टास्क को तुरंत शुरू नहीं करेगा. (I0e385, b/260322841)
डिपेंडेंसी अपडेट
- Navigation Compose अब Compose 1.5.1 पर निर्भर करता है.
वर्शन 2.7.1
वर्शन 2.7.1
23 अगस्त, 2023
androidx.navigation:navigation-*:2.7.1
रिलीज़ हो गया है. वर्शन 2.7.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose में नेविगेशन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में,
Scaffold
का इस्तेमाल करते समय,Lifecycle.State.DESTROYED
ViewModel
को ऐक्सेस करने की कोशिश करने पर गड़बड़ी हो सकती थी. (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)
अब सभी सहायता पाने के तरीकों में, कुछ या सभी तर्क भरे गए हैं. ध्यान दें कि तर्क, एंट्री के तर्कों से पूरी तरह मेल खाने चाहिए.navDeepLink
Kotlin 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
को पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntry
Lifecycle
, फ़्रैगमेंट में एंट्री और एग्ज़िट के खास इफ़ेक्ट पूरे होने का इंतज़ार करेगा. इसके बाद ही, वह अपने फ़ाइनलLifecycle.State
को मूव करेगा.DialogFragmentNavigator
अब नेविगेट करते समय औरNavBackStackEntries
को पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntry
Lifecycle
,DialogFragment
Lifecycle
केDESTROYED
पर जाने के बाद हीDESTROYED
पर जाएगा.NavHostFragment
अब आपकोFragmentManager
सेNavHostFragment
अटैच होते हीNavController
को वापस पाने की सुविधा देता है. पहले यह सुविधा सिर्फ़onCreate()
के बाद मिलती थी.- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब 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
मौजूद होता है, तो बैक स्टैक में सबसे ऊपर मौजूद एंट्री अबRESUMED
Lifecycle.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
अटैच होते हीNavController
को वापस पाने की सुविधा देता है. पहले यह सुविधा सिर्फ़onCreate()
के बाद मिलती थी. (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 वर्शन में हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से,
MenuItem
में मौजूद गलतBottomNavigationView
हाइलाइट हो जाता था. (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)
एपीआई में हुए बदलाव
- सभी
NavController
navigate
ओवरलोड को अब@MainThread
के साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि उन्हें मुख्य थ्रेड पर कॉल किया गया है. (I2c0b0, b/263427111)
गड़बड़ियां ठीक की गईं
- डाइनैमिक फ़्रैगमेंट नेविगेशन का इस्तेमाल करते समय नेविगेट करने की कोशिश करने पर होने वाली क्रैश की समस्या को ठीक किया गया है. (I3ee29, b/268360479)
- सिस्टम के बैक बटन का इस्तेमाल करके किसी दूसरे फ़्रैगमेंट पर जाने पर, बॉटम बार में सही आइटम नहीं दिखता था. इस गड़बड़ी को ठीक कर दिया गया है (If559f, b/269044426)
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- Fragments के साथ नेविगेशन का इस्तेमाल करते समय,
Animation
API का इस्तेमाल करने पर,NavBackStackEntry
का लाइफ़साइकलRESUMED
तक नहीं पहुंच पाता. (b/269646882) - फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय और
BottomNavigation
का इस्तेमाल करके नेविगेट करते समय, अगर एक से ज़्यादा एंट्री वाली पिछली ऐक्टिविटी को वापस लाने की कोशिश की जाती है, तोBottomNavigation
को सही तरीके से अपडेट नहीं किया जाता है.BottomMenuItem
(b/270447657) - फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, स्थिति को वापस लाने के बाद
NavBackStackEntry
Lifecycle
को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
को पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntry
Lifecycle
, फ़्रैगमेंट में एंट्री और एग्ज़िट के खास इफ़ेक्ट पूरे होने का इंतज़ार करेगा. इसके बाद ही, वह अपने फ़ाइनलLifecycle.State
को मूव करेगा. (I3cb19, b/238686802)DialogFragmentNavigator
अब नेविगेट करते समय औरNavBackStackEntries
को पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अबNavBackStackEntry
Lifecycle
,DialogFragment
Lifecycle
केDESTROYED
पर जाने के बाद हीDESTROYED
पर जाएगा. (I53ee5, b/261213893)
एपीआई में हुए बदलाव
NavigatorState
अबprepareForTransition
एपीआई उपलब्ध कराता है, ताकिNavigator
,NavBackStackEntries
को इंटरमीडिएटLifecycle.State
पर ले जा सकें. (I42c21, b/238686802)- अब
backstack
प्रॉपर्टी के ज़रिए,NavGraphNavigator
याComposeNavigator
से जुड़े बैक स्टैक को ऐक्सेस किया जा सकता है.ComposeNavigator
अबonTransitionComplete()
कॉलबैक को भी दिखाता है, ताकि नेविगेट याpopBackStack
ऑपरेशन पूरा करने वालेNavBackStackEntry
को 'पूरा हुआ' के तौर पर मार्क किया जा सके. (I02062, I718db, b/257519195)
गड़बड़ियां ठीक की गईं
push/popWithTransition
एपीआई का इस्तेमाल करने पर, नेविगेटर की स्थिति अब कोई कार्रवाई नहीं करेगी. ऐसा तब होगा, जब एंट्री को पहले से ही मैनेज किया जा रहा हो. (Iadbfa, b/261213893)- नेस्ट किए गए
NavGraph
के साथlaunchSingleTop
का इस्तेमाल करने पर, ओरिजनल डेस्टिनेशन से लेकर इसकेstartDestination
तक के सभी डेस्टिनेशन, बैकस्टैक में सबसे ऊपर सही तरीके से जोड़े जाएंगे. (Id4bea, b/253256629) - अब एक ही डेस्टिनेशन पर नेविगेट करते समय,
DialogFragment
इंस्टेंस को सही तरीके से बदल दिया जाएगा. इसके लिए,launchSingleTop
फ़्लैग को 'सही' पर सेट करना होगा. (I45b5a, b/149572817) - नेविगेशन SafeArgs का इस्तेमाल करते समय, अब 19 वर्णों वाले आर्ग्युमेंट का इस्तेमाल करने पर कंपाइलेशन की गड़बड़ी नहीं होगी. (Id60bc, b/257110095)
वर्शन 2.6.0-alpha04
9 नवंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha04
रिलीज़ हो गया है. वर्शन 2.6.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
NavType
के कस्टम सबक्लास, अबserializeAsValue
को स्ट्रिंग में वैल्यू को क्रम से लगाने के लिए बदल सकते हैं. इससे क्रम से लगाने और क्रम से हटाने (parseValue
के ज़रिए) की प्रोसेस को पूरी तरह सेNavType
क्लास में शामिल किया जा सकता है.StringType
अब इस तरीके को बदलकर, दिए गएString
परUri.encode
को कॉल करता है. (Ie5213, b/247637434)NavigationUI
अब लॉग उपलब्ध कराता है, ताकि यह पता चल सके कि किसी चुने गएMenuItem
के ज़रिए नेविगेट क्यों नहीं किया जा सका. (I2af5a, b/247730357)
गड़बड़ियां ठीक की गईं
- नेविगेशन डीप लिंक को अब ग्राफ़ के शुरू होने पर पार्स करने के बजाय, लेज़ी तरीके से पार्स किया जाता है. इससे ऐप्लिकेशन के शुरू होने पर उसकी परफ़ॉर्मेंस बेहतर हो सकती है. (Iab0ab)
- डिफ़ॉल्ट आर्ग्युमेंट के तौर पर शून्य वैल्यू वाले डेस्टिनेशन पर डीप लिंक करने के बाद, ऊपर की ओर नेविगेट करने पर ऐप्लिकेशन क्रैश होने की समस्या ठीक की गई है. (I51c24, b/243183636)
डिपेंडेंसी अपडेट
- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब Play Feature Delivery Library पर निर्भर करती है. (Ib4ddc)
- नेविगेशन सेफ़ आर्ग्युमेंट अब Android Gradle प्लग इन 7.3.0 वर्शन पर निर्भर करता है. इसका मतलब है कि अब यह सिर्फ़ 7.3.0 और इसके बाद के वर्शन के साथ काम करता है. (I47e49)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha03
रिलीज़ हो गया है. वर्शन 2.6.0-alpha03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.3
से: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) navDeepLink
Kotlin DSL का इस्तेमाल करके, खालीNavDeepLink
बनाने की कोशिश करने पर अब लिंट की चेतावनी दिखेगी. इसमें बताया जाएगा कि डीप लिंक के मान्य होने के लिए, यूआरआई, ऐक्शन, और/या माइमटाइप की ज़रूरत होती है. (I08d2f, b/154038883)
एपीआई में हुए बदलाव
NavDestination
एक्सटेंशन फ़ंक्शन जोड़ा गया है. यहandroid:label="{arg}"
के फ़ॉर्म में मौजूद आर्ग्युमेंट के साथ डाइनैमिक लेबल को स्ट्रिंग में पार्स करता है. यह फ़ंक्शन,ReferenceType
आर्ग्युमेंट के साथ काम करता है. इसके लिए, यहR.string
वैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स करता है. (I07d89, b/236269380)
व्यवहार में बदलाव
- NavBackStackEntry के
arguments
औरOnDestinationChangedListener
को पास किए गएarguments
, अब सिर्फ़ उन आर्ग्युमेंट की कॉपी हैं जिन्हें डेस्टिनेशन पर नेविगेट करते समय बनाया गया था. इसका मतलब है कि उन बंडलों में किए गए किसी भी बदलाव का असर,arguments
या अन्यOnDestinationChangedListener
इंस्टेंस के बाद के ऐक्सेस पर नहीं दिखेगा. (I676f5)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.2
: डाइनैमिक नेविगेशन अब अन्य मॉड्यूल से गतिविधि के डेस्टिनेशन इंस्टॉल करने की कोशिश करता है. इसके बाद, उन पर नेविगेट करता है. (Ia2c16, b/240292838) - नेविगेशन
2.5.2
: अब एक ही डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, फ़्रैगमेंट इंस्टेंस को सही तरीके से बदल देगा. साथ ही,launchSingleTop
फ़्लैग को सही पर सेट कर देगा. (I5a2f1, b/237374580) - नेविगेशन
2.5.2
से: डबल नेस्ट किए गए ऐसे ग्राफ़ पर नेविगेट करने की वजह से हुईIllegalStateException
समस्या को ठीक किया गया है जो पॉप किए गए नए स्टार्ट डेस्टिनेशन के साथ पैरंट शेयर करता है. (I9f7cb, b/243778589)
वर्शन 2.5
वर्शन 2.5.3
24 अक्टूबर, 2022
androidx.navigation:navigation-*:2.5.3
रिलीज़ हो गया है. वर्शन 2.5.3 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
Crossfade
के लिए कोई डेस्टिनेशन उपलब्ध न होने पर,NavHost
अबNoSuchElementException
नहीं दिखाएगा. अब यह सिर्फ़ कंपोज़ करने की सुविधा को स्किप कर देगा. (Ieb46e, b/253299416)- उस समस्या को ठीक किया गया है जिसमें डेस्टिनेशन को बैक स्टैक से हटाने पर, सेव की गई कंपोज़ स्टेट (जैसे,
rememberSaveable
का इस्तेमाल) को हटाया नहीं जा रहा था. (I64949)
वर्शन 2.5.2
7 सितंबर, 2022
androidx.navigation:navigation-*:2.5.2
रिलीज़ हो गया है. वर्शन 2.5.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- डाइनैमिक नेविगेशन अब अन्य मॉड्यूल से गतिविधि के डेस्टिनेशन इंस्टॉल करने की कोशिश करता है. इसके बाद ही, उन पर नेविगेट करता है. (Ia2c16, b/240292838)
- अब एक ही डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, फ़्रैगमेंट इंस्टेंस को सही तरीके से बदल देगा. इसके लिए,
launchSingleTop
फ़्लैग को सही पर सेट करना होगा. (I5a2f1, b/237374580) - डबल नेस्ट किए गए ऐसे ग्राफ़ पर नेविगेट करने की वजह से हुई
IllegalStateException
को ठीक किया गया है जो एक नए पॉप किए गए स्टार्ट डेस्टिनेशन के साथ पैरंट शेयर करता है. (I9f7cb, b/243778589)
डिपेंडेंसी अपडेट
- नेविगेशन
2.5.2
अब Fragment1.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)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन लाइब्रेरी अब लाइफ़साइकल
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
पर काम कर सके. साथ ही, AGP के7.0
से पहले के वर्शन के साथ काम करने की सुविधा को बंद कर दिया है.- applicationId के बजाय, namespace build.gradle एट्रिब्यूट का इस्तेमाल करने की सुविधा जोड़ी गई है.
अन्य बदलाव
visibleEntries
एपीआई अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. यह एक ऐसा फ़ंक्शन उपलब्ध कराता है जिसकी मदद से उन सभी एंट्री को वापस पाया जा सकता है जिनका डेस्टिनेशन, फ़िलहालNavController
के हिसाब से दिख रहा है.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.navigation:navigation-*:2.5.0-rc02
रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- Navigation Compose
NavHost
का इस्तेमाल करते समय, बॉटम डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. (I3979a, b/234054916) Navigation SafeArgs
अब तब क्रैश नहीं होगा, जबapplicationIdSuffix
और नेमस्पेस का इस्तेमाल किया जा रहा हो और उनमेंapplicationId
मौजूद न हो याapplicationId
और नेमस्पेस अलग-अलग हों. (I754b1, b/233119646)NavArgument
में अब एक कस्टमtoString()
फ़ंक्शन है. इसकी मदद से, आर्ग्युमेंट की इंटरनल वैल्यू दिखाई जा सकती हैं. (I900a8)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.navigation:navigation-*:2.5.0-rc01
रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये कमिट शामिल हैं.
नई सुविधाएं
- आपकी
navigation.xml
फ़ाइल में,<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 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
DialogNavigator
अबdismiss()
कॉल को एक्ज़ीक्यूट करते समय,popWithTransition
का इस्तेमाल करता है. इस कुकी का इस्तेमाल,dialog
डेस्टिनेशन मेंViewModel
का इस्तेमाल करते समय रेस कंडीशन को ठीक करने के लिए किया जाता है. इससे, सिस्टम के बैक बटन का इस्तेमाल करके या डायलॉग से बाहर निकलने के लिए डायलॉग के बाहर टैप करके डायलॉग को खारिज करते समय,IllegalStateException
की समस्या ठीक हो जाती है. (Id7376, b/226552301)
डिपेंडेंसी से जुड़े अपडेट
- अब नेविगेशन, लाइफ़साइकल
2.5.0-beta01
पर निर्भर करता है. साथ ही, एक से ज़्यादा बैक स्टैक का इस्तेमाल करते समय, प्राइमरी बॉटम नेविगेशन टैब के अलावा किसी दूसरे टैब में एकNavHost
को दूसरेNavHost
में नेस्ट करते समय,IllegalStateException
को ठीक किया गया है.
वर्शन 2.5.0-alpha04
6 अप्रैल, 2022
androidx.navigation:navigation-*:2.5.0-alpha04
रिलीज़ हो गया है. वर्शन 2.5.0-alpha04 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
visibleEntries
अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I4829f, b/225394514)
गड़बड़ियां ठीक की गईं
- NavHost अब यह तय करने के लिए कि किन एंट्री को कंपोज़ करना है,
NavController
सेvisibleEntries
पर निर्भर करता है. इसका मतलब है कि नेस्ट किए गए NavHost का इस्तेमाल करते समय, अब अंदरूनीNavHost
को सही तरीके से ऐनिमेट किया जाना चाहिए. (I4ba2b, b/225394514) NavController
से मिलेvisibleEntries
StateFlow
को अब लाइफ़साइकल की मौजूदा स्थिति के बजाय, लाइफ़साइकल की एंट्री मैक्स स्थिति के आधार पर तय किया जाता है. इसका मतलब है कि अगर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) NavDeepLink
s अब बिना वजह दो बार आर्ग्युमेंट डिकोड नहीं करेगा. इसका मतलब है कि अब सही आर्ग्युमेंट, आपके फ़ाइनल डेस्टिनेशन पर पास किए जाते हैं. (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
का इस्तेमाल करता है. इसे हमारे उदाहरण के तौर पर दिए गए कोड में देखा जा सकता है.NavHostFragment
NavController
पर मौजूद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 के ज़रिए रनटाइम पर प्रोग्राम के हिसाब से बनाए गए पूरी तरह से डाइनैमिक ग्राफ़ को सपोर्ट करने के लिए होती है.
इस रिलीज़ में, नेविगेशन ग्राफ़ में किसी डेस्टिनेशन की पहचान करने के लिए एक नया विकल्प पेश किया गया है. इसकी पहचान route के हिसाब से की जाती है. रास्ता एक String
होता है, जो किसी डेस्टिनेशन तक पहुंचने के लिए खास पाथ तय करता है. Kotlin DSL के वे सभी तरीके अब काम नहीं करते जिनमें डेस्टिनेशन आईडी का इस्तेमाल किया जाता था. इनकी जगह, ऐसे एपीआई का इस्तेमाल किया जा सकता है जो रूट का इस्तेमाल करते हैं.
हर रूट को Uri
के ‘पाथ’ वाले हिस्से के तौर पर माना जाना चाहिए.यह हिस्सा, डेस्टिनेशन के बारे में बताता है. उदाहरण के लिए, home
, profile/{userId}
, profile/{userId}/friends
वगैरह. जब किसी डेस्टिनेशन की पहचान किसी कॉन्टेंट से जुड़ी होती है, तो उन डाइनैमिक आर्ग्युमेंट को रूट का हिस्सा होना चाहिए. इसके लिए, इंप्लिसिट डीप लिंक के नियमों का पालन करना होगा.
सभी NavController
एपीआई, जो पहले सिर्फ़ आईडी लेते थे उनमें अब एक ओवरलोड होता है, जो रूट String
लेता है. इसमें navigate()
, popBackStack()
, popUpTo()
, और getBackStackEntry()
शामिल हैं.
इससे एपीआई पर कुछ असर पड़ा है:
- Kotlin DSL में मौजूद
popUpTo
Kotlin प्रॉपर्टी को अब इस्तेमाल नहीं किया जा सकता. इसकी जगहpopUpToId
का इस्तेमाल किया जा सकता है. getStartDestination()
एपीआई अब काम नहीं करता. उसकी जगहgetStartDestinationId()
का इस्तेमाल किया जाता है.
आईडी के हिसाब से नेविगेट करने के बजाय, रूट के हिसाब से नेविगेट करने पर वही नियम लागू होते हैं जो इंप्लिसिट डीप लिंक के लिए लागू होते हैं. इसका मतलब है कि किसी भी नेस्ट किए गए ग्राफ़ में मौजूद किसी भी डेस्टिनेशन पर सीधे नेविगेट किया जा सकता है. इससे यह पक्का होता है कि इन रूट का इस्तेमाल मल्टी-मॉड्यूल प्रोजेक्ट में किया जा सकता है. इसके लिए, हर डेस्टिनेशन में बाहरी तौर पर दिखने वाला डीप लिंक जोड़ने की ज़रूरत नहीं होती.
Navigation Compose
navigation-compose
आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन की सुविधा देता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable
फ़ंक्शन का इस्तेमाल करता है.
इस रिलीज़ में ये सुविधाएं उपलब्ध हैं:
- यह एक
NavHost
कंपोज़ेबल है. इसकी मदद से, Kotlin DSL का इस्तेमाल करके नेविगेशन ग्राफ़ बनाया जा सकता है. इसके लिए,composable
औरdialog
डेस्टिनेशन का इस्तेमाल किया जाता है. साथ ही, इसमें Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर के लिए भी सहायता मिलती है. - डेस्टिनेशन के बीच क्रॉसफ़ेडिंग की सुविधा देना ज़रूरी है. साथ में दिखने वाले नेविगेशन ऐनिमेशन का इस्तेमाल करके, एक्सपेरिमेंटल कंपोज़ एपीआई की मदद से, स्क्रीन में शामिल होने और उससे बाहर निकलने के ट्रांज़िशन को कंट्रोल किया जा सकता है.
- हर कंपोज़ेबल डेस्टिनेशन के लिए,
Lifecycle
का स्कोप तय करना. हर डेस्टिनेशन, सिर्फ़ तबRESUMED
स्थिति में पहुंचता है, जब सभी ट्रांज़िशन खत्म हो जाते हैं. इसके बाद, जैसे ही कोई ट्रांज़िशन शुरू होता है, वह तुरंतSTARTED
स्थिति में आ जाता है. इस तरह, जबLifecycle
RESUMED
स्थिति में होता है, तब सिर्फ़navigate
कॉल ट्रिगर करके,IllegalStateException
और मल्टी-टच से जुड़ी सभी समस्याओं से बचा जा सकता है. - डेस्टिनेशन लेवल पर,
ViewModel
का स्कोप तय करना. इसके लिए, Lifecycle ViewModel Compose2.4.0
केviewModel()
API या Hilt Navigation Compose1.0.0
केhiltViewModel()
का इस्तेमाल किया जाता है. इससे ऐसा स्कोप मिलता है जो कॉन्फ़िगरेशन में बदलाव होने और बैक स्टैक में होने पर भी बना रहता है. ऐसा तब होता है, जब आपके कंपोज़ेबल कॉन्टेंट को किसी और तरीके से हटाया जाता है. साथ ही, ViewModel केonCleared()
में एक सिग्नल मिलता है, जिससे यह पता चलता है किNavBackStackEntry
से जुड़े स्टेट को हमेशा के लिए हटा दिया गया है और उसे साफ़ कर दिया गया है. - डेस्टिनेशन लेवल पर
rememberSaveable
की स्थिति को स्कोप करना. इससे यह पक्का होता है कि कंपोज़ेबल की सभी स्थितियां सेव हो जाएं और जब आप किसी डेस्टिनेशन पर वापस आएं, तो वे अपने-आप वापस आ जाएं. - प्रोसेस बंद होने और फिर से शुरू होने के बाद,
NavController
और उसके डेस्टिनेशन की स्थिति को सेव करने और वापस लाने की सुविधा. - सिस्टम के बैक बटन के साथ अपने-आप इंटिग्रेट होने की सुविधा.
आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजे वापस भेजने की सुविधा.
rememberNavController()
औरcurrentBackStackEntryAsState()
में कुछ खास हेल्पर कंपोज़ करें, ताकि होस्टिंग की स्थिति को अनुमति दी जा सके. साथ ही,NavController
कोNavHost
से बाहर के कंपोज़ेबल (जैसे कि सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट किया जा सके.
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
ज़्यादा जानकारी के लिए, Compose Navigation गाइड देखें.
एक से ज़्यादा बैक स्टैक
NavController, डेस्टिनेशन के बैक स्टैक को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate()
करते हैं, तो यह उसे बैक स्टैक में जोड़ता है. साथ ही, जब आप popBackStack()
को कॉल करते हैं या सिस्टम के बैक बटन को ट्रिगर करते हैं, तो यह उसे हटा देता है. बैक स्टैक को सेव करने और उसे पहले जैसा करने की सुविधा देने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद मौजूदा NavOptions
क्लास और <action>
एलिमेंट को बड़ा किया गया है.
इस बदलाव के तहत, onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
, और NavigationView.setupWithNavController()
के NavigationUI
तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और रीस्टोर करते हैं. इससे, कोड में कोई बदलाव किए बिना, एक से ज़्यादा बैक स्टैक के लिए सहायता मिलती है. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, एक से ज़्यादा बैक स्टैक के साथ इंटिग्रेट करने का यह सबसे सही तरीका है.
स्टेट को सेव और वापस लाने के लिए इस्तेमाल किए जाने वाले एपीआई, कई प्लैटफ़ॉर्म पर उपलब्ध हैं:
नेविगेशन एक्सएमएल में,
<action>
एलिमेंट अबapp:popUpToSaveState
औरapp:restoreState
के बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससेapp:popUpTo
के ज़रिए पॉप अप किए गए किसी भी डेस्टिनेशन की स्थिति को सेव किया जा सकता है. साथ ही,app:destination
के तौर पर पास किए गए डेस्टिनेशन से जुड़ी स्थिति को वापस लाया जा सकता है:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL में,popUpTo
बिल्डर परrestoreState
बूलियन प्रॉपर्टी औरsaveState
बूलियन प्रॉपर्टी जोड़ी जा सकती हैं:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
NavOptions.Builder
के ज़रिए मैन्युअल तरीके सेNavOptions
ऑब्जेक्ट बनाते समय,setPopUpTo()
के लिएsetRestoreState()
और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह एक अतिरिक्तsaveState
पैरामीटर लेता है.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
को प्रोग्राम के हिसाब से कॉल करने के लिए, अब एक औरsaveState
पैरामीटर शामिल किया जा सकता है.popBackStack()
याpopUpToSaveState
की मदद से सेव किए गए किसी भी स्टेट को मिटाने के लिए,clearBackStack()
तरीके का इस्तेमाल किया जा सकता है.
हर मामले में, NavController
हर NavBackStackEntry
की स्थिति को सेव और रीस्टोर करेगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel
इंस्टेंस भी शामिल हैं. Navigator
एपीआई को अपडेट किया गया है, ताकि हर Navigator
अपनी स्थिति को सेव और वापस ला सके.
व्यवहार में बदलाव
NavDeepLinkBuilder
अबcreatePendingIntent()
से मिलेPendingIntent
मेंPendingIntent.FLAG_IMMUTABLE
जोड़ता है. इससे यह पक्का होता है कि Android 12 को टारगेट करते समय, यह एपीआई उम्मीद के मुताबिक काम करे.- नेविगेशन अब लाइफ़साइकल
2.3.1
पर निर्भर करता है. साथ ही, अबsetGraph()
,popBackStack()
,navigateUp()
, औरnavigate()
को मार्क करता है. ये ऐसे तरीके हैं जोNavBackStackEntry
Lifecycle
को@MainThread
के तौर पर अपडेट करते हैं. इससे नेविगेशन, लाइफ़साइकल2.3.0
में लागू किए गए मुख्य थ्रेड एनफ़ोर्समेंट के साथ अलाइन हो जाता है. - डीप लिंक अब यह पुष्टि करते हैं कि
Uri
में सभी ज़रूरी आर्ग्युमेंट (जिनकी डिफ़ॉल्ट वैल्यू नहीं होती) मौजूद हैं. NavDeepLink
पार्स किए गए आर्ग्युमेंट में अब पाउंड के निशान को भी सवाल के निशान की तरह माना जाता है. इसका इस्तेमाल पाथ सेगमेंट के बीच सेपरेटर के तौर पर किया जाता है. इससे पाउंड के निशान के बीच कोई आर्ग्युमेंट नहीं आ पाता.- कार्रवाइयां जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड अब डिफ़ॉल्ट वैल्यू वाले आर्ग्युमेंट को, डिफ़ॉल्ट वैल्यू वाले आर्ग्युमेंट से पहले पैरामीटर के तौर पर रखता है.
- आर्ग्युमेंट जनरेट करते समय, Safe Args अब डिफ़ॉल्ट वैल्यू वाले पैरामीटर से पहले, डिफ़ॉल्ट वैल्यू के बिना वाले पैरामीटर रखता है.
- Safe-Args अब Android Gradle प्लग इन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको
applicationIdTextResource
का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी.
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- Navigation
2.5.0-alpha01
में ठीक किया गया: किसी फ़्रैगमेंट केonCreate()
सेby navGraphViewModels()
के ज़रिए बनाए गएViewModel
को ऐक्सेस करने पर,IllegalStateException
दिखेगा. (b/213504272) - Navigation
2.5.0-alpha01
में ठीक किया गया: Safe Args 2.4.0, Android Gradle Plugin 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
फ़्लैग जोड़ती है. ऐसा तब होता है, जब किसी दूसरे ग्राफ़ पर नेविगेट किया जाता है. इससे यह पक्का होता है कि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
की स्थिति के साथ सही तरीके से सिंक होती है. इसका मतलब है कि अबDialogFragment
के लिए, एसिंक्रोनसdismiss()
एपीआई को मैन्युअल तरीके से कॉल करने पर, खारिज किए गए डायलॉग के ऊपर मौजूद सभी डायलॉग डेस्टिनेशन ठीक से हट जाते हैं. इससे उन मामलों पर कोई असर नहीं पड़ता जिनमें डायलॉग को खारिज करने के लिए,popUpTo
याpopBackStack()
का इस्तेमाल किया जाता है. (I77ba2) AbstractAppBarOnDestinationChangedListener
में अबonDestinationChanged()
के लिए, गड़बड़ी के बारे में ज़्यादा साफ़ तौर पर जानकारी देने वाले मैसेज दिखते हैं. (Ie742d)
वर्शन 2.4.0-alpha10
29 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha10
रिलीज़ हो गया है. वर्शन 2.4.0-alpha10 में ये कमिट शामिल हैं.
नई सुविधाएं
- NavController अब
visibleEntries
StateFlow (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)
एपीआई में हुए बदलाव
navArgument
Kotlin 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)- किसी मंज़िल तक पहुंचने के लिए,
@null
की डिफ़ॉल्ट वैल्यू वालेstring[]
आर्ग्युमेंट का इस्तेमाल करते समय,NullPointerException
को ठीक किया गया. (I1fbe8) @Navigator.Name
के लिए ProGuard के नियम जोड़े गए हैं. साथ ही, R8 3.1 के फ़ुल मोड का इस्तेमाल करते समय आने वाली समस्याएं ठीक की गई हैं. (I2add9, b/191654433)Kotlin
से पहले के वर्शन का इस्तेमाल करके ऐप्लिकेशन बनाने पर, SafeArgs अब काम नहीं करेगा.1.5.0
(Icd1ff, b/190739257)
वर्शन 2.4.0-alpha03
16 जून, 2021
androidx.navigation:navigation-*:2.4.0-alpha03
रिलीज़ हो गया है. वर्शन 2.4.0-alpha03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- डाइनैमिक ग्राफ़ पर जाने के लिए दो
navigate()
कॉल करने की ज़रूरत होती थी. इस समस्या को ठीक कर दिया गया है. (I7785c, b/188859835) - नेविगेशन
2.4.0-alpha01
में हुई एक रिग्रेशन समस्या को ठीक किया गया है. इस समस्या की वजह से, टॉप लेवल डेस्टिनेशन पर होने परsetupActionBarWithNavController()
, 'ऊपर जाएं' आइकॉन को ठीक से नहीं हटाता था. (I5d443, b/189868637) - NavController के रूट ग्राफ़ को पहले पॉप करने के बाद,
popBackStack()
को कॉल करते समय होने वालीIllegalStateException
को ठीक किया गया. (I2a330, b/190265699) by navArgs()
के लिए ProGuard के नियम अबnavigation-common
या इस पर निर्भर करने वाले किसी भी आर्टफ़ैक्ट का इस्तेमाल करते समय सही तरीके से लागू होते हैं. (I68800, b/190082521)OnDestinationChangedListener
जो पहली बार कॉल करने परnavigate()
को कॉल करता है, उसे अब उस डेस्टिनेशन के साथ दूसरा कॉलबैक मिलेगा जिस पर वह नेविगेट किया गया था. (Ie5f9e, b/190228815)- डाइनैमिक फ़ीचर मॉड्यूल और AGP 7.0+ के साथ Safe Args का इस्तेमाल करने पर, अब यह क्रैश नहीं होता. (I69518, b/189966576)
आम समस्या
- Kotlin के पुराने वर्शन पर निर्भरता की वजह से, Gradle
6.7.0
का इस्तेमाल करते समय Safe Args मेंUnable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
गड़बड़ी होगी. Gradle 7.0 का इस्तेमाल करके, इस समस्या को ठीक किया जा सकता है. (b/190739257)
वर्शन 2.4.0-alpha02
2 जून, 2021
androidx.navigation:navigation-*:2.4.0-alpha02
रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये कमिट शामिल हैं.
नई सुविधाएं
- रास्ते अब ऐक्टिविटी, फ़्रैगमेंट, और डायलॉग डेस्टिनेशन के साथ-साथ पूरे DynamicNavigation Kotlin DSL के लिए काम करते हैं. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
ने कुछ समय के लिए एक्सपेरिमेंटल एपीआई जोड़े हैं, ताकि आपको अपनी स्थिति सेव करने की सुविधा से ऑप्ट आउट करने का विकल्प मिल सके. स्टेट को हमेशा सेव करना सही तरीका है. हालांकि, अब इस्तेमाल नहीं की जा रही लाइब्रेरी (जैसे, बनाए रखे गए फ़्रैगमेंट) का इस्तेमाल अब भी किया जा रहा है. स्टेट को सेव करते समय, इनका इस्तेमाल नहीं किया जा सकता. इसलिए, ऐप्लिकेशन को ऐसे एपीआई से धीरे-धीरे दूर होने का मौका मिलता है जिनका इस्तेमाल नहीं किया जा सकता. (Idf93c)नेविगेशन में अब
findDestination()
औरgetHierarchy()
एपीआई उपलब्ध हैं. इनका इस्तेमाल, कस्टम NavigationUI को लागू करने के लिए किया जा सकता है.findDestination()
,NavGraph
पर एक एक्सटेंशन फ़ंक्शन है. यह ग्राफ़ में डेस्टिनेशन का पता लगाएगा.getHierarchy()
,NavDestination
पर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि दिया गया डेस्टिनेशन, किसी दूसरे डेस्टिनेशन की हैरारकी में है या नहीं.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI के उन तरीकों को अपडेट किया गया है जो
BottomNavigationView
लेते थे. अब वे Material1.4.0
,NavigationBarView
में पेश की गई सुपरक्लास लेते हैं. इससे इन तरीकों कोNavigationRailView
के साथ इस्तेमाल किया जा सकता है. (Ib0b36, b/182938895)एक्सएमएल के ज़रिए
<action>
एलिमेंट को बड़ा करते समय, ऐनिमेशन एट्रिब्यूट,app:enterAnim="?attr/transitionEnter"
सिंटैक्स का इस्तेमाल करके आपकी थीम से लिए गए एट्रिब्यूट का इस्तेमाल कर सकते हैं. (I07bc1, b/178291654)
एपीआई में हुए बदलाव
- आईडी का इस्तेमाल करने वाले Kotlin डीएसएल बिल्डर अब काम नहीं करते. इसलिए, इन्हें रास्तों का इस्तेमाल करने वाले बिल्डर से बदल देना चाहिए (I85b42, b/188816479) (I9f58f, b/188816479)
गड़बड़ियां ठीक की गईं
DialogFragmentNavigator
अबNavigatorState.pop()
एपीआई का इस्तेमाल करता है, ताकिNavController
को यह सूचना दी जा सके कि सिस्टम के बैक बटन को दबाकर या डायलॉग के बाहर क्लिक करके, डायलॉग को खारिज कर दिया गया है. इससे यह पक्का किया जा सकेगा किNavController
की स्थिति हमेशा नेविगेटर की स्थिति के साथ सिंक हो. (I2ead9)onDestinationChanged
कॉलबैक का इस्तेमाल करके,OnDestinationChangedListeners
की सूची में बदलाव करने पर, नेविगेशन अबConcurrentModificationException
नहीं देता. (Ib1707, b/188860458)Kotlin में दिशा-निर्देश प्रॉपर्टी जनरेट करने की कोशिश करते समय, Safe Args अब क्रैश नहीं होता. (Id2416, b/188564435)
NavDestination पर setId तरीके को अब
@IdRes
के साथ सही तरीके से एनोटेट किया गया है, इसलिए यह सिर्फ़ संसाधन आईडी स्वीकार करता है. (I69b80)findNode
का 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” />
navOptions
Kotlin DSL में,popUpTo
बिल्डर परrestoreState
बूलियन प्रॉपर्टी औरsaveState
बूलियन प्रॉपर्टी जोड़ी जा सकती हैं:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
NavOptions.Builder
के ज़रिए मैन्युअल तरीके सेNavOptions
ऑब्जेक्ट बनाते समय,setPopUpTo()
के लिएsetRestoreState()
और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह एक अतिरिक्तsaveState
पैरामीटर लेता है.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
को प्रोग्राम के हिसाब से कॉल करने के लिए, अब एक औरsaveState
पैरामीटर शामिल किया जा सकता है.
हर मामले में, NavController
हर NavBackStackEntry
की स्थिति को सेव और रीस्टोर करेगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel
इंस्टेंस भी शामिल हैं. Navigator
एपीआई को अपडेट किया गया है, ताकि हर Navigator
अपनी स्थिति को सेव और वापस ला सके.
Navigation Compose में composable
डेस्टिनेशन के लिए इस्तेमाल किए जाने वाले ComposeNavigator
और फ़्रैगमेंट के साथ नेविगेशन में <fragment>
डेस्टिनेशन के लिए इस्तेमाल किए जाने वाले FragmentNavigator
और DynamicFragmentNavigator
, दोनों को अपडेट किया गया है. अब ये नए नेविगेटर एपीआई का इस्तेमाल करते हैं. साथ ही, ये स्थिति को सेव और वापस लाने की सुविधा के साथ काम करते हैं.
नेविगेशन के रास्ते
रास्ता एक String
होता है, जो किसी डेस्टिनेशन की खास पहचान करता है. पहले, इस कॉन्सेप्ट का इस्तेमाल सिर्फ़ Navigation Compose में किया जाता था. अब यह कोर नेविगेशन एपीआई का हिस्सा बन गया है. इससे, Navigation Kotlin DSL के ज़रिए ग्राफ़ बनाते समय, पूर्णांक आईडी का इस्तेमाल करने का विकल्प मिलता है. (b/172823546)
ऐसे सभी एपीआई जो सिर्फ़ आईडी लेते थे उनमें अब एक ओवरलोड होता है, जो रूट String
लेता है. इसमें navigate()
, popBackStack()
, popUpTo()
, और getBackStackEntry()
शामिल हैं.
इससे एपीआई पर कुछ असर पड़ा है:
- Kotlin डीएसएल में
popUpTo
kotlin प्रॉपर्टी को बंद कर दिया गया है. अब इसकी जगह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()
को मार्क करता है. ये ऐसे तरीके हैं जोNavBackStackEntry
Lifecycle
को@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
के साथLocalSavedStateRegistryOwner
CompositionLocal को पॉप्युलेट करता है. इससे यह पक्का होता है कि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 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Navigation Compose अब 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)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन 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
, पुल अनुरोध के लिए धन्यवाद. अबapp:argType=”float”
के साथ किसी तर्क के लिएdefaultValue
की अनुमति दी जा सकती है. साथ ही, पूर्णांक की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जा सकता है. (#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 अब हैशकोड और 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
में जोड़ा गया है और DrawerLayout1.1.0
मेंDrawerLayout
ने लागू किया है.- डीप लिंक में ऐक्शन और माइम टाइप का इस्तेमाल: डीप लिंकिंग की सुविधा को अब
app:uri
के साथ-साथapp:action
औरapp:mimeType
के लिए भी उपलब्ध कराया गया है.NavController
अब नईNavDeepLinkRequest
क्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन के हिसाब से नेविगेट करने की सुविधा देता है. ज़्यादा जानकारी के लिए, NavDeepLinkRequest का इस्तेमाल करके नेविगेट करना लेख पढ़ें.
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
- Manifest Merger में, डीप लिंक की कार्रवाइयों और माइम टाइप के लिए सहायता अभी उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में मौजूद
<nav-graph>
एलिमेंट से जनरेट हुए किसी भी<intent-filter>
एलिमेंट में,<data>
एलिमेंट में आपका माइम टाइप या आपका कस्टम<action>
शामिल नहीं होगा. आपको अपने मेनिफ़ेस्ट में सही<intent-filter>
को मैन्युअल तरीके से जोड़ना होगा.
वर्शन 2.3.0-rc01
10 जून, 2020
androidx.navigation:navigation-*:2.3.0-rc01
रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- डेस्टिनेशन के ऐसे इंस्टेंस को
singleTop
के साथ आर्ग्युमेंट वाले दूसरे इंस्टेंस से बदलते समय,NullPointerException
को ठीक किया गया. (b/158006669) NavController
से थ्रो किए गए सभीdestination is unknown
अपवादों में अब डीबग करने के बारे में ज़्यादा जानकारी शामिल है. इससेNavController
की स्थिति का पता लगाने में मदद मिलती है. (b/157764916)
वर्शन 2.3.0-beta01
20 मई, 2020
androidx.navigation:navigation-*:2.3.0-beta01
रिलीज़ की गई हैं. वर्शन 2.3.0-beta01 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद,
NavBackStackEntry
काLifecycle
ठीक से अपडेट नहीं होता था. (b/155218371) OnDestinationChangedListener
को कॉल करने से पहले रजिस्टर किए गएOnDestinationChangedListener
इंस्टेंस को अब प्रोसेस बंद होने के बाद, सही तरीके से डेस्टिनेशन की जानकारी भेजी जाती है.setGraph()
(b/155218371)singleTop
का इस्तेमाल करने पर,NavBackStackEntry
के तर्क अब सही तरीके से अपडेट हो जाते हैं. साथ ही, अपडेट किए गए तर्क,OnDestinationChangeListener
के सभी इंस्टेंस को भेज दिए जाते हैं. (b/156545508)
डिपेंडेंसी से जुड़े अपडेट
NavigationUI
आर्टफ़ैक्ट अब CustomView1.1.0-rc01
और DrawerLayout1.1.0-rc01
पर निर्भर करता है. (aosp/1309696)
वर्शन 2.3.0-alpha06
29 अप्रैल, 2020
androidx.navigation:navigation-*:2.3.0-alpha06
रिलीज़ हो गया है. (वर्शन 2.3.0-alpha06 में ये कमिट शामिल हैं.)
नई सुविधाएं
- डीप लिंकिंग की सुविधा को अब
app:action
औरapp:mimeType
के लिए भी उपलब्ध कराया गया है. इससे पहले, यह सुविधा सिर्फ़app:uri
के लिए उपलब्ध थी. NavController अब नईNavDeepLinkRequest
क्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन से नेविगेट करने की सुविधा देता है. (b/136573074, b/135334841)
एपीआई में हुए बदलाव
- डाइनैमिक नेविगेशन डेस्टिनेशन के लिए, Kotlin DSL के साथ काम करने की सुविधा को बेहतर बनाया गया है. (b/148969800)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसमें नेस्ट किए गए स्टार्ट डेस्टिनेशन का इस्तेमाल करने पर, डीप लिंक इंटेंट को अनदेखा कर दिया जाता था. (b/154532067)
वर्शन 2.3.0-alpha05
15 अप्रैल, 2020
androidx.navigation:navigation-*:2.3.0-alpha05
रिलीज़ हो गया है. वर्शन 2.3.0-alpha05 में ये कमिट शामिल हैं.
नई सुविधाएं
<include-dynamic>
का इस्तेमाल करके डाइनैमिक ग्राफ़ में शामिल किए गए के लिए, अब आपकोapp:graphPackage
तय करने की ज़रूरत नहीं है. इसके बजाय, डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाएगा. इसके लिए,applicationId
में दशमलव के बादmoduleName
सफ़िक्स जोड़ें. अगर आपकोgraphPackage
को पसंद के मुताबिक बनाना है, तो अब${applicationId}
प्लेसहोल्डर का इस्तेमाल किया जा सकता है. (b/152696768)- नेविगेशन ग्राफ़ Kotlin DSL अब कार्रवाइयों के लिए
defaultArguments
Map
दिखाता है. इससे, नेविगेशन एक्सएमएल फ़ाइलों में<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-ktx
ProGuard के नियम अब सिर्फ़ इस्तेमाल की गई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-ui
ProGuard के नियमों को अपडेट कर दिया गया है, ताकि यह पक्का किया जा सके किandroid.enableJetifier=true
की ज़रूरत न पड़े. (b/147610424) - नेविगेशन
2.2.1
से:navigation-common-ktx
मॉड्यूल का मेनिफ़ेस्ट पैकेज नाम अब यूनीक है. यहnavigation-runtime-ktx
के मेनिफ़ेस्ट पैकेज नाम के साथ शेयर नहीं किया जाता है. (aosp/1141947)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन
2.2.1
से: नेविगेशन2.2.1
अब लाइफ़साइकल ViewModel SavedState2.2.0
और फ़्रैगमेंट1.2.1
पर निर्भर करता है.
वर्शन 2.2.2
वर्शन 2.2.2
15 अप्रैल, 2020
androidx.navigation:navigation-*:2.2.2
रिलीज़ की गई हैं. वर्शन 2.2.2 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- जब आपकी ऐक्टिविटी में कई
NavHostFragment
इंस्टेंस होते हैं, तो ग्राफ़ के शुरुआती डेस्टिनेशन पर डीप लिंक करने के दौरान होने वालीIllegalStateException
को ठीक किया गया है. (b/147378752) NavigationUI
अब खाली लेबल (यानी किandroid:label=””
वाला डेस्टिनेशन) को अनदेखा नहीं करता है. साथ ही, अब टाइटल को खाली स्ट्रिंग पर सही तरीके से सेट करता है. इसे पहले Navigation 2.3.0-alpha04 में रिलीज़ किया गया था. (b/148679860)navigation-common-ktx
ProGuard के नियम अब सिर्फ़ इस्तेमाल की गईNavArgs
क्लास को सही तरीके से सेव करते हैं. ऐसा सभीNavArgs
इंस्टेंस के बजाय किया जाता है. इसे पहले Navigation 2.3.0-alpha03 में रिलीज़ किया गया था. (b/150213558
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब Fragment
1.2.4
पर निर्भर करता है. (aosp/1277325)
वर्शन 2.2.1
वर्शन 2.2.1
5 फ़रवरी, 2020
androidx.navigation:navigation-*:2.2.1
रिलीज़ हो गया है. वर्शन 2.2.1 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- क्वेरी पैरामीटर के बिना डीप लिंक अब किसी भी क्वेरी पैरामीटर को सही तरीके से अनदेखा करते हैं. इसके बजाय, वे उन्हें ट्रेलिंग
{argument}
एलिमेंट में नहीं जोड़ते या डीप लिंक से मैच नहीं करते. (b/147447512) navigation-ui
के लिएDrawerArrowDrawable
के ProGuard नियमों को अपडेट किया गया है, ताकि यह पक्का किया जा सके किandroid.enableJetifier=true
की ज़रूरत न पड़े. (b/147610424)navigation-common-ktx
मॉड्यूल का मेनिफ़ेस्ट पैकेज नाम अब यूनीक है. यहnavigation-runtime-ktx
के मेनिफ़ेस्ट पैकेज नाम को शेयर नहीं करता है. (aosp/1141947)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन
2.2.1
अब लाइफ़साइकल ViewModel SavedState2.2.0
और फ़्रैगमेंट1.2.1
पर निर्भर करता है.
वर्शन 2.2.0
वर्शन 2.2.0
22 जनवरी, 2020
androidx.navigation:navigation-*:2.2.0
रिलीज़ हो गया है. वर्शन 2.2.0 में ये कमिट शामिल हैं.
2.1.0 के बाद के ज़रूरी बदलाव
- NavBackStackEntry: अब
NavController.getBackStackEntry()
को कॉल किया जा सकता है. इसके लिए, बैक स्टैक पर मौजूद डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास करें. जवाब में मिलेNavBackStackEntry
से, नेविगेशन की सुविधा वालाLifecycleOwner
,ViewModelStoreOwner
(वही जवाब जोNavController.getViewModelStoreOwner()
से मिलता है), औरSavedStateRegistryOwner
मिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए तर्क भी मिलते हैं. - लाइफ़साइकल व्यू मॉडल सेव्डस्टेट इंटिग्रेशन:
SavedStateViewModelFactory
अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल तब किया जाता है, जबby navGraphViewModels()
याViewModelProvider
कंस्ट्रक्टर का इस्तेमाल किया जा रहा हो. साथ ही,NavController.getBackStackEntry()
याNavController.getViewModelStoreOwner()
से मिलेViewModelStoreOwner
का इस्तेमाल किया जा रहा हो. - डीप लिंक के लिए क्वेरी पैरामीटर की सुविधा: क्वेरी पैरामीटर वाले डीप लिंक अब क्वेरी पैरामीटर के क्रम में बदलाव करने की सुविधा के साथ काम करते हैं. साथ ही, डिफ़ॉल्ट वैल्यू वाले या शून्य हो सकने वाले आर्ग्युमेंट अब डीप लिंक मैच करते समय ज़रूरी नहीं होते.
- ऐनिमेशन से जुड़ी बेहतर सुविधा:
NavHostFragment
अब Fragment 1.2.0 सेFragmentContainerView
का इस्तेमाल करता है. इससे ऐनिमेशन के z-ऑर्डरिंग से जुड़ी समस्याएं ठीक हो जाती हैं. साथ ही, विंडो इंसर्ट को फ़्रैगमेंट में भेजा जा सकता है.
वर्शन 2.2.0-rc04
18 दिसंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc04
रिलीज़ हो गया है. वर्शन 2.2.0-rc04 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
navigation-ui
में इस्तेमाल किए गए डिफ़ॉल्ट फ़ेड ऐनिमेशन को, Fragment1.2.0-rc04
में इस्तेमाल किए गए फ़ेड ऐनिमेशन से मैच करने के लिए अडजस्ट किया गया है. (b/145769814)
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc03
रिलीज़ हो गया है. वर्शन 2.2.0-rc03 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- क्वेरी पैरामीटर और पाथ के आखिरी हिस्से के तौर पर किसी आर्ग्युमेंट का इस्तेमाल करते समय, डीप लिंक पार्स करने से जुड़ी समस्या को ठीक किया गया है. इस समस्या की वजह से, फ़ाइनल पाथ आर्ग्युमेंट के एक से ज़्यादा वर्णों को पार्स नहीं किया जा सका. (b/144554689)
- डीप लिंक पार्सिंग से जुड़ी समस्या को ठीक किया गया है. इसमें वैकल्पिक पैरामीटर को
null
के बजाय"@null"
मिलता था. (b/141613546) NavHostFragment
का इस्तेमालFragmentContainerView
के साथ करने पर, कॉन्फ़िगरेशन में बदलाव होने के बाद अब ग्राफ़ को सही तरीके से वापस लाया जा सकता है. (b/143752103)
डिपेंडेंसी में बदलाव
- अब नेविगेशन, लाइफ़साइकल
2.2.0-rc03
, लाइफ़साइकल व्यूमॉडल सेव्डस्टेट1.0.0-rc03
, ऐक्टिविटी1.1.0-rc03
, और फ़्रैगमेंट1.2.0-rc03
पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc02
रिलीज़ हो गया है. वर्शन 2.2.0-rc02 में ये कमिट शामिल हैं.
डिपेंडेंसी में बदलाव
- नेविगेशन अब androidx.lifecycle
2.2.0-rc02
पर निर्भर करता है.
वर्शन 2.2.0-rc01
23 अक्टूबर, 2019
androidx.navigation:navigation-*:2.2.0-rc01
को 2.2.0-beta01
के बाद से बिना किसी बदलाव के रिलीज़ किया गया है. वर्शन 2.2.0-rc01 में ये कमिट शामिल हैं.
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.navigation:navigation-*:2.2.0-beta01
रिलीज़ हो गया है. वर्शन 2.2.0-beta01 में ये कमिट शामिल हैं.
नई सुविधाएं
- डीबग करते समय ज़्यादा काम की जानकारी देने के लिए,
NavDestination
और इसकी सबक्लास अबtoString()
को बदल देती हैं. (b/141264986)
व्यवहार में बदलाव
- अब डीप लिंक मैच करते समय, अतिरिक्त क्वेरी पैरामीटर को अनदेखा कर दिया जाता है. इससे मैच फ़ेल नहीं होता. (b/141482822)
गड़बड़ियां ठीक की गईं
- डीप लिंक के पाथ में मौजूद आर्ग्युमेंट को अनदेखा करने की समस्या को ठीक किया गया है. ऐसा तब होता था, जब क्वेरी पैरामीटर भी तय किए जाते थे. (b/141505755)
navArgs()
Activity
पर मौजूद Kotlin एक्सटेंशन में, अब कोई एक्स्ट्रा न होने पर गड़बड़ी का बेहतर मैसेज दिखता है. (b/141408999)- Safe Args से जनरेट हुई
Directions
Java क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/141099045) - Safe Args से जनरेट हुई
Args
Java क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (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 को स्कोप करना: अब Kotlin का इस्तेमाल करने वाले लोग,
-ktx
लाइब्रेरी का इस्तेमाल करके याNavController
में जोड़े गएgetViewModelStoreOwner()
एपीआई का इस्तेमाल करके, नेविगेशन ग्राफ़ लेवल पर स्कोप किए गए ViewModels बना सकते हैं. इसके लिए, उन्हेंby navGraphViewModels()
प्रॉपर्टी डेलिगेट का इस्तेमाल करना होगा. ज़्यादा जानकारी के लिए, डेस्टिनेशन के बीच यूज़र इंटरफ़ेस (यूआई) से जुड़ा डेटा शेयर करना लेख पढ़ें. - डायलॉग डेस्टिनेशन: अब
<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)NavController
setHostOnBackPressedDispatcherOwner()
तरीके कोNavHostController
केsetOnBackPressedDispatcher()
तरीके से बदल दिया गया है. अब इसे कॉल करने से पहले, आपकोsetLifecycleOwner()
को कॉल करना होगा. (aosp/965409)NavHostController
में अब एकenableOnBackPressed(boolean)
मैथड शामिल है. यहNavHostOnBackPressedManager
क्लास को बदलता है. इस क्लास को पहलेsetHostOnBackPressedDispatcherOwner()
से वापस लाया जाता था. (aosp/966091)
गड़बड़ियां ठीक की गईं
- यूआरआई से नेविगेट करने के बाद, बैक स्टैक सही नहीं होने की समस्या को ठीक किया गया है. (b/132509387)
- NavController अब डीप लिंक को अपने-आप हैंडल करता है. इसलिए, अब डीप लिंक सिर्फ़ एक बार ट्रिगर होते हैं. (b/132754763)
वर्शन 2.1.0-alpha04
16 मई, 2019
androidx.navigation:*:2.1.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
NavHostFragment
, सिस्टम के 'वापस जाएं' बटन के इवेंट को इंटरसेप्ट करते समय,app:defaultNavHost
का सही तरीके से पालन करता है. इससे Navigation2.1.0-alpha03
में रिग्रेशन ठीक हो जाता है. b/132077777DialogFragmentNavigator
अबpopBackStack()
औरnavigateUp()
के ऑपरेशन को सही तरीके से हैंडल करता है. b/132576764- नेस्ट किए गए ग्राफ़ के बीच बार-बार नेविगेट करने पर,
IllegalStateException: unknown destination during restore
से जुड़ी समस्या ठीक की गई. b/131733658
वर्शन 2.1.0-alpha03
7 मई, 2019
androidx.navigation:*:2.1.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट यहां देखे जा सकते हैं.
ऐसी समस्याएं जिनके बारे में जानकारी पहले से है
app:defaultNavHost="false"
b/132077777 का इस्तेमाल करने के बावजूद, NavHostFragment सिस्टम के 'वापस जाएं' बटन को इंटरसेप्ट करता है
नई सुविधाएं
- अब
<dialog>
डेस्टिनेशन बनाए जा सकते हैं. इन परnavigate
करने पर, आपकोDialogFragment
दिखेगा.NavHostFragment
डिफ़ॉल्ट रूप से, डायलॉग डेस्टिनेशन के साथ काम करता है. b/80267254 navigate
को रिसॉर्स आईडी याNavDirections
इंस्टेंस के साथ कॉल करने के अलावा, अबUri
के ज़रिए भी नेविगेट किया जा सकता है. यह<deepLink>
का इस्तेमाल करता है, जिसे आपने सही डेस्टिनेशन पर नेविगेट करने के लिए किसी डेस्टिनेशन में जोड़ा है. b/110412864
व्यवहार में बदलाव
- NavigationUI की ओर से दिए गए डिफ़ॉल्ट ऐनिमेशन की स्पीड को 400 मि॰से॰ से बढ़ाकर 220 मि॰से॰ कर दिया गया है, ताकि यह गतिविधियों और फ़्रैगमेंट के डिफ़ॉल्ट ऐनिमेशन की स्पीड से मेल खा सके. b/130055522
एपीआई में हुए बदलाव
NavHostFragment
केcreateFragmentNavigator()
तरीके को बंद कर दिया गया है. इसके फ़ंक्शन को नएonCreateNavController()
तरीके में ले जाया गया है, ताकि यह ज़्यादा साफ़ तौर पर बताया जा सके किNavHostFragment
को सबक्लास करते समय, कस्टम नेविगेटर जोड़ने का सही एंट्री पॉइंट यही है. b/122802849NavDestination
मेंhasDeepLink()
तरीका जोड़ा गया है. इससे यह पता लगाया जा सकता है कि दिए गएUri
को उस डेस्टिनेशन से हैंडल किया जा सकता है या नहीं. अगरNavGraph
है, तो नेविगेशन ग्राफ़ में मौजूद किसी भी डेस्टिनेशन से हैंडल किया जा सकता है या नहीं. b/117437718
गड़बड़ियां ठीक की गईं
- डिफ़ॉल्ट आर्ग्युमेंट अब
OnDestinationChangedListener
इंस्टेंस में सही तरीके से पास किए जाते हैं. b/130630686 NavHostFragment
अबOnBackPressedDispatcher
का इस्तेमाल करके, सिस्टम के बैक इवेंट को इंटरसेप्ट करता है. इससे, फ़्रैगमेंट लाइफ़साइकल के तरीकों में शर्त के हिसाब से नेविगेशन करने के दौरान आने वाली समस्या ठीक हो जाती है. यह समस्या, किसी फ़्रैगमेंट पर वापस आने पर होती है. b/111598096- Safe Args के लिए,
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 का इस्तेमाल करने वाले लोग अब
by navArgs()
प्रॉपर्टी डेलिगेट का इस्तेमाल करके,Activity
याFragment
में Safe Args से जनरेट की गईNavArgs
क्लास का रेफ़रंस पा सकते हैं. b/122603367 - Safe Args की मदद से, अब
androidx.navigation.safeargs.kotlin
प्लगिन लागू करके Kotlin कोड जनरेट किया जा सकता है. Kotlin कोड को खास तौर पर, सिर्फ़ Kotlin मॉड्यूल के लिए बनाया गया है. इसमें डिफ़ॉल्ट आर्ग्युमेंट और बिल्डर पैटर्न के बजाय इम्यूटेबल क्लास का इस्तेमाल किया गया है. बिल्डर पैटर्न अब भीandroidx.navigation.safeargs
प्लगिन के पिछले वर्शन के ज़रिए उपलब्ध है. b/110263087
व्यवहार में बदलाव
- अब मिलते-जुलते डीप लिंक में, उस डीप लिंक को प्राथमिकता दी जाती है जिसमें सबसे ज़्यादा मिलते-जुलते आर्ग्युमेंट होते हैं. b/118393029
NavController
परsetGraph()
को कॉल करने पर, अब बैक स्टैक रीसेट हो जाएगा. b/111450672- अब अज्ञात डीप लिंक से
IllegalStateException
नहीं मिलता है. हालांकि, इन्हें अनदेखा किया जाता है. इससे नेस्ट किए गए या कईIllegalStateException
से जुड़ी समस्याएं ठीक हो जाती हैं. b/121340440NavHostFragment
नुकसान पहुंचा सकने वाले बदलाव
- किसी गतिविधि में पॉप ऐनिमेशन लागू करने के लिए,
NavOptions.applyPopAnimationsToPendingTransition()
तरीके कोActivityNavigator
में ले जाया गया है. b/122413117 - Safe Args अब बिना किसी तर्क वाली कार्रवाइयों के लिए, एक जैसी क्लास को डुप्लीकेट करने से रोकता है. जनरेट की गई NavDirections
क्लास में, बिना आर्ग्युमेंट वाले तरीकों के लिए रिटर्न टाइप अब
NavDirections
है. b/123233147 - Safe Args से जनरेट की गई Directions क्लास में अब कोई पब्लिक कंस्ट्रक्टर नहीं है - आपको सिर्फ़ जनरेट किए गए स्टैटिक तरीकों से इंटरैक्ट करना चाहिए. b/123031660
- Safe Args से जनरेट की गई
NavDirections
क्लास में अब सार्वजनिक कंस्ट्रक्टर नहीं होता. इन्हें सिर्फ़ जनरेट की गई Directions क्लास में स्टैटिक तरीकों से जनरेट किया जाना चाहिए. b/122963206 NavDirections
'getArguments()
से मिलेBundle
को अब@Nullable
के बजाय@NonNull
के तौर पर मार्क किया गया है. b/123243957
गड़बड़ियां ठीक की गईं
NavDeepLinkBuilder
अब एक ही डेस्टिनेशन पर एक साथ कईPendingIntent
को सही तरीके से हैंडल करता है. इसके लिए, यह उन आर्ग्युमेंट का इस्तेमाल करता है जिन्हें आपने यूनीकनेस का पता लगाने के लिए पास किया है. b/120042732NavController
अब नेस्ट किए गएNavHostFragment
या बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट का इस्तेमाल करते समय,popBackStack()
कार्रवाइयों को सही तरीके से हैंडल करता है. b/122770335NavigationUI
अब 'ऊपर जाएं' बटन के कॉन्टेंट की जानकारी को सही तरीके से सेट करता है. b/120395362- Safe Args से जनरेट की गई Directions क्लास, अब उन ग्लोबल ऐक्शन को सही तरीके से हैंडल करती हैं जिनका आईडी, डेस्टिनेशन पर मौजूद किसी ऐक्शन के आईडी के जैसा होता है. b/122962504
- Safe Args से जनरेट की गई
NavDirections
क्लास में अबhashCode()
की वैल्यू सही तरीके से बराबर होती हैं. ऐसा तब होता है, जबequals()
से true वैल्यू मिलती है. b/123043662 FragmentNavigator
अबNavHostFragment
केFragmentManager
पर कस्टमFragmentTransactions
करने की कोशिश करने पर, गड़बड़ी का बेहतर मैसेज दिखाता है. आपको हमेशाgetChildFragmentManager()
का इस्तेमाल करना चाहिए. b/112927148
वर्शन 1.0.0-alpha09
18 दिसंबर, 2018
इस रिलीज़ में, एपीआई में नुकसान पहुंचाने वाले बदलाव शामिल हैं; कृपया नीचे दिया गया नुकसान पहुंचाने वाले बदलाव सेक्शन देखें.
हमने android.arch.navigation:navigation-testing
आर्टफ़ैक्ट को आगे डेवलप न करने का फ़ैसला किया है. NavController
की इंटरनल टेस्टिंग के लिए यह सुविधा मददगार साबित हुई है. हालांकि, हमारा सुझाव है कि आप टेस्टिंग की अन्य रणनीतियां अपनाएं. जैसे, NavController
इंस्टेंस को मॉक करना, ताकि यह पुष्टि की जा सके कि सही navigate()
कॉल किए जा रहे हैं. इस तरीके के बारे में, AndroidDevSummit 2018 में सिंगल ऐक्टिविटी के बारे में हुई बातचीत में विस्तार से बताया गया है. साथ ही, हम खास तौर पर नेविगेशन की मदद से टेस्टिंग के बारे में ज़्यादा दस्तावेज़ तैयार करेंगे.
नई सुविधाएं
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()
तरीका अबNonNull
b/112243286 है
गड़बड़ियां ठीक की गईं
NavigationUI.setupWithNavController()
अगर इसका इस्तेमाल अलग-अलग डेस्टिनेशन से मिले व्यू के साथ किया जाता है, तो अब व्यू की जानकारी लीक नहीं होती b/111961977- Navigator
onSaveState()
को अब सिर्फ़ एक बार कॉल किया जाता है b/112627079
Safe Args
- नेविगेशन डेस्टिनेशन की Directions क्लास अब अपने पैरंट की Directions क्लास को बढ़ाती हैं. ऐसा तब होता है, जब पैरंट की Directions क्लास मौजूद हो 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
- FragmentManager के सेव किए गए स्टेट के बाद, FragmentNavigator अब नेविगेशन की कार्रवाइयों को अनदेखा करता है. इससे “Can not perform this action after onSaveInstanceState” अपवादों से बचा जा सकता है b/110987825
Safe Args
- बदलाव: ऐक्शन और आर्ग्युमेंट के नामों में मौजूद नॉन-अल्फ़ान्यूमेरिक वर्णों को, NavDirections के संबंधित तरीके के नामों में कैमल केसिंग से बदल दिया जाएगा
- उदाहरण के लिए,
DemoController.index
बदलकरsetDemoControllerIndex
b/79995048 हो जाएगा - उदाहरण के लिए,
action_show_settings
,actionShowSettings
b/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 का इस्तेमाल करते समय, चाइल्ड फ़्रैगमेंट के तौर पर defaultNavHost="true" का इस्तेमाल करने पर
IllegalArgumentException
को ठीक किया गया. b/79656847NavDeepLinkBuilder का इस्तेमाल करते समय,
StackOverflowError
को ठीक किया गया. b/109653065नेस्ट किए गए ग्राफ़ पर वापस जाने के दौरान होने वाली
IllegalArgumentException
को ठीक किया गया है. b/80453447launchSingleTop
का इस्तेमाल करते समय, ओवरलैप होने वाले फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया है. b/79407969नेस्ट किए गए ग्राफ़ के लिए, नेविगेशन अब सही सिंथेटिक बैक स्टैक बनाता है. b/79734195
MenuItem
के तौर पर नेस्ट किए गए ग्राफ़ का इस्तेमाल करने पर, NavigationUI अब सही आइटम को हाइलाइट करेगा. b/109675998
एपीआई में हुए बदलाव
कार्रवाइयों के लिए
clearTask
एट्रिब्यूट औरNavOptions
में इससे जुड़ा एपीआई अब काम नहीं करेगा. b/80338878कार्रवाइयों के लिए
launchDocument
एट्रिब्यूट औरNavOptions
में इससे जुड़ा एपीआई बंद कर दिया गया है. b/109806636
वर्शन 1.0.0-alpha01
8 मई, 2018
नेविगेशन की मदद से, ऐप्लिकेशन में नेविगेशन की सुविधा बनाई जा सकती है. यह शुरुआती रिलीज़ 1.0.0-alpha01
है.