नेविगेशन

नेविगेशन, Android ऐप्लिकेशन में 'डेस्टिनेशन' के बीच नेविगेट करने के लिए एक फ़्रेमवर्क है. यह एक ऐसा एपीआई उपलब्ध कराता है जो डेस्टिनेशन को फ़्रैगमेंट, ऐक्टिविटी या अन्य कॉम्पोनेंट के तौर पर लागू करने पर भी काम करता है.
नया अपडेट रिलीज़ किया गया जांचा और परखा हुआ वर्शन रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
11 दिसंबर, 2024 2.8.5 - - 2.9.0-alpha04

डिपेंडेंसी का एलान करना

नेविगेशन पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में 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.8.4"

  // 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.8.4"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

  // Testing Navigation
  androidTestImplementation("androidx.navigation:navigation-testing:$nav_version")

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Safe Args

अपने प्रोजेक्ट में Safe Args जोड़ने के लिए, सबसे ऊपर के लेवल की build.gradle फ़ाइल में यह classpath शामिल करें:

Groovy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.8.4"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.8.4"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

आपको उपलब्ध दो प्लग इन में से किसी एक को भी लागू करना होगा.

Java या Java और Kotlin, दोनों मॉड्यूल के लिए सही Java भाषा कोड जनरेट करने के लिए, अपने ऐप्लिकेशन या मॉड्यूल की build.gradle फ़ाइल में यह लाइन जोड़ें:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

इसके अलावा, सिर्फ़ Kotlin मॉड्यूल के लिए सही Kotlin कोड जनरेट करने के लिए, ये जोड़ें:

Groovy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

AndroidX पर माइग्रेट करने के मुताबिक, आपकी gradle.properties फ़ाइल में android.useAndroidX=true होना चाहिए.

Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी के लिए, ktx दस्तावेज़ देखें.

डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.

सुझाव

आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या पर अपना वोट जोड़ा जा सकता है.

नई समस्या बनाना

ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.

वर्शन 2.9

वर्शन 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.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.* में जोड़े गए नए lint नियमों में एक समस्या है. इस वजह से, Android Gradle प्लग इन 8.4 और उसके बाद के वर्शन के साथ lint को चलाने पर, Obsolete custom lint check गड़बड़ी का मैसेज मिलता है. (b/368070326, b/371463741)

वर्शन 2.8

वर्शन 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)

वर्शन 2.8.4

13 नवंबर, 2024

androidx.navigation:navigation-*:2.8.4 रिलीज़ हो गया है. वर्शन 2.8.4 में ये कमिट शामिल हैं.

नई सुविधाएं

  • नेविगेशन 2.9.0-alpha03 से: नेविगेशन टाइप की सुरक्षा अब वैल्यू क्लास को रास्ते के तौर पर या रास्ते के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करती है (I9344a, b/374347483)

गड़बड़ियां ठीक की गईं

  • नेविगेशन 2.9.0-alpha01 से: पहले DESTROYED के तौर पर इस्तेमाल किए गए NavController का इस्तेमाल करने पर, अब IllegalStateException दिखेगा. (I520da, b/369616172)

वर्शन 2.8.3

16 अक्टूबर, 2024

androidx.navigation:navigation-*:2.8.3 रिलीज़ हो गया है. वर्शन 2.8.3 में ये कमिट शामिल हैं.

नई सुविधाएं

  • navigation-common, navigation-runtime, और navigation-compose मॉड्यूल के लिए, नई लिंट जांच जोड़ी गई हैं. इससे, ऐसे सभी सुरक्षित रास्तों की पहचान करने में मदद मिलेगी जिन्हें @Serializable के साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, सभी NavGraphBuilder और NavDeepLinkBuilder एक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • navigation-common, navigation-runtime, और navigation-compose मॉड्यूल के लिए, नई लिंट जांच जोड़ी गई हैं. इससे, Enum आर्ग्युमेंट वाले ऐसे सभी टाइप-सेफ़ रूट की पहचान करने में मदद मिलेगी जिन्हें @Keep के साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच, NavGraphBuilder और NavDeepLinkBuilder एक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

गड़बड़ियां ठीक की गईं

  • Navigation 2.8.* में जोड़े गए नए लिंट नियमों की वजह से, Android Gradle प्लग इन 8.4 और उसके बाद के वर्शन के साथ लिंट चलाने पर Obsolete custom lint check गड़बड़ी होने की समस्या को ठीक किया गया. (I1be3d, b/368070326, b/371463741)

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • Lint 16 (AGP 8.7) या उसके बाद के वर्शन के साथ लिंट चलाने की कोशिश करने पर, नेविगेशन लिंट, 'अब काम नहीं करने वाली कस्टम लिंट जांच' गड़बड़ी का मैसेज दिखाएगा. (b/371926651)

वर्शन 2.8.2

2 अक्टूबर, 2024

androidx.navigation:navigation-*:2.8.2 रिलीज़ हो गया है. वर्शन 2.8.2 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नेविगेशन टाइप सेफ़्टी की सुविधा अब उन सीरीअलाइज़ की जा सकने वाली क्लास के साथ काम करती है जिनमें 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)
  • नेविगेशन सेफ़ आर्ग्युमेंट में, ऐसी स्ट्रिंग के लिए सहायता जोड़ी गई है जिनमें "null" वैल्यू नहीं हो सकतीं. इससे "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 के बाद किए गए अहम बदलाव

नेविगेशन Kotlin डीएसएल टाइप-सेफ़्टी

  • नेविगेशन अब Kotlin DSL (जिसका इस्तेमाल Navigation Compose करता है) के लिए टाइप-सेफ़्टी की सुविधा देता है. इसके लिए, Kotlin Serialization का इस्तेमाल किया जाता है. इससे आपको टाइप-सेफ़ ऑब्जेक्ट और डेटा क्लास की मदद से, अपने नेविगेशन ग्राफ़ में डेस्टिनेशन तय करने की सुविधा मिलती है:
    // Define a home destination that doesn't take any arguments
    @Serializable
    object Home

    // Define a profile destination that takes an ID
    @Serializable
    data class Profile(val id: String)

    // Now define your NavHost using type safe objects
    NavHost(navController, startDestination = Home) {
        composable<Home> {
            HomeScreen(onNavigateToProfile = { id ->
                navController.navigate(Profile(id))
            })
        }
        composable<Profile> { backStackEntry ->
            val profile: Profile = backStackEntry.toRoute()
            ProfileScreen(profile)
        }
    }

ज़्यादा जानकारी के लिए, नेविगेशन कंपोज मीट टाइप सेफ़्टी ब्लॉग पोस्ट देखें.

नेविगेशन कंपोज करने के लिए, अनुमानित शब्दों का सुझाव देने वाली सुविधा

  • नेविगेशन कंपोज, अब compose-animation के नए SeekableTransitionState एपीआई की मदद से, ऐप्लिकेशन में वापस जाने की सुविधा देता है. इससे, 'पूरा हो गया' जेस्चर की मदद से लेन-देन को पूरा करने या रद्द करने का फ़ैसला लेने से पहले, अपने कस्टम ट्रांज़िशन के साथ पिछले डेस्टिनेशन को देखने के लिए, 'वापस जाएं' जेस्चर का इस्तेमाल किया जा सकता है.

नेविगेशन फ़्रैगमेंट का कॉम्पोज़ेबल

  • एक नया 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" />

अन्य बदलाव

  • नेविगेशन कंपोज, अब 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)
  • नेविगेशन 2.8 अब एसडीके 34 के साथ सही तरीके से काम करता है. यह 2.9 रिलीज़ होने तक, एसडीके 35 पर स्विच नहीं होगा. यह रिलीज़, AndroidX की अन्य लाइब्रेरी के साथ होगी. (b/358798728)

वर्शन 2.8.0-beta07

7 अगस्त, 2024

androidx.navigation:navigation-*:2.8.0-beta07 रिलीज़ हो गया है. वर्शन 2.8.0-beta07 में ये कमिट शामिल हैं.

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • b/358137294 की वजह से, सिर्फ़ किसी दूसरी क्लास में नेस्ट किए गए Enum, बिना किसी बदलाव के काम करते हैं. अगले रिलीज़ में, टॉप लेवल के Enums काम करेंगे.

गड़बड़ियां ठीक की गईं

  • डुप्लीकेट या शेयर की गई जगहों पर नेविगेट करते समय, नेविगेशन की सुविधा, ग्राफ़ में मौजूद मौजूदा जगह से सबसे ज़्यादा मैच करने वाली जगह पर जाने को प्राथमिकता देगी. (Ic89a4, b/352006850)
  • safe args में नेविगेशन के लिए, अब एक नया 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 की लिंट जांच में, पास किए गए क्लास टाइप पर Companion ऑब्जेक्ट की जांच नहीं की गई थी. इस वजह से, लिंट को गड़बड़ी का पता नहीं चल पा रहा था. (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 को बंडल के साथ आर्ग्युमेंट पार्स करने की सुविधा की ज़रूरत होगी. (I76cdc, b/340966212)
  • Compose में टाइप-सेफ़ नेविगेशन का इस्तेमाल करके, प्रोसेस बंद होने के बाद ऐप्लिकेशन को फिर से शुरू करने पर, स्टेटस को वापस लाने से होने वाली क्रैश की समस्या को ठीक किया गया. (Ia8f38, b/341801005)
  • नेविगेशन कंपोज में एक समस्या को ठीक किया गया है. इस समस्या की वजह से, अनुमानित बैक जेस्चर को रद्द करने के बाद, उपयोगकर्ता जिस NavBackStackEntry पर वापस जाता है वह कभी भी RESUMED लाइफ़साइकल स्टेटस पर वापस नहीं आता. इससे यह भी पक्का होता है कि फ़्लिंग के बाद, डेस्टिनेशन सही तरीके से ऐनिमेशन के साथ वापस आ जाए, न कि अचानक से स्नैप हो जाए. (I97a0c, b/346608857)
  • नेविगेशन कंपोज के साथ अनुमानित तरीके से वापस जाने की सुविधा का इस्तेमाल करने पर, पॉप-अप होने वाले डेस्टिनेशन का 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 को शून्य के तौर पर इस्तेमाल किया जाता है, तो आउटपुट आर्ग्युमेंट, Serializable क्लास में बताई गई डिफ़ॉल्ट वैल्यू होगी. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो emptyCollection() की रिटर्न वैल्यू होगी. (I84158, Id630f, b/342672856)

वर्शन 2.8.0-beta02

29 मई, 2024

androidx.navigation:navigation-*:2.8.0-beta02 रिलीज़ हो गया है. वर्शन 2.8.0-beta02 में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • NavBackStackEntry.toRoute का इस्तेमाल करते समय, NavType के लिए वैल्यू न डालने पर 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)
  • Kotlin के Serializable ऑब्जेक्ट से SavedStateHandle बनाने के लिए, navigation-testing में एक टेस्ट एपीआई जोड़ा गया. (Id4867, b/339080702)

गड़बड़ियां ठीक की गईं

  • नेविगेशन के Kotlin DSL फ़ंक्शन के लिए, पैरामीटर के दस्तावेज़ जोड़े गए हैं. (I26a36)

वर्शन 2.8.0-alpha08

1 मई, 2024

androidx.navigation:navigation-*:2.8.0-alpha08 रिलीज़ हो गया है. वर्शन 2.8.0-alpha08 में ये कमिट शामिल हैं.

नेविगेशन कंपोज़ में Safe Args

यह सुविधा 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-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 में सीरियलाइज़ेशन के आधार पर, नेविगेशन कंपोज में Safe Args की सुविधा का इस्तेमाल जारी है. ये एपीआई पूरे नहीं हैं और इन्हें ExperimentalSafeArgsApi एनोटेशन के साथ मार्क किया गया है. आने वाले समय में, पूरी API सुविधा रिलीज़ होने के बाद, यह एनोटेशन हटा दिया जाएगा. (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)
  • नेविगेशन कंपोज का इस्तेमाल करते समय, अनुमानित बैक जेस्चर को फ़्लिक करने पर, 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)

गड़बड़ियां ठीक की गईं

  • डीप लिंक में क्वेरी पैरामीटर के लिए, अब आर्ग्युमेंट के नाम (जैसे, {argName}) के चारों ओर कर्ली ब्रैकेट में वैल्यू डाली जा सकती हैं. ये वैल्यू, स्ट्रिंग पर आधारित NavTypes के लिए मान्य वैल्यू होती हैं. इससे उस समस्या को ठीक किया जाता है जहां इस तरह की वैल्यू को सभी टाइप के लिए अमान्य (या वैल्यू मौजूद न होने) माना जाता है. (I18302, b/327274038)
  • NavController फ़ंक्शन, navigate या popBackStack जैसे रास्तों के साथ काम करते हैं. अब ये फ़ंक्शन, अरे NavTypes के आर्ग्युमेंट से भरे रास्तों से सही तरीके से मैच कर सकते हैं. (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 नेविगेशन में 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 ViewModels बहुत जल्द DESTROYED हो जाते थे. ऐसा इसलिए होता था, क्योंकि उससे जुड़ी एंट्री का ViewModel, सेव की गई स्थिति का हिस्सा नहीं था. (Ib6bb7, b/317581849)

डिपेंडेंसी अपडेट

  • नेविगेशन कंपोज करने की सुविधा अब Compose 1.7.0-alpha03 पर निर्भर करती है.

वर्शन 2.8.0-alpha02

7 फ़रवरी, 2024

androidx.navigation:navigation-*:2.8.0-alpha02 रिलीज़ हो गया है. 2.8.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नेविगेशन कंपोज़, अब compose-animation के नए SeekableTransitionState एपीआई की मदद से, ऐप्लिकेशन में वापस जाने की सुविधा देता है. इससे, लेन-देन पूरा करने वाले जेस्चर का इस्तेमाल करके लेन-देन करने या रद्द करने का फ़ैसला लेने से पहले, अपने कस्टम ट्रांज़िशन के साथ पिछले डेस्टिनेशन को देखने के लिए, 'वापस जाएं' जेस्चर का इस्तेमाल किया जा सकता है. (I8b8e9)

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

androidx.navigation:navigation-*:2.8.0-alpha01 रिलीज़ हो गया है. 2.8.0-alpha01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • BackStackState लीक की समस्या को ठीक किया गया. इस समस्या की वजह से, किसी डेस्टिनेशन पर एक से ज़्यादा saveState कॉल करने पर, कई स्टेटस सेव हो जाते थे. हालांकि, सिर्फ़ पहला स्टेटस ही वापस लाया जा सकता था. (I598b0, b/309559751)
  • ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए, NavigationUI हेल्पर का इस्तेमाल करने पर, नॉन-स्ट्रिंग आर्ग्युमेंट सही से न दिखने की समस्या को ठीक किया गया है. (#636, b/316676794)

डिपेंडेंसी अपडेट

  • नेविगेशन कंपोज अब कंपोज 1.7.0-alpha01 पर निर्भर करता है. इससे एक समस्या ठीक होती है, जिसकी वजह से स्केल ऐनिमेशन अचानक दिख सकता है. (b/297258205)

बाहरी योगदान

  • ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए, NavigationUI हेल्पर का इस्तेमाल करते समय, स्ट्रिंग से जुड़े आर्ग्युमेंट के लिए डिसप्ले से जुड़ी समस्या को ठीक करने के लिए, SimonMarquis को धन्यवाद.

वर्शन 2.7.7

वर्शन 2.7.7

7 फ़रवरी, 2024

androidx.navigation:navigation-*:2.7.7 रिलीज़ हो गया है. 2.7.7 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेविगेशन 2.8.0-alpha01 से बैकपोर्ट किया गया: BackStackState लीक को ठीक किया गया. इससे, एक ही NavBackStackEntry पर कई saveState() कॉल करने पर, कई स्टेटस सेव हो जाते थे. हालांकि, सिर्फ़ सेव की गई पहली स्थिति को वापस लाया जा सकता था. (I598b0, b/309559751)
  • नेविगेशन 2.8.0-alpha01 से बैकपोर्ट किया गया: ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए, NavigationUI हेल्पर का इस्तेमाल करते समय, नॉन-स्ट्रिंग आर्ग्युमेंट सही से न दिखने की समस्या को ठीक किया गया. (#636, b/316676794)

बाहरी योगदान

  • ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए, NavigationUI हेल्पर का इस्तेमाल करते समय, स्ट्रिंग से जुड़े आर्ग्युमेंट के लिए डिसप्ले से जुड़ी समस्या को ठीक करने के लिए, SimonMarquis को धन्यवाद.

वर्शन 2.7.6

वर्शन 2.7.6

13 दिसंबर, 2023

androidx.navigation:navigation-*:2.7.6 रिलीज़ हो गया है. 2.7.6 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • 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 के गलत होने पर एंट्री का ViewModel सही तरीके से मिट जाएगा. (Idf242, b/298164648)
  • एक समस्या को ठीक किया गया है. इसमें, कॉन्फ़िगरेशन में बदलाव करने या setGraph को कॉल करने से पहले, बैक स्टैक पूरी तरह से खाली होने पर, NavController एक ही डीप लिंक को एक से ज़्यादा बार मैनेज कर सकता था. ऐसा सिर्फ़ तब होता था, जब इनकमिंग इंटेंट में FLAG_ACTIVITY_NEW_TASK फ़्लैग सेट होता था. (I73c7f)

डिपेंडेंसी से जुड़े अपडेट

  • फ़्रैगमेंट की मदद से नेविगेट करने की सुविधा अब फ़्रैगमेंट 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)
  • नेविगेशन कंपोज में एक साथ कई डायलॉग दिखाने पर आने वाली एक समस्या को ठीक किया गया. इस समस्या में, कुछ हद तक छिपे हुए डायलॉग (जैसे, सबसे ऊपर मौजूद डायलॉग नहीं) STARTED स्टेटस के बजाय, लाइफ़साइकल स्टेटस में दिखते थे.CREATED (aosp/2728520, b/289257213)
  • नेविगेशन कंपोज में एक साथ कई डायलॉग दिखाने पर होने वाली एक समस्या को ठीक किया गया. इस समस्या की वजह से, सबसे ऊपर मौजूद डायलॉग को खारिज करने पर, सबसे ऊपर मौजूद नया डायलॉग RESUMED पर सही तरीके से जाने के बजाय, लाइफ़साइकल की STARTED स्थिति में फंस जाता था. (aosp/2629401, b/286371387)
  • अगर नेविगेशन सेफ़ आर्ग्युमेंट को असल में लागू नहीं किया जा रहा है, तो अब वह अपने टास्क को तुरंत लागू नहीं करता. (I0e385, b/260322841)

डिपेंडेंसी अपडेट

  • नेविगेशन कंपोज करने की सुविधा, अब 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 के स्टेबल होने के बाद, हमने कोड को ऐक्सेप्टनिस्ट नेविगेशन ऐनिमेशन से वापस नेविगेशन कंपोज में ले जा सके.

इसका मतलब है कि AnimatedNavHost में मौजूद कस्टम ट्रांज़िशन सेट करने की सभी सुविधाएं, NavHost में भी सीधे तौर पर काम करती हैं.

Accompanist के नेविगेशन ऐनिमेशन में कोई और बदलाव नहीं किया जाएगा. हम जल्द ही इसे आधिकारिक तौर पर बंद कर देंगे. साथ ही, नेविगेशन कंपोज में वापस माइग्रेट करने का तरीका भी बताएंगे. हालांकि, यह माइग्रेशन गाइड के उलट होगा. अगर आपने पहले से ही Accompanist के नए alpha वर्शन (0.31.2-alpha) का इस्तेमाल शुरू कर दिया है, तो एपीआई में कोई और बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज में मौजूद NavHost, अब गतिविधि के बंद होने और फिर से शुरू होने के बाद भी, सिस्टम के 'वापस जाएं' कॉल को सही तरीके से इंटरसेप्ट करता है. (Icb6de, b/279118447)

डिपेंडेंसी से जुड़े अपडेट

  • नेविगेशन अब 1.1.0 से 1.5.0 तक लिखने पर निर्भर करता है.

वर्शन 2.7.0-rc01

26 जुलाई, 2023

androidx.navigation:navigation-*:2.7.0-rc01 रिलीज़ हो गया है. 2.7.0-rc01 वर्शन में ये कमिट शामिल हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, NavHost के हिस्से के तौर पर बनाए गए EnterTransition और ExitTransition लैम्ब्डा, कॉम्पोज़िशन से NavHost हटाने के बाद भी मेमोरी में बने रह सकते थे. (I893d0)

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • Navigation 2.6.x में एक समस्या है. इसमें, popUpTo का इस्तेमाल करके नेविगेट करने पर, IllegalArgumentException हो सकता है. हो सकता है कि अपने ग्राफ़ का स्ट्रक्चर बदलकर, इस अपवाद से बचा जा सके. इसके लिए, यहां दिए गए सुझावों का पालन करें. (b/287133013)

वर्शन 2.7.0-beta02

28 जून, 2023

androidx.navigation:navigation-*:2.7.0-beta02 रिलीज़ हो गया है. 2.7.0-beta02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज में, popUpTo विकल्प के साथ नेविगेट करने की सुविधा का इस्तेमाल करने वाले कस्टम ट्रांज़िशन के लिए, अब सही z-क्रम है.(/Ib1c3a, b/285153947)

वर्शन 2.7.0-beta01

7 जून, 2023

androidx.navigation:navigation-*:2.7.0-beta01 रिलीज़ हो गया है. 2.7.0-beta01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज़ में मौजूद NavHost, अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. ऐसा तब भी होता है, जब 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 के स्टेबल होने के बाद, हमने कोड को ऐक्सेप्टनिस्ट नेविगेशन ऐनिमेशन से वापस नेविगेशन कंपोज में ले जा सके.

इसका मतलब है कि AnimatedNavHost में मौजूद कस्टम ट्रांज़िशन सेट करने की सभी सुविधाएं, NavHost में भी सीधे तौर पर काम करती हैं.

Accompanist के नेविगेशन ऐनिमेशन में कोई और बदलाव नहीं किया जाएगा. हम जल्द ही इसे आधिकारिक तौर पर बंद कर देंगे. साथ ही, नेविगेशन कंपोज में वापस माइग्रेट करने का तरीका भी बताएंगे. हालांकि, यह माइग्रेशन गाइड के उलट होगा. अगर आपने पहले से ही Accompanist के नए alpha वर्शन (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 को बदल सकती हैं. इससे, NavType क्लास में सीरियलाइज़ेशन और डीसीरियलाइज़ेशन, दोनों को पूरी तरह से शामिल किया जा सकता है. डीसीरियलाइज़ेशन, parseValue के ज़रिए किया जाता है. StringType, दिए गए String पर Uri.encode को कॉल करने के लिए, अब इस तरीके को बदल देता है.

2.5.0 के बाद, नेविगेशन कंपोज में हुए अहम बदलाव

  • NavHost के साथ किसी कॉम्पोज़ेबल की झलक देखते समय, अब यह डिफ़ॉल्ट रूप से NavGraph का startDestination दिखाएगा.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) अब सभी रूट में, आर्ग्युमेंट को कुछ हद तक या पूरी तरह से भरा जा सकता है. ध्यान दें कि आर्ग्युमेंट, एंट्री के आर्ग्युमेंट से पूरी तरह मेल खाने चाहिए.
  • navDeepLink Kotlin DSL का इस्तेमाल करके, खाली NavDeepLink बनाने की कोशिश करने पर, अब आपको लिंट चेतावनी मिलेगी. इससे पता चलता है कि डीप लिंक के मान्य होने के लिए, उसमें यूआरआई, ऐक्शन, और/या mimetype होना ज़रूरी है.

2.5.0 के बाद, फ़्रैगमेंट के साथ नेविगेशन में हुए अहम बदलाव

  • NavHostFragment अब सिस्टम के बैक बटन को खुद इंटरसेप्ट नहीं करता. इससे, FragmentManager को सिस्टम बैक को मैनेज करने की अनुमति मिलती है. इससे फ़्रैगमेंट 1.7.0-alpha01 और उसके बाद के वर्शन, Android U डिवाइसों पर इन-ऐप्लिकेशन, अनुमानित बैक ऐनिमेशन दिखा सकते हैं.
  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, FragmentManager के बैक स्टैक में फ़्रैगमेंट जोड़ने वाला FragmentTransaction मैन्युअल तरीके से करने पर, अब IllegalArgumentException दिखेगा. आपको हमेशा navigate() एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए.
  • नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में, app:data और app:dataPattern एट्रिब्यूट में प्लेसहोल्डर के तौर पर एग्ज़ैक्ट स्ट्रिंग ${applicationId} का इस्तेमाल करने पर, प्लेसहोल्डर अपने-आप कॉन्टेक्स्ट के packageName से भर जाएगा.
  • FragmentNavigator अब NavBackStackEntries पर नेविगेट करने और पॉप-अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि NavBackStackEntry Lifecycle अब अपने आखिरी Lifecycle.State पर जाने से पहले, फ़्रैगमेंट में आने और उससे बाहर निकलने के खास इफ़ेक्ट के पूरा होने का इंतज़ार करेगा.
  • DialogFragmentNavigator अब NavBackStackEntries पर नेविगेट करने और पॉप-अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि NavBackStackEntry Lifecycle अब DESTROYED पर जाने से पहले, DialogFragment Lifecycle के DESTROYED पर जाने का इंतज़ार करेगा.
  • NavHostFragment को FragmentManager से अटैच करने के बाद, NavHostFragment को onCreate() के बाद ही वापस पाया जा सकता था. हालांकि, अब NavHostFragment को FragmentManager से अटैच करने के तुरंत बाद, NavController को वापस पाया जा सकता है.
  • डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब Play की ज़्यादा जानकारी वाली फ़ीचर डिलीवरी लाइब्रेरी पर निर्भर करती है.
  • नेविगेशन के लिए Safe Args का इस्तेमाल करने के लिए, अब Android Gradle प्लग इन का 7.3.0 वर्शन ज़रूरी है. इसका मतलब है कि यह अब सिर्फ़ 7.3.0 और उसके बाद के वर्शन के साथ काम करता है.

2.5.0 के बाद, NavigationUI में हुए अहम बदलाव

  • किसी नेविगेशन ग्राफ़ का आईडी AppBarConfiguration को पास करते समय (जैसे, Menu के ज़रिए), NavigationUI अब उस नेविगेशन ग्राफ़ के स्टार्ट डेस्टिनेशन को ही टॉप लेवल डेस्टिनेशन के तौर पर मानता है. इसके बजाय, ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क नहीं करता. किसी डेस्टिनेशन का आईडी पास करने का तरीका पहले जैसा ही रहेगा. यह सुविधा, AppBarConfiguration पर मौजूद नए isTopLevelDestination फ़ंक्शन की मदद से, आपके कोड के लिए भी उपलब्ध है.
  • टॉप ऐप्लिकेशन बार के साथ काम करने के लिए, NavigationUI में मौजूद setupWithNavController इंटिग्रेशन अब आपके android:label में मिले ReferenceType आर्ग्युमेंट के लिए R.string वैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स कर देंगे. ऐसा, अपने-आप जनरेट हुए रिसॉर्स इंटरजर को आउटपुट करने के बजाय किया जाएगा.
  • चुने गए MenuItem से नेविगेट न कर पाने पर, NavigationUI अब लॉग उपलब्ध कराता है.

वर्शन 2.6.0-rc02

24 मई, 2023

androidx.navigation:navigation-*:2.6.0-rc02 रिलीज़ हो गया है. 2.6.0-rc02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट में नेविगेशन से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या की वजह से, popUpTo का इस्तेमाल करके नेविगेट करने और फ़्रैगमेंट का व्यू फिर से बनाए बिना, बैक स्टैक से फ़्रैगमेंट को पॉप करने पर, सिस्टम बैक काम करना बंद कर देता था. (Ieb8d4, b/281726455)

वर्शन 2.6.0-rc01

10 मई, 2023

androidx.navigation:navigation-*:2.6.0-rc01 रिलीज़ हो गया है. 2.6.0-rc01 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट के साथ नेविगेशन में एक समस्या को ठीक किया गया. इसमें, onResume() लाइफ़साइकल कॉलबैक में popUpTo के साथ नेविगेट करके फ़्रैगमेंट को हटाने पर, IllegalStateException होता था. (I21884, b/279644470)

वर्शन 2.6.0-beta01

19 अप्रैल, 2023

androidx.navigation:navigation-*:2.6.0-beta01 रिलीज़ हो गया है. 2.6.0-beta01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • NavBackStackEntry अब कस्टम toString लागू करने की सुविधा देता है. (Iff00b)

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, FragmentManager के बैक स्टैक में फ़्रैगमेंट जोड़ने वाले FragmentTransaction को मैन्युअल तरीके से करने की कोशिश करने पर, अब IllegalArgumentException दिखेगा. आपको हमेशा navigate() एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए. (I6d38e)
  • जब एक ही फ़्रेम में कोई navigate एंट्री जोड़ता है और कोई popBackStack उसे हटाता है, तो बैक स्टैक में सबसे ऊपर मौजूद एंट्री अब लगातार 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)
  • Action/MimeType के आधार पर डीपलिंक नेविगेशन अब काम नहीं करेगा. ऐसा तब होगा, जब नेविगेशन ऑपरेशन में कोई ऐसा NavArgument मौजूद न हो जिसे नॉल-वैल्यू नहीं दी जा सकती. यह NavArgument, Action/MimeType से मैच करने वाले NavDestination के लिए ज़रूरी है. (Ibfa17, b/271777424)
  • जब NavController, पिछले ग्राफ़ के रास्ते और डेस्टिनेशन वाले ग्राफ़ को सेट करता है, तो अब यह अपने मौजूदा ग्राफ़ नोड और बैक स्टैक डेस्टिनेशन को नए इंस्टेंस से सही तरीके से बदल देता है. इससे, नेविगेशन कंपोज़ में स्टेटस सेव किए बिना onLaunchSingleTop का इस्तेमाल करने पर क्रैश होने की समस्या ठीक हो जाती है. इससे, रूट ग्राफ़ बिल्ड और गलत बैक स्टैक से जुड़े डेस्टिनेशन पर नेविगेट करने से जुड़ी गड़बड़ी भी ठीक हो जाती है. (I5bc58, b/275258161, b/275407804)

वर्शन 2.6.0-alpha08

22 मार्च, 2023

androidx.navigation:navigation-*:2.6.0-alpha08 रिलीज़ हो गया है. 2.6.0-alpha08 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • NavHostFragment को FragmentManager से अटैच करने के बाद, NavHostFragment को onCreate() के बाद ही वापस पाया जा सकता था. हालांकि, अब NavHostFragment को FragmentManager से अटैच करने के तुरंत बाद, NavController को वापस पाया जा सकता है. (Ic6382, b/220186282)

गड़बड़ियां ठीक की गईं

  • नेस्ट किए गए ऐसे ग्राफ़ को पॉप-अप करते समय NullPointerException से जुड़ी समस्या को ठीक किया गया है जिसमें नॉन-शून्य आर्ग्युमेंट शामिल है. (6b3581, b/249988437)
  • popUpTo का इस्तेमाल करके नेविगेट करने के बाद, सिस्टम के 'वापस जाएं' बटन का इस्तेमाल करने पर, NavController की स्थिति सही एंट्री पर पॉप अप हो जाएगी. (I3a8ec, b/270447657)
  • FragmentNavigator अब सिस्टम बैक या popBackStack() के ज़रिए बैक स्टैक पॉप होने पर, एंट्री को सही तरीके से पॉप करेगा. साथ ही, इससे कोई फ़र्क़ नहीं पड़ेगा कि ट्रांज़ैक्शन में फ़्रैगमेंट के लिए इफ़ेक्ट का इस्तेमाल किया गया है या नहीं. (I81bdf)
  • नेविगेशन का इस्तेमाल किए बिना, FragmentNavigator के FragmentManager में फ़्रैगमेंट जोड़ने पर, अब क्रैश नहीं होगा. (b17204, b/274167493)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.6.0-alpha07

8 मार्च, 2023

androidx.navigation:navigation-*:2.6.0-alpha07 रिलीज़ हो गया है. 2.6.0-alpha07 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Routes API के getBackStackEntry, popBackStack, clearBackStack वैरिएंट में, अब ऐसे रास्ते के पैटर्न इस्तेमाल किए जा सकते हैं जिनमें शून्य वैल्यू वाले आर्ग्युमेंट और शून्य वैल्यू वाले क्वेरी पैरामीटर (I22294, b/269302500) शामिल हों
  • एक समस्या को ठीक किया गया है. इस समस्या की वजह से, NavController से clearBackStack() को कॉल करने पर, मिटाए गए बैक स्टैक से जुड़े फ़्रैगमेंट मैनेजर में सेव की गई स्थिति नहीं मिटती थी. (Ic1cce, b/271190202)
  • 2.6.0-alpha06 में एक समस्या को ठीक किया गया है. इसकी वजह से, टैब के बीच में सिस्टम बैक का इस्तेमाल करने पर, BottomNavigationView में गलत MenuItem हाइलाइट हो जाता था. (I634f6, b/270447657)
  • 2.6.0-alpha06 में मौजूद गड़बड़ी को ठीक किया गया है. इसकी वजह से, Animation का इस्तेमाल करने पर NavBackStackEntry को 'फिर से शुरू किया गया' स्थिति में नहीं भेजा जा रहा था. (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)

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, Animation एपीआई का इस्तेमाल करने पर, NavBackStackEntry का लाइफ़साइकल RESUMED तक नहीं पहुंच पाता. (b/269646882)
  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करने और 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 अब DESTROYED पर जाने से पहले, DialogFragment Lifecycle के DESTROYED पर जाने का इंतज़ार करेगा. (I53ee5, b/261213893)

एपीआई में हुए बदलाव

  • NavigatorState अब prepareForTransition एपीआई उपलब्ध कराता है, ताकि Navigator NavBackStackEntries को इंटरमीडिएट Lifecycle.State में बदल सकें. (I42c21, b/238686802)
  • अब backstack प्रॉपर्टी की मदद से, NavGraphNavigator या ComposeNavigator से जुड़े बैक स्टैक को ऐक्सेस किया जा सकता है. ComposeNavigator अब onTransitionComplete() कॉलबैक को भी दिखाता है, ताकि किसी NavBackStackEntry को 'पूरा हुआ' के तौर पर मार्क किया जा सके जिसने नेविगेट या popBackStack ऑपरेशन को पूरा किया है. (I02062, I718db, b/257519195)

गड़बड़ियां ठीक की गईं

  • push/popWithTransition एपीआई का इस्तेमाल करने पर, नेविगेटर की स्थिति अब काम नहीं करेगी. साथ ही, एंट्री को पहले से ही मैनेज किया जा रहा होगा. (Iadbfa, b/261213893)
  • नेस्ट किए गए NavGraph के साथ launchSingleTop का इस्तेमाल करने पर, ओरिजनल डेस्टिनेशन से लेकर उसके startDestination तक के सभी डेस्टिनेशन, बैकस्टैक में सबसे ऊपर ही सही तरीके से जोड़े जाएंगे. (Id4bea, b/253256629)
  • launchSingleTop फ़्लैग को 'सही' पर सेट करके, उसी डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन अब DialogFragment इंस्टेंस को सही तरीके से बदल देगा. (I45b5a, b/149572817)
  • अब 19 वर्णों वाले आर्ग्युमेंट का इस्तेमाल करने पर, नेविगेशन के SafeArgs से कंपाइलेशन से जुड़ी गड़बड़ी नहीं होगी. (Id60bc, b/257110095)

वर्शन 2.6.0-alpha04

9 नवंबर, 2022

androidx.navigation:navigation-*:2.6.0-alpha04 रिलीज़ हो गया है. 2.6.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • NavType की कस्टम सबक्लास, अब किसी वैल्यू को स्ट्रिंग में सीरियलाइज़ करने के लिए serializeAsValue को बदल सकती हैं. इससे, NavType क्लास में सीरियलाइज़ेशन और डीसीरियलाइज़ेशन, दोनों को पूरी तरह से शामिल किया जा सकता है. डीसीरियलाइज़ेशन, parseValue के ज़रिए किया जाता है. StringType, दिए गए String पर Uri.encode को कॉल करने के लिए, अब इस तरीके को बदल देता है. (Ie5213, b/247637434)
  • चुने गए MenuItem से नेविगेट न कर पाने पर, NavigationUI अब लॉग उपलब्ध कराता है. (I2af5a, b/247730357)

गड़बड़ियां ठीक की गईं

  • नेविगेशन डीप लिंक अब ग्राफ़ शुरू होने के बजाय, धीरे-धीरे पार्स किए जाते हैं. इससे ऐप्लिकेशन के शुरू होने पर उसकी परफ़ॉर्मेंस बेहतर हो सकती है. (Iab0ab)
  • डिफ़ॉल्ट तौर पर शून्य वैल्यू वाले आर्ग्युमेंट वाले डेस्टिनेशन पर डीप लिंक करने के बाद, ऊपर जाने पर क्रैश होने की समस्या को ठीक किया गया. (I51c24, b/243183636)

डिपेंडेंसी अपडेट

  • डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब Play की ज़्यादा जानकारी वाली फ़ीचर डिलीवरी लाइब्रेरी पर निर्भर करती है. (Ib4ddc)
  • नेविगेशन के लिए Safe Args अब Android Gradle प्लग इन के 7.3.0 वर्शन पर निर्भर करता है. इसका मतलब है कि यह अब सिर्फ़ 7.3.0 और उसके बाद के वर्शन के साथ काम करता है. (I47e49)

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

androidx.navigation:navigation-*:2.6.0-alpha03 रिलीज़ हो गया है. 2.6.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेविगेशन 2.5.3 से: जब Crossfade के लिए कोई डेस्टिनेशन उपलब्ध नहीं होगा, तो NavHost से NoSuchElementException नहीं दिखेगा. अब यह कॉम्पोज़िशन को स्किप कर देगा. (Ieb46e, b/253299416)
  • नेविगेशन 2.5.3 से: 'लिखें' विंडो की सेव की गई स्थिति (उदाहरण के लिए, rememberSaveable का इस्तेमाल) को बैक स्टैक से हटाने पर, उसे मिटाने और हटाने से जुड़ी समस्या को ठीक किया गया है. (I64949)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 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 बनाने की कोशिश करने पर, अब आपको लिंट चेतावनी मिलेगी. इससे पता चलता है कि डीप लिंक के मान्य होने के लिए, उसमें यूआरआई, ऐक्शन, और/या mimetype होना ज़रूरी है. (I08d2f, b/154038883)

एपीआई में हुए बदलाव

  • android:label="{arg}" के तौर पर दिए गए आर्ग्युमेंट वाले डाइनैमिक लेबल को स्ट्रिंग में पार्स करने के लिए, नया NavDestination एक्सटेंशन फ़ंक्शन जोड़ा गया है. R.string वैल्यू को स्ट्रिंग वैल्यू में पार्स करके, ReferenceType आर्ग्युमेंट के साथ काम करता है. (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.1

27 जुलाई, 2022

androidx.navigation:navigation-*:2.5.1 रिलीज़ हो गया है. 2.5.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • Bundle में सेव किए गए कस्टम ऑर्ग्युमेंट टाइप का इस्तेमाल करने पर, Navigation Safe Args अब जनरेट की गई क्लास में, इस्तेमाल बंद होने की चेतावनियां नहीं दिखाएगा. (Id86ed, b/237725966)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.5.0

29 जून, 2022

androidx.navigation:navigation-*:2.5.0 रिलीज़ हो गया है. 2.5.0 वर्शन में ये बदलाव शामिल हैं.

2.4.0 के बाद किए गए ज़रूरी बदलाव

  • CreationExtras इंटिग्रेशन - Navigation अब लाइफ़साइकल 2.5.0 के CreationExtras की मदद से, स्टेटलेस ViewModelProvider.Factory उपलब्ध करा सकता है.

Navigation SafeArgs

  • Navigation Safe Args ने Android Gradle Plugin डिपेंडेंसी को 7.0.4 पर भरोसा करने के लिए अपग्रेड किया है. साथ ही, 7.0 से पहले के AGP वर्शन के साथ काम करने की सुविधा को हटा दिया है.
  • applicationId के बजाय, नेमस्पेस build.gradle एट्रिब्यूट का इस्तेमाल करने के लिए सहायता जोड़ी गई है.

अन्य बदलाव

  • visibleEntries एपीआई अब एक्सपेरिमेंटल नहीं है. यह उन सभी एंट्री को वापस लाने की सुविधा देता है जिनका डेस्टिनेशन फ़िलहाल NavController के हिसाब से दिख रहा है.

वर्शन 2.5.0-rc02

15 जून, 2022

androidx.navigation:navigation-*:2.5.0-rc02 रिलीज़ हो गया है. 2.5.0-rc02 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज NavHost का इस्तेमाल करते समय, सबसे नीचे मौजूद डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से क्रैश होने की समस्या को ठीक किया गया. (I3979a, b/234054916)
  • applicationIdSuffix और नेमस्पेस का इस्तेमाल करते समय, Navigation SafeArgs अब क्रैश नहीं होगा. ऐसा तब होगा, जब 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)
  • नेविगेशन के 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 के होस्ट लाइफ़साइकल की स्थिति 'शुरू हो गया' से नीचे हो, लेकिन दिखने वाली एंट्री की सूची में कोई बदलाव नहीं होगा. (I9e2a8, b/225394514)
  • SavedStateViewFactory अब CreationExtras का इस्तेमाल कर सकता है, भले ही उसे SavedStateRegistryOwner से शुरू किया गया हो. अगर अतिरिक्त आर्ग्युमेंट दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
  • NavDeepLink अब बिना किसी वैल्यू वाले एक क्वेरी पैरामीटर के साथ यूआरआई को पार्स कर सकता है. (I0efe8, b/148905489)
  • खाली स्ट्रिंग को अब डीप लिंक में मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
  • नेमस्पेस का इस्तेमाल करने पर, Navigation Safe Args अब क्रैश नहीं होगा और कोई AndroidManifest.xml मौजूद नहीं होगा. (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)
  • ViewModel बनाने के लिए, CreationExtras को NavBackStackEntries के साथ इस्तेमाल करने पर, अब यह सही तरीके से काम करेगा. (I69161, b/217617710)
  • नेविगेशन के लिए 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 से: नेस्ट किए गए ग्राफ़ के साथ व्यूबाइंडिंग का इस्तेमाल करने पर, 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 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, फ़्रैगमेंट के onCreate() से by navGraphViewModels() के ज़रिए बनाए गए ViewModel को ऐक्सेस करने पर, IllegalStateException दिखता था. (I8a14d)
  • NavDeepLinks अब ज़रूरत के बिना, आर्ग्युमेंट को दो बार डिकोड नहीं करेगा. इसका मतलब है कि सही आर्ग्युमेंट अब आपके फ़ाइनल डेस्टिनेशन पर भेजे जाएंगे. (I31b0a, b/210711399)

Safe Args

  • सेफ़ आर्ग्युमेंट अब Android Gradle प्लग इन के 7.0.4 वर्शन पर निर्भर करता है. इसका मतलब है कि नेविगेशन सेफ़ आर्ग्युमेंट, अब Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेंगे. हालांकि, यह अब Android Gradle प्लग इन के 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)
  • नेविगेशन 2.5.0-alpha03 से बैकपोर्ट किया गया: नेविगेशन के लिए 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 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेस्ट किए गए ग्राफ़ के साथ व्यूबाइंडिंग का इस्तेमाल करने पर, NavHostFragment अब OnBackPressedDispatcher को सही तरीके से सेट करेगा. (Ifbb51, b/214577959)
  • नेस्ट किए गए एक से ज़्यादा NavGraph के ज़रिए डीप लिंक करने पर, बैक स्टैक में अब बीच में मौजूद स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060)
  • नेविगेशन 2.5.0-alpha01 से बैकपोर्ट किया गया: एक समस्या को ठीक किया गया है. इस समस्या की वजह से, फ़्रैगमेंट के onCreate() से by navGraphViewModels() के ज़रिए बनाए गए ViewModel को ऐक्सेस करने पर, IllegalStateException दिखता था. (I8a14d)
  • नेविगेशन 2.5.0-alpha01 से बैकपोर्ट किया गया: NavDeepLink अब ज़रूरत के बिना आर्ग्युमेंट को दो बार डिकोड नहीं करता, इसका मतलब है कि सही तरीके से डिकोड किए गए आर्ग्युमेंट अब आपके फ़ाइनल डेस्टिनेशन पर भेजे जाते हैं. (I31b0a, b/210711399)
  • नेविगेशन 2.5.0-alpha01 से बैकपोर्ट किया गया: Safe Args अब Android Gradle प्लग इन के 7.0.4 वर्शन पर निर्भर करता है. इसका मतलब है कि नेविगेशन सेफ़ आर्ग्युमेंट, अब Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, यह Android Gradle प्लग इन 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 का इस्तेमाल करता है. ज़्यादा जानकारी वाले पैनल को लागू करने के लिए, NavHostFragment का इस्तेमाल किया जाता है. इस बारे में ज़्यादा जानने के लिए, लागू करने का उदाहरण देखें.
  • NavController पर currentBackStackEntryAsFlow() तरीका, एक Flow उपलब्ध कराता है. यह Flow तब इमिट होता है, जब मौजूदा NavBackStackEntry में बदलाव होता है. इस फ़्लो का इस्तेमाल, OnDestinationChangedListener को मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है.
  • NavController अब एक्सपेरिमेंट के तौर पर उपलब्ध visibleEntries प्रॉपर्टी की मदद से, दिखने वाले सभी NavBackStackEntry इंस्टेंस की सूची को StateFlow के तौर पर वापस लाने की सुविधा देता है.
  • अब पसंद के मुताबिक NavTypes बनाने के लिए, NavType क्लास को बड़ा किया जा सकता है. कस्टम टाइप सिर्फ़ तब काम करते हैं, जब नेविगेशन ग्राफ़ को प्रोग्राम के हिसाब से बनाया जाता है. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए.
  • नेविगेशन अब findStartDestination() और getHierarchy() एपीआई उपलब्ध कराता है. इनका इस्तेमाल, कस्टम NavigationUI लागू करने में मदद करने के लिए किया जा सकता है. findStartDestination(), NavGraph का एक एक्सटेंशन फ़ंक्शन है. यह ग्राफ़ पर नेविगेट करने पर, शुरुआती जगह की सही जानकारी दिखाएगा. भले ही, startDestination खुद नेस्ट किया गया NavGraph हो. getHierarchy(), NavDestination पर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल, यह पुष्टि करने के लिए किया जा सकता है कि कोई डेस्टिनेशन, किसी दूसरे डेस्टिनेशन की हैरारकी में शामिल है या नहीं.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI के उन तरीकों को अपडेट किया गया है जिनमें BottomNavigationView का इस्तेमाल किया जाता था. अब इनमें Material 1.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 कॉन्स्टेंट या सेफ़ आर्ग्युमेंट (जो बिल्ड के समय कोड जनरेट करने के लिए उन कॉन्स्टेंट का इस्तेमाल करते हैं) का इस्तेमाल किया जा सकता है. यूनीक इंटिजर के इस सिस्टम में, नेविगेशन 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 आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन उपलब्ध कराता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.

इस रिलीज़ में ये सुविधाएं मिलती हैं:

  • NavHost कॉम्पोज़ेबल, जो composable और dialog डेस्टिनेशन का इस्तेमाल करके, Kotlin DSL के ज़रिए नेविगेशन ग्राफ़ बनाने की सुविधा देता है. साथ ही, Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर के साथ काम करता है.
  • डेस्टिनेशन के बीच क्रॉसफ़ेड करने की सुविधा ज़रूरी है. असिस्टेंट के नेविगेशन ऐनिमेशन का इस्तेमाल, एक्सपेरिमेंट के तौर पर उपलब्ध Compose API का इस्तेमाल करके, वीडियो में शामिल होने और उससे बाहर निकलने के ट्रांज़िशन को कंट्रोल करने के लिए किया जा सकता है.
  • हर कॉम्पोज़ेबल डेस्टिनेशन के लिए Lifecycle का स्कोप तय करना. हर डेस्टिनेशन सिर्फ़ तब RESUMED स्टेटस में पहुंचता है, जब कोई ट्रांज़िशन शुरू होता है और कोई ट्रांज़िशन खत्म होने पर, तुरंत STARTED पर पहुंच जाता है. इस तरह, Lifecycle के RESUMED होने पर सिर्फ़ navigate कॉल को ट्रिगर करके, IllegalStateException और मल्टी-टच से जुड़ी सभी समस्याओं से बचा जा सकता है.
  • डेस्टिनेशन लेवल पर ViewModel को स्कोप करना (Lifecycle ViewModel Compose 2.4.0 के viewModel() एपीआई या Hilt Navigation Compose 1.0.0 के hiltViewModel() के ज़रिए). इससे कॉन्फ़िगरेशन में होने वाले बदलावों और बैक स्टैक में मौजूद होने पर भी ViewModel का स्कोप बना रहता है. बैक स्टैक में मौजूद होने का मतलब है कि आपका Composable कॉन्टेंट किसी और तरीके से हटा दिया गया हो. साथ ही, ViewModel के onCleared() में एक सिग्नल भी मिलता है, जो उस NavBackStackEntry से जुड़ी स्थिति को हमेशा के लिए हटाने और उसे साफ़ करने का संकेत देता है.
  • डेस्टिनेशन लेवल पर rememberSaveable स्टेटस को स्कोप करना. इससे यह पक्का होता है कि किसी डेस्टिनेशन पर वापस जाने पर, सभी कॉम्पोज़ेबल स्टेटस अपने-आप सेव और वापस आ जाएं.
  • प्रोसेस के बंद होने और फिर से शुरू होने के बाद, NavController और उसके डेस्टिनेशन की स्थिति को सेव और वापस लाने के लिए पूरी मदद.
  • सिस्टम के 'वापस जाएं' बटन के साथ अपने-आप इंटिग्रेट होना.
  • आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजा दिखाने के लिए सहायता.

  • होइस्टिंग स्टेटस की अनुमति देने और NavController को NavHost के बाहर के कॉम्पोज़ेबल (जैसे, सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट करने के लिए, rememberNavController() और currentBackStackEntryAsState() में खास हेल्पर बनाएं.

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()
        }
    }
}

ज़्यादा जानकारी के लिए, नेविगेशन कॉम्पोज़ करने से जुड़ी गाइड देखें.

एक से ज़्यादा बैक स्टैक

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 पर निर्भर करता है. साथ ही, अब NavBackStackEntry Lifecycle को अपडेट करने वाले तरीकों, setGraph(), popBackStack(), navigateUp(), और navigate() को @MainThread के तौर पर मार्क करता है. इससे नेविगेशन को लाइफ़साइकल 2.3.0 में पेश किए गए मुख्य थ्रेड लागू करने की सुविधा के साथ अलाइन किया जाता है.
  • डीप लिंक अब इस बात की पुष्टि करते हैं कि Uri में सभी ज़रूरी आर्ग्युमेंट (जिनमें डिफ़ॉल्ट वैल्यू नहीं है) मौजूद हैं.
  • NavDeepLink पार्स किए गए आर्ग्युमेंट अब पाथ सेगमेंट के बीच सेपरेटर के तौर पर, सवाल के निशान की तरह ही पाउंड साइन को भी इस्तेमाल करते हैं. इससे, आर्ग्युमेंट को पाउंड साइन के बीच फैलने से रोका जा सकता है.
  • ऐक्शन जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड, अब डिफ़ॉल्ट वैल्यू के पैरामीटर के बजाय, डिफ़ॉल्ट वैल्यू के बिना वाले आर्ग्युमेंट को पहले रखता है.
  • आर्ग्युमेंट जनरेट करते समय, Safe Args अब डिफ़ॉल्ट वैल्यू वाले पैरामीटर के पहले, डिफ़ॉल्ट वैल्यू के बिना पैरामीटर डालता है.
  • Safe-Args अब Android Gradle प्लग इन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको applicationIdTextResource का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी.

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • नेविगेशन 2.5.0-alpha01 में ठीक किया गया: फ़्रैगमेंट के onCreate() से by navGraphViewModels() के ज़रिए बनाए गए ViewModel को ऐक्सेस करने पर, IllegalStateException दिखेगा. (b/213504272)
  • नेविगेशन 2.5.0-alpha01 में ठीक किया गया: Safe Args 2.4.0, Android Gradle प्लग इन 7.1.0 और इसके बाद के वर्शन के साथ काम नहीं करता. (b/213086135)
  • नेस्ट किए गए कई नेविगेशन ग्राफ़ के साथ डीप लिंक करने पर, पूरा बैकस्टैक सही तरीके से नहीं बनता. (b/214383060)

वर्शन 2.4.0-rc01

15 दिसंबर, 2021

androidx.navigation:navigation-*:2.4.0-rc01 रिलीज़ हो गया है. 2.4.0-rc01 वर्शन में ये बदलाव शामिल हैं.

व्यवहार में बदलाव

  • NavDeepLink पार्स किए गए आर्ग्युमेंट में, अब पाउंड साइन को उसी तरह से माना जाता है जिस तरह आर्ग्युमेंट के बीच सेपरेटर के तौर पर कोटेशन मार्क का इस्तेमाल किया जाता है. (I21309, b/180042703)

गड़बड़ियां ठीक की गईं

  • डीपलिंक अब उन आर्ग्युमेंट को अनदेखा नहीं करेंगे जिनकी वैल्यू, प्लेसहोल्डर के नाम से मेल खाती है. (If8017, b/207389470)
  • NavController को वापस लाने के बाद, ट्रांज़िशन का इस्तेमाल करके नेस्ट किए गए डेस्टिनेशन को पॉप करने पर, NavController अब क्रैश नहीं होगा. (I0f7c9, b/205021623)
  • अमान्य startDestination का इस्तेमाल करने पर गड़बड़ी का मैसेज, अब डिफ़ॉल्ट रूप से शुरुआती डेस्टिनेशन के रास्ते पर दिखेगा. हालांकि, ऐसा तब ही होगा, जब कोई रास्ता उपलब्ध हो. (I86b9d, b/208041894)

Navigation Compose में गड़बड़ियां ठीक की गईं

  • नीचे मौजूद नेविगेशन मेन्यू आइटम का इस्तेमाल करके, शुरुआती डेस्टिनेशन और किसी दूसरे डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया. (Ic8976, b/208887901)
  • कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस के बंद होने के बाद, डायलॉग डेस्टिनेशन अब स्क्रीन पर सबसे ऊपर सही तरीके से वापस आ जाते हैं. (I4c0dc, b/207386169)
  • डायलॉग को खारिज करने पर, डायलॉग के NavBackStackEntry से ViewModel को वापस पाने की कोशिश करने पर होने वाली समस्या को ठीक किया गया है. (I6b96d, b/206465487)
  • नेविगेशन कंपोज़ के NavHost के साथ activity डेस्टिनेशन का इस्तेमाल करते समय, एक समस्या को ठीक किया गया. इस समस्या की वजह से, कॉम्पोनेंट बार-बार फिर से बनते रहते थे. (I8f64c)
  • नेविगेशन कॉम्पोज़ में एक लीक को ठीक किया गया है. इसमें कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस बंद होने के बाद, पुरानी गतिविधि का रेफ़रंस सेव रहता था. (I4efcb, b/204905432)

Safe Args से जुड़ी गड़बड़ियां ठीक की गईं

  • प्रोसेस बंद होने के बाद, कस्टम पार्सल किए जा सकने वाले कलेक्शन को वापस लाने की कोशिश करने पर, SafeArgs अब क्रैश नहीं होता. (I618e8, b/207315994)
  • safe args में एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, बूलियन ऐरे में null वैल्यू नहीं दी जा सकती थी. (I8c396, b/174787525)

वर्शन 2.4.0-beta02

3 नवंबर, 2021

androidx.navigation:navigation-*:2.4.0-beta02 रिलीज़ हो गया है. 2.4.0-beta02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • साफ़ तौर पर और अपने-आप जुड़ने वाले, दोनों तरह के डीप लिंक को मैनेज करने की सुविधा अब किसी दूसरे ग्राफ़ पर नेविगेट करते समय, saveState फ़्लैग को अपने-आप जोड़ती है. इससे यह पक्का होता है कि NavigationUI.setupWithNavController जैसे कोड और कई बैक स्टैक का इस्तेमाल करने वाले कोड, उम्मीद के मुताबिक काम करते हैं. (Ic8807)

व्यवहार में बदलाव

  • डीप लिंक पैटर्न अब इनफ़्लेशन के दौरान के बजाय, NavDeepLink में धीरे-धीरे कंपाइल किए जाते हैं. इससे, डीप लिंक वाले नेविगेशन ग्राफ़ को इन्फ़्लेशन होने में लगने वाला समय कम हो जाएगा. (b8d257, b/184149935)

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, NavHost को गतिविधि के setContent() में सीधे जोड़ने पर, Lifecycle.State.STARTED पर जाने के बाद, NavBackStackEntries को Lifecycle.State.CREATED पर पुश किया जा रहा था. (Ia5ac1, b/203536683)
  • एक ऐसी समस्या को ठीक किया गया है जिसमें डायलॉग दिखने से पहले, बैक स्टैक से DialogFragment डेस्टिनेशन को पॉप अप करने पर, डायलॉग बंद नहीं होता था. इस वजह से, जब उपयोगकर्ता ने गड़बड़ी वाले डायलॉग को मैन्युअल तरीके से बंद किया, तो ऐप्लिकेशन क्रैश हो गया. (I687e5)
  • NavigationUI पर मौजूद onNavDestinationSelected एपीआई, true दिखाता था. भले ही, आपने उस नेविगेशन ग्राफ़ पर navigate() न किया हो. इस समस्या को ठीक किया गया है. अब यह उसी लॉजिक का इस्तेमाल करता है जिसका इस्तेमाल setupWithNavController, डेस्टिनेशन के hierarchy का इस्तेमाल करके, मौजूदा डेस्टिनेशन से जुड़े MenuItem को चुनने के लिए करता है. (I2b053)

वर्शन 2.4.0-beta01

27 अक्टूबर, 2021

androidx.navigation:navigation-*:2.4.0-beta01 रिलीज़ हो गया है. 2.4.0-beta01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब आईडी के बजाय, किसी रास्ते के साथ by navGraphViewModel का इस्तेमाल किया जा सकता है. इससे फ़्रैगमेंट के साथ नेविगेशन Kotlin DSL का बेहतर तरीके से इस्तेमाल किया जा सकता है. (I901e3, b/201446416)

एपीआई में हुए बदलाव

  • visibleEntries एपीआई को अब एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. (I93f6f)

गड़बड़ियां ठीक की गईं

  • एक ही स्क्रीन (Id52d8, b/200817333) के बीच बार-बार नेविगेट करने पर, ट्रांज़िशन में रुकावट आने पर भी ViewModels अब मिट नहींेंगे
  • NavDestination में डीप लिंक जोड़ते समय, वैल्यू न डालने पर भी काम करने वाले NavDeepLink आर्ग्युमेंट के लिए, अब डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं है. (I5aad4, b/201320030)
  • अलग-अलग लाइफ़साइकल वाले NavBackStackEntries को अब एक जैसे नहीं माना जाता. इसका मतलब है कि singleTop मोड में नेविगेट करते समय और सबसे नीचे मौजूद मेन्यू आइटम को फिर से चुनते समय, NavHost सभी डेस्टिनेशन को सही तरीके से फिर से कॉम्पोज़ करेगा. (I1b351, b/196997433)
  • AbstractListDetailFragment से जुड़ी एक समस्या को ठीक किया गया है. इसकी वजह से, onCreateListPaneView() से लौटाए गए सूची पैनल में layout_width और layout_weight एट्रिब्यूट को गलत तरीके से मैनेज किया गया था या अनदेखा किया गया था. (f5fbf3)
  • डायलॉग डेस्टिनेशन की विज़ुअल स्थिति अब DialogFragmentNavigator की स्थिति के साथ सही तरीके से सिंक रहती है. इसका मतलब है कि DialogFragment के लिए, सिंक न होने वाले dismiss() एपीआई को मैन्युअल तरीके से कॉल करने पर, अब खारिज किए गए डायलॉग के ऊपर मौजूद सभी डायलॉग डेस्टिनेशन ठीक से हट जाते हैं. हालांकि, इससे उन मामलों पर कोई असर नहीं पड़ता जहां डायलॉग बॉक्स को खारिज करने के लिए popUpTo या popBackStack() का इस्तेमाल किया जाता है. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener में अब onDestinationChanged() के लिए, गड़बड़ी के बारे में साफ़ तौर पर जानकारी देने वाला मैसेज दिखता है. (Ie742d)

वर्शन 2.4.0-alpha10

29 सितंबर, 2021

androidx.navigation:navigation-*:2.4.0-alpha10 रिलीज़ हो गया है. 2.4.0-alpha10 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • NavController अब visibleEntries StateFlow (Ia964e) की मदद से, दिखने वाले सभी NavBackStackEntry इंस्टेंस की सूची वापस लाने की सुविधा देता है
  • rememberNavController() अब Navigator के वैकल्पिक इंस्टेंस का एक सेट लेता है. इसे, अकंपैनिस्ट नेविगेशन मटीरियल जैसे वैकल्पिक नेविगेटर के साथ बेहतर तरीके से काम करने के लिए, दिखाए गए NavController में जोड़ा जाएगा. (I4619e)

गड़बड़ियां ठीक की गईं

  • गतिविधि को फिर से बनाने पर, डाइनैमिक नेविगेशन अब क्रैश नहीं होगा. (Ifa6a3, b/197942869)
  • सिस्टम के 'वापस जाएं' बटन से जुड़ी एक समस्या को ठीक किया गया है. यह समस्या, सिर्फ़ NavHost वाले कॉम्पोज़ेबल डेस्टिनेशन पर वापस पॉप होने के बाद होती है. (3ed148, b/195668143)
  • SafeArgs अब पैरामीटर के सही क्रम में, fromBundle() और fromSavedStateHandle() के लिए आर्ग्युमेंट जनरेट करता है. (I824a8, b/200059831)

वर्शन 2.4.0-alpha09

15 सितंबर, 2021

androidx.navigation:navigation-*:2.4.0-alpha09 रिलीज़ हो गया है. 2.4.0-alpha09 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब popBackStack() या popUpToSaveState के साथ सेव की गई किसी भी स्थिति को हटाने के लिए, clearBackStack() तरीके का इस्तेमाल किया जा सकता है. (I80a0f)
  • अब नेस्ट किए गए नेविगेशन ग्राफ़ के बिल्डर में, आर्ग्युमेंट और/या डीप लिंक की सूची दी जा सकती है. ये आर्ग्युमेंट और लिंक, नतीजे वाले ग्राफ़ में अपने-आप जुड़ जाएंगे. (I8a470, b/182545357)

एपीआई में हुए बदलाव

  • navArgument Kotlin DSL फ़ंक्शन अब navigation-compose के बजाय navigation-common का हिस्सा है. इस फ़ंक्शन का इस्तेमाल जारी रखने के लिए, आपको इंपोर्ट को अपडेट करना होगा. (I1d095)

व्यवहार में बदलाव

  • आर्ग्युमेंट जनरेट करते समय, Safe Args अब डिफ़ॉल्ट वैल्यू वाले पैरामीटर के पहले, डिफ़ॉल्ट वैल्यू के बिना पैरामीटर डालता है. (I89709, b/198493585)

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज का इस्तेमाल करते समय, NavGraphs सिर्फ़ तब DESTROYED होंगे, जब उनके सभी चाइल्ड DESTROYED होंगे. (I86552, b/198741720)
  • वैल्यू न डालने पर भी काम करने वाले NavDeepLink आर्ग्युमेंट के लिए, अब डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं है. (Ia14ef, b/198689811)
  • नए ग्राफ़ के साथ setGraph() को कॉल करने पर, अब बैक स्टैक को पॉप करने के साथ-साथ, सेव किए गए सभी बैक स्टैक भी मिट जाएंगे. (I97f96)
  • launchSingleTop का इस्तेमाल करने पर, OnDestinationChangedListener इंस्टेंस और currentBackStackEntryFlow को सूचना न मिलने की समस्या को ठीक किया गया है. (Iaaebc)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.4.0-alpha08

1 सितंबर, 2021

androidx.navigation:navigation-*:2.4.0-alpha08 रिलीज़ हो गया है. 2.4.0-alpha08 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब पसंद के मुताबिक NavTypes बनाने के लिए, NavType क्लास को बड़ा किया जा सकता है. कस्टम टाइप सिर्फ़ तब काम करते हैं, जब नेविगेशन ग्राफ़ को प्रोग्राम के हिसाब से बनाया जाता है. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए. (I78440, b/196871885)

व्यवहार में बदलाव

  • ऐक्शन जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड, अब डिफ़ॉल्ट वैल्यू के पैरामीटर के बजाय, डिफ़ॉल्ट वैल्यू के बिना वाले आर्ग्युमेंट को पहले रखता है. (Idb697, b/188855904)
  • डीप लिंक अब इस बात की पुष्टि करते हैं कि Uri में सभी ज़रूरी आर्ग्युमेंट (जिनमें डिफ़ॉल्ट वैल्यू नहीं है) मौजूद हैं. (#204, b/185527157)

गड़बड़ियां ठीक की गईं

  • remember() के साथ मिलकर, composable() में getBackStackEntry और previousBackStackEntry का इस्तेमाल करने पर, अब बैक स्टैक में कोई डेस्टिनेशन न होने पर अपवाद नहीं दिखेगा. (I75138, b/194313238)
  • नेविगेशन कंपोज़, अब बैकस्टैक के आर्ग्युमेंट बदलने और launchSingleTop=true का इस्तेमाल करने पर, सही तरीके से फिर से कंपोज़ करता है. (Iebd69, b/186392337)
  • 13 या 29 डेस्टिनेशन वाले ग्राफ़ के साथ setGraph को कॉल करने पर, अब ArrayIndexOutOfBoundsException नहीं दिखेगा. (I1a9f1, b/195171984)
  • अब SafeArgs java जनरेटर, Args क्लास जनरेट करते समय, लिंट से जुड़ी चेतावनियां नहीं दिखाएगा. (I1a666, b/185843837)

बाहरी योगदान

  • ospixd को धन्यवाद, इस बात की पुष्टि करने के लिए कि डीप लिंक यह पुष्टि करते हैं कि Uri में सभी ज़रूरी आर्ग्युमेंट (जिनमें डिफ़ॉल्ट वैल्यू नहीं हैं) मौजूद हैं. (#204, b/185527157)

वर्शन 2.4.0-alpha07

18 अगस्त, 2021

androidx.navigation:navigation-*:2.4.0-alpha07 रिलीज़ हो गया है. 2.4.0-alpha07 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज़ अब कॉन्फ़िगरेशन में बदलाव होने के बाद और एक से ज़्यादा बैक स्टैक की सुविधा का इस्तेमाल करते समय ग्राफ़ बदलने पर, स्टेटस को सही तरीके से सेव करता है. (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)
  • नेविगेशन कंपोज़ के NavHost से अब ग्राफ़ को पहले कंपोज़ किए गए कॉन्टेंट के हिस्से के तौर पर सेट किया जाता है. (Ieb7be)

गड़बड़ियां ठीक की गईं

  • नेविगेशन ग्राफ़ के आखिरी डेस्टिनेशन को पॉप करने पर, अब ClassCastException नहीं दिखता. (If0543, b/172112072, b/194301889)
  • NullPointerException को ठीक किया गया, जो Uri के बिना डीप लिंक जोड़ने और किसी रूट या डीप लिंक के ज़रिए नेविगेट करने पर होता था. (938a0c, b/193805425)
  • नेविगेशन कंपोज़ में एक समस्या को ठीक किया गया है. इसमें, डीप लिंक किया गया 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 और डेस्टिनेशन वाले ग्राफ़ को एक ही माना जाएगा. साथ ही, NavController बैक स्टैक को भी नहीं मिटाया जाएगा. (I0b8db, b/175392262)

गड़बड़ियां ठीक की गईं

  • NavBackStackEntry से जुड़े LifecycleObserver में से popBackStack() को कॉल करते समय, NoSuchElementException से जुड़ी एक समस्या को ठीक किया गया है. यह समस्या, NavController की स्थिति में फिर से होने वाले अपडेट की वजह से आती थी. (I64621)
  • AbstractListDetailFragment का इस्तेमाल न करने पर, AbstractListDetailFragment को अब आपके APK से पूरी तरह हटाया जा सकता है.SlidingPaneLayout (I611ad)
  • NavGraph और NavDestination अब equals तरीके को बदल देते हैं, ताकि एक जैसी वैल्यू वाले दो ऑब्जेक्ट को एक जैसा माना जा सके. (I166eb, b/175392262)

वर्शन 2.4.0-alpha04

1 जुलाई, 2021

androidx.navigation:navigation-*:2.4.0-alpha04 रिलीज़ हो गया है. 2.4.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • navigation-fragment आर्टफ़ैक्ट में अब नए AbstractListDetailFragment की मदद से, दो पैनल वाले लेआउट को पहले से लागू किया गया है. यह फ़्रैगमेंट, सूची पैनल (जो आपका सबक्लास उपलब्ध कराता है) और ज़्यादा जानकारी वाले पैनल को मैनेज करने के लिए, SlidingPaneLayout का इस्तेमाल करता है. ज़्यादा जानकारी वाले पैनल को लागू करने के लिए, यह NavHostFragment का इस्तेमाल करता है. इस बारे में ज़्यादा जानने के लिए, लागू करने का उदाहरण देखें. (Iac4be, b/191276636)
  • navigation-compose आर्टफ़ैक्ट का NavHost, अब composable डेस्टिनेशन के साथ-साथ dialog डेस्टिनेशन के साथ भी काम करता है. ये डायलॉग डेस्टिनेशन, मौजूदा composable डेस्टिनेशन के ऊपर फ़्लोटिंग, Composable Dialog में दिखेंगे. (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)
  • किसी डेस्टिनेशन पर नेविगेट करते समय, NullPointerException को ठीक किया गया. इसके लिए, string[] आर्ग्युमेंट का इस्तेमाल किया गया, जिसकी डिफ़ॉल्ट वैल्यू @null है. (I1fbe8)
  • @Navigator.Name के लिए ProGuard के नियम जोड़ें. इससे R8 3.1 के फ़ुल मोड का इस्तेमाल करते समय आने वाली समस्याएं हल होंगी. (I2add9, b/191654433)
  • 1.5.0 से पहले के Kotlin वर्शन का इस्तेमाल करके ऐप्लिकेशन बनाते समय, SafeArgs अब काम नहीं करेगा. (Icd1ff, b/190739257)

वर्शन 2.4.0-alpha03

16 जून, 2021

androidx.navigation:navigation-*:2.4.0-alpha03 रिलीज़ हो गया है. 2.4.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • शामिल किए गए डाइनैमिक ग्राफ़ पर जाने के लिए, दो navigate() कॉल की ज़रूरत पड़ने की समस्या को ठीक किया गया है. (I7785c, b/188859835)
  • नेविगेशन 2.4.0-alpha01 में आई एक समस्या को ठीक किया गया है. इसकी वजह से, सबसे ऊपर के लेवल के डेस्टिनेशन पर होने पर, setupActionBarWithNavController(), ऊपर वाले आइकॉन को सही तरीके से नहीं हटा पाता था. (I5d443, b/189868637)
  • NavController के रूट ग्राफ़ को पहले पॉप करने के बाद, popBackStack() को कॉल करते समय IllegalStateException को ठीक किया गया. (I2a330, b/190265699)
  • navigation-common या उस पर निर्भर किसी भी आर्टफ़ैक्ट का इस्तेमाल करने पर, by navArgs() के लिए ProGuard के नियम अब सही तरीके से लागू होते हैं. (I68800, b/190082521)
  • OnDestinationChangedListener, navigate() को पहली बार कॉलबैक मिलने पर, अब उस डेस्टिनेशन के साथ सही तरीके से दूसरा कॉलबैक पाता है जिस पर वह नेविगेट किया गया था. (Ie5f9e, b/190228815)
  • डाइनैमिक सुविधा वाले मॉड्यूल और AGP 7.0 और उसके बाद के वर्शन के साथ इस्तेमाल करने पर, Safe Args अब क्रैश नहीं होता. (I69518, b/189966576)

आम समस्या

  • Gradle 6.7.0 का इस्तेमाल करने पर, Safe Args की सुविधा काम नहीं करेगी. इसकी वजह यह है कि यह Kotlin के पुराने वर्शन पर निर्भर करती है.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 का इस्तेमाल किया जाता था उन्हें अपडेट कर दिया गया है. अब इनमें Material 1.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 में निर्देश प्रॉपर्टी जनरेट करने की कोशिश करते समय, अब सेफ़ आर्ग्युमेंट क्रैश नहीं होता. (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 अपनी स्थिति सेव और उसे वापस ला सके.

नेविगेशन कंपोज में composable डेस्टिनेशन के लिए इस्तेमाल किए गए ComposeNavigator और फ़्रैगमेंट के साथ नेविगेशन में <fragment> डेस्टिनेशन के लिए इस्तेमाल किए गए FragmentNavigator और DynamicFragmentNavigator, दोनों को अपडेट किया गया है. ऐसा इसलिए किया गया है, ताकि नए नेविगेटर एपीआई का इस्तेमाल किया जा सके और स्टेटस को सेव और वापस लाया जा सके.

नेविगेशन के रास्ते

route एक ऐसा String होता है जो किसी डेस्टिनेशन की खास पहचान करता है. पहले इस कॉन्सेप्ट का इस्तेमाल सिर्फ़ Navigation Compose में किया जाता था. हालांकि, अब इसे नेविगेशन एपीआई के मुख्य हिस्से के तौर पर इस्तेमाल किया जा सकता है. इससे, नेविगेशन Kotlin DSL की मदद से ग्राफ़ बनाते समय, पूर्णांक आईडी का इस्तेमाल करने का विकल्प मिलता है. (b/172823546)

जिन एपीआई में सिर्फ़ आईडी डाला जाता था उनमें अब एक और ओवरलोड है, जिसमें रूट String डाला जाता है. इसमें navigate(), popBackStack(), popUpTo(), और getBackStackEntry() शामिल हैं.

इससे एपीआई पर कुछ असर पड़ा है:

  • Kotlin DSL में popUpTo kotlin प्रॉपर्टी को popUpToId के पक्ष में बंद कर दिया गया है. (I59c73, b/172823546)
  • getStartDestination() एपीआई को बंद कर दिया गया है और अब getStartDestinationId() का इस्तेमाल किया जा रहा है. (I0887f, b/172823546)

Navigation Compose के पिछले वर्शन से Navigation Compose 2.4.0-alpha01 पर अपग्रेड करने वाले डेवलपर के लिए, इसका मतलब है कि एक्सटेंशन के तरीकों पर इन इंपोर्ट की अब ज़रूरत नहीं है और इन्हें हटा दिया जाना चाहिए:

import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo

KEY_ROUTE आर्ग्युमेंट को NavDestination पर route प्रॉपर्टी से बदल दिया गया है. इससे, navBackStackEntry.destination.route को सीधे तौर पर कॉल किया जा सकता है.

एपीआई में हुए बदलाव

  • सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनरिक (जैसे, NavType सबक्लास) का इस्तेमाल करने वाली क्लास के लिए, वैल्यू न होने की स्थिति को बेहतर बनाया गया है. -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)
    }
    
  • KotlinPoet 1.8.0 पर निर्भर करने के लिए, Safe Args को अपडेट किया गया. (#172, b/183990444)

व्यवहार में बदलाव

  • नेविगेशन अब लाइफ़साइकल 2.3.1 पर निर्भर करता है. साथ ही, अब NavBackStackEntry Lifecycle को अपडेट करने वाले तरीकों, setGraph(), popBackStack(), navigateUp(), और navigate() को @MainThread के तौर पर मार्क करता है. इससे नेविगेशन को लाइफ़साइकल 2.3.0 में शुरू किए गए मुख्य थ्रेड लागू करने की सुविधा के साथ अलाइन किया जाता है. (b/171125856)
  • डीप लिंक से एनम आर्ग्युमेंट को पार्स करने की सुविधा अब केस-सेंसिटिव नहीं है. इसकी मदद से, http://www.example.com/red जैसे डीप लिंक को www.example.com/{color} जैसे डीप लिंक से मैच किया जा सकता है. भले ही, एनम की वैल्यू RED हो. (#152, b/135857840)

Compose के साथ काम करने वाले डिवाइस

  • 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)

बाहरी योगदान

  • Safe Args के लिए सहायता बनाने और हर NavArgs क्लास के लिए fromSavedStateHandle() तरीका जनरेट करने के लिए, simonschiller को धन्यवाद. (#122, b/136967621)
  • डीप लिंक से Enum आर्ग्युमेंट को पार्स करने के लिए, केस-इनसेंसिटिव बनाने के लिए Bradleycorn को धन्यवाद. (#152, b/135857840)
  • osipxd को धन्यवाद, उन्होंने उस समस्या को ठीक किया है जिसमें आखिर में मौजूद आर्ग्युमेंट प्लेसहोल्डर, उन डिप लिंक से ज़्यादा प्राथमिकता पाते थे जिनका सफ़िक्स पूरी तरह से मैच करता था. (#153, b/184072811)
  • KotlinPoet 1.8.0 पर निर्भर करने के लिए, Safe Args को अपडेट करने के लिए tatocaster को धन्यवाद. (#172, b/183990444)
  • name और argument फ़ील्ड और NamedNavArgument के डीस्ट्रक्चरिंग फ़ंक्शन को सार्वजनिक करने के लिए, jossiwolf को धन्यवाद. (#174, b/181320559)
  • jossiwolf को नया NavBackStackEntry#provideToCompositionLocals एक्सटेंशन उपलब्ध कराने के लिए धन्यवाद. इससे, काम के कंपोज़िशन लोकल के लिए NavBackStackEntry मिलता है. (#175, b/187229439)
  • NavigatorProvider#addNavigator के काम करने के तरीके को बेहतर बनाने के लिए धन्यवाद jossiwolf. इससे यह पक्का किया जा सकेगा कि एक ही इंस्टेंस के साथ बार-बार कॉल करने पर कोई समस्या न हो. (#176, b/187443146)

वर्शन 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)
  • नेविगेशन कंपोज़ अब नेविगेशन 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 उपलब्ध है या नहीं. viewModel() और NavHost जैसे एपीआई के लिए ViewModelStoreOwner की ज़रूरत होती है. हालांकि, अगर ViewModelStoreOwner सेट नहीं किया जाता है, तो भी ये एपीआई अपवाद दिखाते हैं. (Idf39a)

गड़बड़ियां ठीक की गईं

  • नेविगेशन कंपोज अब 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 अब LocalSavedStateRegistryOwner CompositionLocal को उस डेस्टिनेशन के NavBackStackEntry से पॉप्युलेट करता है. इससे यह पक्का होता है कि 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 अब NavController पर सेट किए गए OnBackPressedDispatcher को पाने के लिए, Activity-Compose 1.3.0-alpha01 के नए LocalOnBackPressedDispatcherOwner का इस्तेमाल करता है. (I65b12)

वर्शन 1.0.0-alpha06

28 जनवरी, 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 रिलीज़ हो गया है. 1.0.0-alpha06 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • NavController पर getBackStackEntry(route: String) एक्सटेंशन का तरीका जोड़ा गया है, जो उससे जुड़ा NavBackStackEntry दिखाता है. (If8931)

वर्शन 1.0.0-alpha05

13 जनवरी, 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 रिलीज़ हो गया है. 1.0.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

Compose 1.0.0-alpha10 पर निर्भर करने के लिए अपडेट किया गया.

वर्शन 1.0.0-alpha04

16 दिसंबर, 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 रिलीज़ हो गया है. 1.0.0-alpha04 वर्शन में ये कमिट शामिल हैं.

  • Compose 1.0.0-alpha09 के साथ काम करने के लिए अपडेट किया गया.

वर्शन 1.0.0-alpha03

2 दिसंबर, 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 रिलीज़ हो गया है. 1.0.0-alpha03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • कॉन्फ़िगरेशन में बदलाव करने या प्रोसेस के बंद होने और फिर से शुरू होने के बाद, popBackStack() और navigateUp() के काम न करने की समस्या को ठीक किया गया. (Icea47, b/173281473)
  • अब अपने NavHost में नेस्ट किए गए ग्राफ़ पर नेविगेट करने की सुविधा सही तरीके से काम करती है. (I0948d, b/173647694)

वर्शन 1.0.0-alpha02

11 नवंबर, 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 रिलीज़ हो गया है. 1.0.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

एपीआई में हुए बदलाव

  • नेविगेशन कंपोज़ करने की सुविधा अब popUpTo और launchSingleTop ऑपरेशन का इस्तेमाल करने के लिए, NavOptions के साथ काम करती है (If96c3, b/171468994)
  • नेविगेशन फ़ंक्शन जोड़ा गया है, जो आईडी के बजाय रास्ता लेता है. इसकी मदद से, नेविगेशन कंपोज डीएसएल में नेस्ट किए गए ग्राफ़ बनाए जा सकते हैं. (I1661d)
  • startDestination अब NavHost (Ie620e) के पैरामीटर की सूची में, route से पहले आता है
  • अब NavHost composable के बाहर, शुरू करने के डेस्टिनेशन के तौर पर रूट का इस्तेमाल करके ग्राफ़ बनाया जा सकता है. (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, और याद रखी गई स्थिति का स्कोप.
  • सिस्टम के 'वापस जाएं' बटन के साथ अपने-आप इंटिग्रेट होना.
  • आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजा दिखाने के लिए सहायता.
  • होइस्टिंग स्टेटस की अनुमति देने और NavController को NavHost के बाहर के कॉम्पोज़ेबल (जैसे, सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट करने के लिए, rememberNavController() और currentBackStackEntryAsState() में खास हेल्पर बनाएं.

ज़्यादा जानकारी के लिए, नेविगेशन कॉम्पोज़ करने से जुड़ी गाइड देखें.

वर्शन 2.3.5

वर्शन 2.3.5

7 अप्रैल, 2021

androidx.navigation:navigation-*:2.3.5 रिलीज़ हो गया है. 2.3.5 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • NavDeepLinkRequest या Uri का इस्तेमाल करके नेविगेट करते समय, अब KEY_DEEP_LINK_INTENT के ज़रिए आर्ग्युमेंट से इंटेंट पाकर, नतीजे वाले डेस्टिनेशन में Uri, कार्रवाई, और MIME टाइप को ऐक्सेस किया जा सकता है. इससे, बाहरी डीप लिंकिंग के लिए पहले से उपलब्ध सुविधा को डुप्लीकेट किया जा सकता है. (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)
  • app:argType=”float” के साथ किसी आर्ग्युमेंट के लिए defaultValue की अनुमति देने के लिए, पुल अनुरोध करने के लिए धन्यवाद tatocaster. अब पूर्णांक की डिफ़ॉल्ट वैल्यू काम करती हैं. (#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)
  • नेविगेशन के लिए SafeArgs, अब KotlinPoet के 1.7.2 वर्शन का इस्तेमाल करता है. इसमें Kotlin के एक्सप्लिशिट एपीआई मोड के लिए सहायता जोड़ी गई है. (I918b5)
  • NavHostFragment.findNavController(Fragment) अब फ़्रैगमेंट हैरारकी और फ़्रैगमेंट के व्यू हैरारकी की मौजूदा जांच के अलावा, DialogFragment के रूट डेकोर व्यू की भी जांच करता है. इसकी मदद से, FragmentScenario और Navigation.setViewNavController() के साथ नेविगेशन का इस्तेमाल करने वाले डायलॉग फ़्रैगमेंट की जांच की जा सकती है. (I69e0d)

वर्शन 2.3.1

वर्शन 2.3.1

14 अक्टूबर, 2020

androidx.navigation:navigation-*:2.3.1 रिलीज़ हो गया है. 2.3.1 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नेविगेशन यूज़र इंटरफ़ेस (यूआई) में डिफ़ॉल्ट ऐनिमेशन संसाधन जोड़े गए हैं. साथ ही, डिफ़ॉल्ट ऐनिमेशन संसाधनों के बजाय, इनका इस्तेमाल करने का सुझाव दिया जाता है. (b/167430145)
  • NavOptions अब हैशकोड और बराबर के तरीकों को बदल देता है (b/161586466)
  • नेविगेशन में अब “कोई आईडी वाला डेस्टिनेशन नहीं है” IllegalArgumentException में मौजूदा डेस्टिनेशन शामिल है. इससे डेवलपर को डीबग करने का बेहतर अनुभव मिलेगा. (b/168311416)

गड़बड़ियां ठीक की गईं

  • सेफ़ आर्ग्युमेंट, रिटर्न लाइन को रैप नहीं करेगा. भले ही, जनरेट की गई आर्ग्युमेंट क्लास का नाम 100 वर्णों से ज़्यादा का हो. (b/168584987)

डिपेंडेंसी में बदलाव

  • navigation-ui अब DrawerLayout 1.1.1 पर निर्भर करता है. इससे यह पक्का होता है कि LOCK_MODE_LOCKED_CLOSED या LOCK_MODE_LOCKED_OPEN का इस्तेमाल करने पर भी, NavigationUI ड्रॉवर खोल पाए. (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 को ऐक्सेस किया जा सकता है. यह SavedStateHandle, सेव की गई छोटी-मोटी स्थिति को सेव करने के लिए सही होता है. यह स्थिति, बैक स्टैक की किसी खास एंट्री से जुड़ी होनी चाहिए. ज़्यादा जानकारी के लिए, नतीजे को पिछले डेस्टिनेशन पर भेजना देखें.
  • Openable के लिए NavigationUI का इस्तेमाल: NavigationUI में DrawerLayout के सभी इस्तेमाल को, CustomView 1.1.0 में जोड़े गए ज़्यादा सामान्य Openable इंटरफ़ेस से बदल दिया गया है. साथ ही, DrawerLayout 1.1.0 में DrawerLayout के ज़रिए लागू किया गया है.
  • डीप लिंक में ऐक्शन और MIME टाइप के साथ काम करने की सुविधा: डीप लिंकिंग की सुविधा को पहले से उपलब्ध app:uri के अलावा, app:action और app:mimeType के साथ काम करने के लिए बढ़ाया गया है. NavController अब नई NavDeepLinkRequest क्लास की मदद से, इन फ़ील्ड के किसी भी कॉम्बिनेशन पर नेविगेट करने की सुविधा देता है. ज़्यादा जानकारी के लिए, NavDeepLinkRequest का इस्तेमाल करके नेविगेट करना लेख पढ़ें.

ऐसी समस्याएं जिनकी जानकारी पहले से है

  • मेनिफ़ेस्ट मर्जर में, डीप लिंक ऐक्शन और एमआईएम टाइप के लिए सहायता अभी उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में <nav-graph> एलिमेंट से जनरेट किए गए किसी भी <intent-filter> एलिमेंट के <data> एलिमेंट या कस्टम <action> में, आपका mime टाइप शामिल नहीं होगा. आपको अपने मेनिफ़ेस्ट में, मैन्युअल तरीके से सही <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)
  • setGraph() को कॉल करने से पहले रजिस्टर किए गए OnDestinationChangedListener इंस्टेंस, अब प्रोसेस के बंद होने के बाद सही तरीके से वापस लाए गए डेस्टिनेशन पर भेजे जाते हैं. (b/155218371)
  • singleTop का इस्तेमाल करने पर, NavBackStackEntry के आर्ग्युमेंट अब सही तरीके से अपडेट हो जाते हैं. साथ ही, अपडेट किए गए आर्ग्युमेंट सभी OnDestinationChangeListener इंस्टेंस को भेज दिए जाते हैं. (b/156545508)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.3.0-alpha06

29 अप्रैल, 2020

androidx.navigation:navigation-*:2.3.0-alpha06 रिलीज़ हो गया है. (2.3.0-alpha06 वर्शन में ये बदलाव शामिल हैं.)

नई सुविधाएं

  • डीप लिंकिंग की सुविधा को app:uri के साथ-साथ app:action और app:mimeType के लिए भी उपलब्ध कराया गया है. NavController अब नई NavDeepLinkRequest क्लास की मदद से, इन फ़ील्ड के किसी भी कॉम्बिनेशन पर नेविगेट करने की सुविधा देता है. (b/136573074, b/135334841)

एपीआई में हुए बदलाव

  • डाइनैमिक नेविगेशन डेस्टिनेशन के लिए, Kotlin DSL की सहायता को काफ़ी बढ़ाया गया है. (b/148969800)

गड़बड़ियां ठीक की गईं

  • नेस्ट किए गए स्टार्ट डेस्टिनेशन का इस्तेमाल करने पर, डीप लिंक इंटेंट को अनदेखा करने से जुड़ी समस्या को ठीक किया गया. (b/154532067)

वर्शन 2.3.0-alpha05

15 अप्रैल, 2020

androidx.navigation:navigation-*:2.3.0-alpha05 रिलीज़ हो गया है. 2.3.0-alpha05 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • <include-dynamic> का इस्तेमाल करके डाइनैमिक ग्राफ़ में शामिल करने के लिए, अब आपको app:graphPackage की जानकारी देने की ज़रूरत नहीं है. इसके बजाय, बिंदु के बाद applicationId में moduleName सफ़िक्स जोड़कर, डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाएगा. अगर आपको अपने graphPackage को पसंद के मुताबिक बनाना है, तो अब ${applicationId} प्लेसहोल्डर का इस्तेमाल किया जा सकता है. (b/152696768)
  • नेविगेशन ग्राफ़ Kotlin DSL में अब ऐक्शन के लिए defaultArguments Map दिखाया जाता है. यह नेविगेशन एक्सएमएल फ़ाइलों में <action> एलिमेंट पर डिफ़ॉल्ट वैल्यू सेट करने की सुविधा को दिखाता है. (b/150345605)

गड़बड़ियां ठीक की गईं

  • नेविगेशन 2.2.2 में: जब आपकी गतिविधि में एक से ज़्यादा NavHostFragment इंस्टेंस हों, तो अपने ग्राफ़ के स्टार्ट डेस्टिनेशन पर डीप लिंक करते समय आने वाली समस्या को ठीक किया गया.IllegalStateException (b/147378752)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.3.0-alpha04

18 मार्च, 2020

androidx.navigation:navigation-*:2.3.0-alpha04 रिलीज़ हो गया है. 2.3.0-alpha04 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • नेविगेशन 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 अब CustomView 1.1.0-alpha02 में पेश किए गए Openable इंटरफ़ेस का इस्तेमाल करता है. यह इंटरफ़ेस, DrawerLayout को DrawerLayout 1.1.0-alpha04 के तौर पर लागू करता है. इससे, NavigationUI के साथ Openable के कस्टम तरीके का इस्तेमाल किया जा सकता है.AppBarConfiguration (b/129030452)

गड़बड़ियां ठीक की गईं

  • navigation-common-ktx ProGuard के नियम अब सभी NavArgs इंस्टेंस के बजाय, सिर्फ़ इस्तेमाल की गई NavArgs क्लास को सही तरीके से सेव करते हैं. (b/150213558)

डिपेंडेंसी में बदलाव

  • नेविगेशन को Core 1.2.0 पर निर्भर होने से रोकने के लिए, इसे Core 1.1.0 पर निर्भर किया गया है. ऐसा इसलिए किया गया है, ताकि डेवलपर को किसी नई डिपेंडेंसी पर स्विच करने के लिए मजबूर न किया जाए. ऐसा तब किया जाता है, जब नेविगेशन, Core 1.2.0 में मौजूद किसी नए एपीआई पर निर्भर न हो.

वर्शन 2.3.0-alpha02

19 फ़रवरी, 2020

androidx.navigation:navigation-*:2.3.0-alpha02 रिलीज़ हो गया है. 2.3.0-alpha02 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • NavBackStackEntry की मदद से, अब SavedStateHandle को ऐक्सेस किया जा सकता है. यह थोड़ी सेव की गई स्थिति को स्टोर करने के लिए सही है. यह स्थिति, बैक स्टैक की किसी खास एंट्री से जुड़ी होनी चाहिए. इस्तेमाल के उदाहरण के लिए, नतीजा दिखाना देखें. (b/79672220)

एपीआई में हुए बदलाव

  • getCurrentBackStackEntry() और getPreviousBackStackEntry() के आसान तरीके जोड़े गए हैं, ताकि मौजूदा और पिछले डेस्टिनेशन के लिए NavBackStackEntry को आसानी से वापस लाया जा सके. (b/79672220)

गड़बड़ियां ठीक की गईं

  • navigateUp() अब अपने टास्क स्टैक पर ऐप्लिकेशन लॉन्च करते समय, मौजूदा डेस्टिनेशन के आर्ग्युमेंट और KEY_DEEP_LINK_INTENT को पिछले डेस्टिनेशन पर भेजता है. (b/147456890)

डिपेंडेंसी में बदलाव

  • नेविगेशन अब कोर 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.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

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.2.1

वर्शन 2.2.1

5 फ़रवरी, 2020

androidx.navigation:navigation-*:2.2.1 रिलीज़ हो गया है. 2.2.1 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • क्वेरी पैरामीटर के बिना डीप लिंक, अब क्वेरी पैरामीटर को सही तरीके से अनदेखा करते हैं. ऐसा करने के बजाय, वे क्वेरी पैरामीटर को आखिर में मौजूद {argument} एलिमेंट में जोड़ते हैं या डीप लिंक से मैच नहीं करते. (b/147447512)
  • DrawerArrowDrawable के लिए navigation-ui ProGuard के नियमों को अपडेट कर दिया गया है, ताकि यह पक्का किया जा सके कि android.enableJetifier=true की ज़रूरत नहीं है. (b/147610424)
  • navigation-common-ktx मॉड्यूल में अब मेनिफ़ेस्ट पैकेज का यूनीक नाम है. यह नाम, navigation-runtime-ktx मॉड्यूल के मेनिफ़ेस्ट पैकेज के नाम से अलग है. (aosp/1141947)

डिपेंडेंसी से जुड़े अपडेट

वर्शन 2.2.0

वर्शन 2.2.0

22 जनवरी, 2020

androidx.navigation:navigation-*:2.2.0 रिलीज़ हो गया है. 2.2.0 वर्शन में ये बदलाव शामिल हैं.

2.1.0 के बाद किए गए ज़रूरी बदलाव

  • NavBackStackEntry: अब बैक स्टैक पर किसी डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास करके, NavController.getBackStackEntry() को कॉल किया जा सकता है. NavBackStackEntry फ़ंक्शन से मिलने वाले आउटपुट में, नेविगेशन से चलने वाला LifecycleOwner, ViewModelStoreOwner (NavController.getViewModelStoreOwner() से मिलने वाला आउटपुट), और SavedStateRegistryOwner शामिल होता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए आर्ग्युमेंट भी शामिल होते हैं.
  • लाइफ़साइकल ViewModel सेव की गई स्थिति का इंटिग्रेशन: SavedStateViewModelFactory अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल by navGraphViewModels() या ViewModelProvider कंस्ट्रक्टर के साथ किया जाता है. यह कंस्ट्रक्टर, NavController.getBackStackEntry() या NavController.getViewModelStoreOwner() से वापस मिलने वाले ViewModelStoreOwner के साथ काम करता है.
  • डीप लिंक के लिए क्वेरी पैरामीटर की सुविधा: क्वेरी पैरामीटर वाले डीप लिंक में, अब क्रम में बदले गए क्वेरी पैरामीटर काम करते हैं. डीप लिंक मैच करते समय, ऐसे आर्ग्युमेंट जो डिफ़ॉल्ट वैल्यू वाले हैं या जिनमें वैल्यू नहीं हो सकती, अब ज़रूरी नहीं हैं.
  • ऐनिमेशन के लिए बेहतर सहायता: NavHostFragment अब Fragment 1.2.0 से FragmentContainerView का इस्तेमाल करता है. इससे, ऐनिमेशन की z-ordering से जुड़ी समस्याएं ठीक होती हैं और फ़्रैगमेंट में विंडो इनसेट डिस्पैच होते हैं.

वर्शन 2.2.0-rc04

18 दिसंबर, 2019

androidx.navigation:navigation-*:2.2.0-rc04 रिलीज़ हो गया है. 2.2.0-rc04 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट 1.2.0-rc04 में अडजस्ट किए गए फ़ेड ऐनिमेशन से मैच करने के लिए, navigation-ui के इस्तेमाल किए गए डिफ़ॉल्ट फ़ेड ऐनिमेशन में बदलाव किया गया. (b/145769814)

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

androidx.navigation:navigation-*:2.2.0-rc03 रिलीज़ हो गया है. 2.2.0-rc03 वर्शन में ये बदलाव शामिल हैं.

गड़बड़ियां ठीक की गईं

  • पाथ के आखिरी हिस्से के तौर पर क्वेरी पैरामीटर और आर्ग्युमेंट का इस्तेमाल करते समय, डीप लिंक पार्स करने से जुड़ी एक समस्या को ठीक किया गया. इस समस्या की वजह से, फ़ाइनल पाथ आर्ग्युमेंट के एक से ज़्यादा वर्ण पार्स नहीं हो पाते थे. (b/144554689)
  • डीप लिंक पार्स करने से जुड़ी एक समस्या को ठीक किया गया. इस समस्या की वजह से, वैकल्पिक पैरामीटर को null के बजाय "@null" मिलता था. (b/141613546)
  • NavHostFragment अब FragmentContainerView के साथ इस्तेमाल करने पर, कॉन्फ़िगरेशन में बदलाव होने के बाद ग्राफ़ को सही तरीके से वापस लाता है. (b/143752103)

डिपेंडेंसी में बदलाव

  • नेविगेशन अब लाइफ़साइकल 2.2.0-rc03, लाइफ़साइकल ViewModel सेव की गई स्थिति 1.0.0-rc03, ऐक्टिविटी 1.1.0-rc03, और फ़्रैगमेंट 1.2.0-rc03 पर निर्भर करता है.

वर्शन 2.2.0-rc02

7 नवंबर, 2019

androidx.navigation:navigation-*:2.2.0-rc02 रिलीज़ हो गया है. 2.2.0-rc02 वर्शन में ये बदलाव शामिल हैं.

डिपेंडेंसी में बदलाव

  • नेविगेशन अब androidx.lifecycle 2.2.0-rc02 पर निर्भर करता है.

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

androidx.navigation:navigation-*:2.2.0-rc01 को 2.2.0-beta01 से बिना किसी बदलाव के रिलीज़ किया गया है. 2.2.0-rc01 वर्शन में ये कमिट शामिल हैं.

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

androidx.navigation:navigation-*:2.2.0-beta01 रिलीज़ हो गया है. 2.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.

नई सुविधाएं

  • डीबग करते समय ज़्यादा मददगार जानकारी देने के लिए, NavDestination और उसके सबक्लास अब toString() को बदल देते हैं. (b/141264986)

व्यवहार में बदलाव

  • डीप लिंक को मैच करते समय, अब अतिरिक्त क्वेरी पैरामीटर को अनदेखा कर दिया जाता है. इससे मैच न होने की समस्या नहीं होती. (b/141482822)

गड़बड़ियां ठीक की गईं

  • क्वेरी पैरामीटर तय होने पर, डीप लिंक के पाथ में मौजूद आर्ग्युमेंट को अनदेखा करने की समस्या को ठीक किया गया है. (b/141505755)
  • Activity पर navArgs() Kotlin एक्सटेंशन में, अब गड़बड़ी के बारे में बेहतर मैसेज दिखता है. (b/141408999)
  • Safe Args से जनरेट की गई 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 अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल by navGraphViewModels() या NavController.getViewModelStoreOwner() से दिखाए गए ViewModelStoreOwner के साथ ViewModelProvider कंस्ट्रक्टर का इस्तेमाल करते समय किया जाता है. (b/135716331)

एपीआई में हुए बदलाव

  • नेविगेशन 2.1.0-rc01: 2.1.0-alpha02 में पेश किए गए NavController पर, बंद कर दिए गए getViewModelStore() एपीआई को हटा दिया गया है. (aosp/1091021)

गड़बड़ियां ठीक की गईं

  • NavHostFragment अब FragmentContainerView का इस्तेमाल करता है. इससे ऐनिमेशन की z-ordering से जुड़ी समस्याएं ठीक होती हैं. साथ ही, फ़्रेगमेंट में विंडो इनसेट डिस्पैच करने में मदद मिलती है. (b/137310379)

वर्शन 2.1.0

वर्शन 2.1.0

5 सितंबर, 2019

androidx.navigation:navigation-*:2.1.0 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

2.0.0 के बाद किए गए अहम बदलाव

  • नेविगेशन ग्राफ़ के लिए ViewModel बनाना: अब -ktx लाइब्रेरी का इस्तेमाल करने वाले Kotlin उपयोगकर्ताओं के लिए, by navGraphViewModels() प्रॉपर्टी डेलिगेट का इस्तेमाल करके, नेविगेशन ग्राफ़ लेवल पर स्कोप वाले ViewModel बनाए जा सकते हैं. इसके अलावा, NavController में जोड़े गए getViewModelStoreOwner() एपीआई का इस्तेमाल करके भी ऐसा किया जा सकता है. ज़्यादा जानकारी के लिए, डेस्टिनेशन के बीच यूज़र इंटरफ़ेस (यूआई) से जुड़ा डेटा शेयर करना लेख पढ़ें.
  • डायलॉग डेस्टिनेशन: अब ऐसे <dialog> डेस्टिनेशन बनाए जा सकते हैं जिन पर navigate करने पर, DialogFragment दिखेगा. NavHostFragment में डिफ़ॉल्ट रूप से डायलॉग डेस्टिनेशन की सुविधा काम करती है. ज़्यादा जानकारी के लिए, DialogFragment से डेस्टिनेशन बनाना लेख पढ़ें.
  • यूआरआई के हिसाब से नेविगेट करना: अब Uri का इस्तेमाल करके navigate किया जा सकता है. यह उस <deepLink> का इस्तेमाल करता है जिसे आपने किसी डेस्टिनेशन पर नेविगेट करने के लिए जोड़ा है. ज़्यादा जानकारी के लिए, यूआरआई का इस्तेमाल करके नेविगेट करना देखें.
  • NavHostController: कस्टम NavHost बनाने के लिए खास तौर पर इस्तेमाल किए जाने वाले एपीआई को NavHostController में ले जाया गया है. इससे, लागू करने वाले अपने NavController को होस्टिंग LifecycleOwner, OnBackPressedDispatcher, और ViewModelStore से कनेक्ट कर सकते हैं.

वर्शन 2.1.0-rc01

7 अगस्त, 2019

androidx.navigation:navigation-*:2.1.0-rc01 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

एपीआई में हुए बदलाव

  • 2.1.0-alpha02 में पेश किए गए NavController पर, बंद कर दिया गया getViewModelStore() एपीआई हटा दिया गया है. (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() के साथ एक ही कंटेनर में कई NavHostFragments का इस्तेमाल करते समय, टाइमिंग से जुड़ी समस्या को ठीक किया गया. (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 क्लास की जगह लेता है. NavHostOnBackPressedManager क्लास को पहले setHostOnBackPressedDispatcherOwner() से रिटर्न किया जाता था. (aosp/966091)

गड़बड़ियां ठीक की गईं

  • यूआरआई से नेविगेट करने के बाद, बैक स्टैक सही न होने की समस्या को ठीक किया गया है. (b/132509387)
  • NavController की मदद से, डीप लिंक अपने-आप मैनेज होते हैं. अब ये सिर्फ़ एक बार ट्रिगर होते हैं. (b/132754763)

वर्शन 2.1.0-alpha04

16 मई, 2019

androidx.navigation:*:2.1.0-alpha04 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

गड़बड़ियां ठीक की गईं

  • NavHostFragment, सिस्टम के 'वापस जाएं' बटन के इवेंट को इंटरसेप्ट करते समय, app:defaultNavHost का सही तरीके से पालन करता है. इससे नेविगेशन 2.1.0-alpha03 में हुई गिरावट को ठीक किया जाता है. b/132077777
  • DialogFragmentNavigator अब 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
  • रिसॉर्स आईडी या NavDirections इंस्टेंस के साथ navigate को कॉल करने के अलावा, अब Uri की मदद से नेविगेट किया जा सकता है. यह सही डेस्टिनेशन पर नेविगेट करने के लिए, डेस्टिनेशन में जोड़े गए <deepLink> का इस्तेमाल करता है. b/110412864

व्यवहार में बदलाव

  • गतिविधियों और फ़्रेगमेंट की डिफ़ॉल्ट ऐनिमेशन स्पीड से मैच करने के लिए, NavigationUI के डिफ़ॉल्ट ऐनिमेशन की स्पीड को 400 सेकंड से घटाकर 220 सेकंड कर दिया गया है. b/130055522

एपीआई में हुए बदलाव

  • NavHostFragment के createFragmentNavigator() तरीके को बंद कर दिया गया है और इसकी सुविधा को नए onCreateNavController() तरीके पर ले जाया गया है. इससे यह साफ़ तौर पर पता चलता है कि NavHostFragment को सबक्लास करते समय, कस्टम नेविगेटर जोड़ने का सही एंट्री पॉइंट यही है. b/122802849
  • NavDestination में hasDeepLink() तरीका जोड़ा गया है, ताकि यह देखा जा सके कि किसी दिए गए Uri को उस डेस्टिनेशन से मैनेज किया जा सकता है या नहीं. इसके अलावा, NavGraph के मामले में, नेविगेशन ग्राफ़ में मौजूद किसी भी डेस्टिनेशन से मैनेज किया जा सकता है. b/117437718

गड़बड़ियां ठीक की गईं

  • डिफ़ॉल्ट आर्ग्युमेंट अब OnDestinationChangedListener इंस्टेंस में सही तरीके से पास किए जाते हैं. b/130630686
  • NavHostFragment अब OnBackPressedDispatcher का इस्तेमाल करके, सिस्टम के 'पीछे जाएं' इवेंट को इंटरसेप्ट करता है. इससे, किसी फ़्रैगमेंट पर वापस आने पर, फ़्रैगमेंट लाइफ़साइकल के तरीकों में शर्त के हिसाब से नेविगेट करने से जुड़ी समस्या ठीक हो जाती है. b/111598096
  • Safe Args के लिए, app:argType के बिना android:defaultValue=”@null” को अब string आर्ग्युमेंट के तौर पर सही तरीके से अनुमानित किया जाता है. b/129629192

वर्शन 2.1.0-alpha02

3 अप्रैल, 2019

androidx.navigation:*:2.1.0-alpha02 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

  • अब Kotlin इस्तेमाल करने वाले लोगों के लिए, by navGraphViewModels() प्रॉपर्टी डेलिगेट की मदद से या NavController में जोड़े गए getViewModelStore() एपीआई का इस्तेमाल करके, नेविगेशन ग्राफ़ लेवल पर स्कोप किए गए ViewModel बनाए जा सकते हैं. b/111614463

एपीआई में हुए बदलाव

  • अब मैच करने वाले पैकेज के नाम को सीमित करने के लिए, <activity> डेस्टिनेशन में app:targetPackage जोड़ा जा सकता है. यह पैकेज को अपने ऐप्लिकेशन आईडी तक सीमित करने के लिए, app:targetPackage="${applicationId}" के साथ काम करता है. b/110975456

गड़बड़ियां ठीक की गईं

  • <activity> डेस्टिनेशन के लिए android:name को अब इन्फ़्लेशन के समय क्लास में पार्स नहीं किया जाता. इससे डाइनैमिक सुविधाओं का इस्तेमाल करते समय, ClassNotFoundExceptions को रोका जा सकता है. b/124538597

वर्शन 2.1.0-alpha01

19 मार्च, 2019

यह नेविगेशन 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 का व्यवहार, नेविगेशन 1.0.0-rc02 के व्यवहार जैसा ही है. साथ ही, 1.0.0-rc02 से अपडेट करने के लिए, आपके कोड में कोई बदलाव करने की ज़रूरत नहीं है. हालांकि, नई डिपेंडेंसी से मैच करने के लिए, डिपेंडेंसी को अपडेट करना ज़रूरी है.

Navigation के 2.X रिलीज़ का इस्तेमाल करने के लिए, आपके प्रोजेक्ट को AndroidX पर माइग्रेट किया जाना चाहिए. Navigation 1.0 स्टैबल, Support Library डिपेंडेंसी का इस्तेमाल करने वाली आखिरी रिलीज़ होगी. इसके बाद, 1.0 के बाद के सभी डेवलपमेंट, AndroidX पर आधारित होंगे और 2.0 स्टैबल रिलीज़ पर बनाए जाएंगे.

AndroidX से पहले की डिपेंडेंसी

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 फ़ाइल में यह क्लासपाथ जोड़ें

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

यह नेविगेशन के 1.0.0 के स्टेबल रिलीज़ का दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में कई गड़बड़ियां ठीक की गई हैं.

गड़बड़ियां ठीक की गईं

  • एक समस्या को ठीक किया गया है. इसमें, रूट ग्राफ़ में आईडी b/126251695 न होने पर, popBackStack() को अनदेखा कर दिया जाता था
  • navigateUp() अब FLAG_ACTIVITY_NEW_TASK के बिना डीप लिंक को हैंडल करने के बाद, आपके ऐप्लिकेशन के टास्क पर वापस जाने की सुविधा को सही तरीके से मैनेज करता है b/126082008
  • ActivityNavigator.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

यह नेविगेशन का पहला बीटा वर्शन है. आने वाले समय में, नेविगेशन एपीआई अगले वर्शन तक स्थिर रहेगा. हालांकि, ऐसा तब तक होगा, जब तक कोई गंभीर समस्या न हो. इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं और इसके काम करने के तरीके में बदलाव किए गए हैं.

व्यवहार में बदलाव

  • नेविगेशन की सुविधा अब यह पक्का करती है कि रनटाइम और Safe Args के ज़रिए, आर्ग्युमेंट की डिफ़ॉल्ट वैल्यू को एक जैसा माना जाता है. इस वजह से, सिर्फ़ app:argType="reference" वाले आर्ग्युमेंट में किसी दूसरे रिसॉर्स (उदाहरण के लिए, @color/colorPrimary) पर ले जाने वाली डिफ़ॉल्ट वैल्यू हो सकती है. किसी दूसरे app:argType के साथ रेफ़रंस की डिफ़ॉल्ट वैल्यू का इस्तेमाल करने की कोशिश करने पर, नेविगेशन एक्सएमएल को पार्स करते समय अपवाद दिखेगा. b/123551990
  • सेफ़ आर्ग्युमेंट अब Android Gradle प्लग इन 3.3.0 aosp/888413 पर निर्भर करता है
  • Safe Args अब Kotlin 1.3.20 aosp/888414 पर निर्भर करता है

गड़बड़ियां ठीक की गईं

  • Android Gradle प्लग इन के सभी वर्शन में, लाइब्रेरी और फ़ीचर मॉड्यूल में अब सेफ़ आर्ग्युमेंट का इस्तेमाल किया जा सकता है. b/121304903
  • एक ऐसी गड़बड़ी को ठीक किया गया है जिसकी वजह से एक बार में एक ही डेस्टिनेशन के बजाय, popBackStack() ऑपरेशन से बैक स्टैक में सबसे ऊपर मौजूद डेस्टिनेशन की सभी कॉपी पॉप हो जाती थीं. b/123552990
  • FragmentNavigator की स्थिति, NavController की स्थिति से सिंक नहीं हो पाती थी. इस वजह से, बैक स्टैक को वापस लाने की कोशिश करने पर IllegalStateException दिखता था. इस समस्या को ठीक कर दिया गया है. b/123803044
  • एक समस्या को ठीक किया गया है. इसमें, NavigationUI हैंडल वाला बैक ऐरो नहीं दिखता था. ऐसा तब होता था, जब ProGuard का इस्तेमाल, कोड को छिपाने के लिए किया जाता था. b/123449431
  • Safe Args से जनरेट किया गया कोड, अब .OuterClass$InnerClass फ़ॉर्मैट में स्टैटिक इनर क्लास पर ले जाने वाले app:argType का इस्तेमाल करके सही तरीके से काम करता है. 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
  • अब सेफ़ आर्ग्युमेंट की मदद से, androidx.navigation.safeargs.kotlin प्लग इन लागू करके Kotlin कोड जनरेट किया जा सकता है. Kotlin कोड को खास तौर पर सिर्फ़ Kotlin मॉड्यूल के लिए बनाया गया है. इसमें, बिल्डर पैटर्न के बजाय डिफ़ॉल्ट आर्ग्युमेंट और अपरिवर्तनीय क्लास का इस्तेमाल किया गया है. यह पैटर्न, अब भी androidx.navigation.safeargs प्लग इन के ज़रिए उपलब्ध है. b/110263087

व्यवहार में बदलाव

  • मैच करने वाले डीप लिंक अब उस डीप लिंक को प्राथमिकता देते हैं जिसमें सबसे ज़्यादा मैच करने वाले आर्ग्युमेंट हैं. b/118393029
  • NavController पर setGraph() को कॉल करने से, अब बैक स्टैक रीसेट हो जाएगा. b/111450672
  • अब अज्ञात डीप लिंक से IllegalStateException नहीं दिखता है. हालांकि, इन डीप लिंक को अनदेखा कर दिया जाता है. इससे नेस्ट किए गए या एक से ज़्यादा NavHostFragment से जुड़ी समस्याएं ठीक हो जाती हैं. b/121340440

बदलावों की जानकारी

  • किसी गतिविधि पर पॉप ऐनिमेशन लागू करने के लिए, NavOptions.applyPopAnimationsToPendingTransition() का इस्तेमाल किया जाता था. अब इसे ActivityNavigator पर ले जाया गया है. b/122413117
  • सेफ़ आर्ग्युमेंट की सुविधा अब बिना आर्ग्युमेंट वाले ऐक्शन के लिए, एक जैसी क्लास को डुप्लीकेट करने से रोकती है. जनरेट की गई 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/120042732
  • NavController अब नेस्ट किए गए NavHostFragment या बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट का इस्तेमाल करते समय, popBackStack() ऑपरेशन को सही तरीके से मैनेज करता है. b/122770335
  • NavigationUI अब 'अप' बटन के कॉन्टेंट का ब्यौरा सही तरीके से सेट हो जाता है. b/120395362
  • Safe Args की मदद से जनरेट की गई निर्देशों की क्लास, अब उन ग्लोबल ऐक्शन को सही तरीके से मैनेज करती हैं जिनका आईडी, डेस्टिनेशन पर मौजूद ऐक्शन के आईडी से मेल खाता है. b/122962504
  • Safe Args की मदद से जनरेट की गई NavDirections क्लास में, अब equals() के सही होने पर, hashCode() वैल्यू एक जैसी होती हैं. b/123043662
  • NavHostFragment के FragmentManager पर कस्टम FragmentTransactions करने की कोशिश करने पर, FragmentNavigator अब गड़बड़ी का बेहतर मैसेज दिखाता है. आपको हमेशा getChildFragmentManager() का इस्तेमाल करना चाहिए. b/112927148

वर्शन 1.0.0-alpha09

18 दिसंबर, 2018

इस रिलीज़ में, एपीआई में ऐसे बदलाव किए गए हैं जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है. कृपया नीचे दिया गया ऐसे बदलाव जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है सेक्शन देखें.

हमने android.arch.navigation:navigation-testing आर्टफ़ैक्ट के डेवलपमेंट को जारी रखने का फ़ैसला नहीं लिया है. यह NavController की इंटरनल टेस्टिंग के लिए मददगार साबित हुआ है. हालांकि, हमारा सुझाव है कि आप जांच करने के लिए अन्य रणनीतियों का इस्तेमाल करें. जैसे, NavController इंस्टेंस को मॉक करके, यह पुष्टि करना कि सही navigate() कॉल किए जा रहे हैं. इस तरीके के बारे में ज़्यादा जानकारी के लिए, AndroidDevSummit 2018 में सिंगल ऐक्टिविटी के बारे में बातचीत देखें. साथ ही, हम नेविगेशन के साथ टेस्टिंग के बारे में ज़्यादा दस्तावेज़ तैयार करेंगे.

नई सुविधाएं

  • menuCategory="secondary" वाले MenuItem, NavigationUI तरीकों के साथ इस्तेमाल करने पर अब बैक स्टैक को पॉप नहीं करेंगे. b/120104424
  • AppBarConfiguration की मदद से अब फ़ॉलबैक OnNavigateUpListenerइंस्टेंस सेट किया जा सकता है. इसे तब कॉल किया जाएगा, जब navController.navigateUp() false दिखाएगा. b/79993862 b/120690961

बदलावों की जानकारी

  • argType="reference" के साथ <argument> का इस्तेमाल करने पर, नेविगेशन अब रेफ़रंस को पार्स नहीं करता. इसके बजाय, वह रॉ रिसॉर्स आईडी उपलब्ध कराता है. b/111736515
  • onNavDestinationSelected() अब डिफ़ॉल्ट रूप से आपके नेविगेशन ग्राफ़ के शुरुआती डेस्टिनेशन पर वापस पॉप अप होता है. इससे, setup के तरीकों के साथ इनका इस्तेमाल करना आसान हो जाता है. बैक स्टैक पॉप होने से बचने के लिए, अपने MenuItem में menuCategory="secondary" जोड़ें. aosp/852869
  • जनरेट की गई Args क्लास के fromBundle() तरीके अब शून्य वैल्यू वाले Bundle के बजाय, वैल्यू वाली Bundle वैल्यू लेते हैं aosp/845616

गड़बड़ियां ठीक की गईं

  • अब डीप लिंक से आर्ग्युमेंट को सही तरीके से पार्स किया जाता है. अब आर्ग्युमेंट को हमेशा स्ट्रिंग के तौर पर b/110273284 के बजाय, सही argType के तौर पर पार्स किया जाता है
  • नेविगेशन अब अपने सार्वजनिक संसाधनों को सही तरीके से एक्सपोर्ट करता है b/121059552
  • सेफ़ आर्ग्युमेंट अब 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/118670572 कर दिया गया है
  • OnDestinationChangedListener अब आर्ग्युमेंट के Bundle को भी पास करता है aosp/837142
  • app:clearTask और app:launchDocument एट्रिब्यूट और उनसे जुड़े तरीकों को हटा दिया गया है. अपने बैक स्टैक से सभी डेस्टिनेशन हटाने के लिए, अपने ग्राफ़ के रूट के साथ app:popUpTo का इस्तेमाल करें. b/119628354
  • ActivityNavigator.Extras अब Builder पैटर्न का इस्तेमाल करता है और किसी भी Intent.FLAG_ACTIVITY_ फ़्लैग को सेट करने की सुविधा जोड़ता है aosp/828140
  • NavController.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/830663
  • Navigator को फिर से तैयार किया गया है. इससे 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, Serializable ऑब्जेक्ट के साथ काम करता है. इनमें Enum वैल्यू भी शामिल हैं. Enum टाइप, क्लास के नाम के बिना enum लिटरल का इस्तेमाल करके डिफ़ॉल्ट वैल्यू सेट कर सकते हैं (उदाहरण के लिए, app:defaultValue="READ") b/111316353
  • Safe Args, इस्तेमाल किए जा सकने वाले सभी टाइप के कलेक्शन के साथ काम करता है b/111487504
  • Safe Args अब संसाधन डायरेक्ट्री के सब-फ़ोल्डर b/117893516 को अनदेखा करता है
  • Safe Args, ज़रूरत पड़ने पर @Override एनोटेशन जोड़ता है b/117145301

वर्शन 1.0.0-alpha07

29 अक्टूबर, 2018

नई सुविधाएं

  • नई AppBarConfiguration क्लास की मदद से, यह तय किया जा सकता है कि किन डेस्टिनेशन को टॉप-लेवल डेस्टिनेशन माना जाए. ज़्यादा जानकारी के लिए, अपडेट किया गया दस्तावेज़ देखें. b/117333663
  • अब अपने ग्राफ़ के स्टार्ट डेस्टिनेशन के लिए ऑर्ग्युमेंट दिए जा सकते हैं b/110300470
  • डीप लिंक अब पीरियड, हाइफ़न, और प्लस साइन वाले कस्टम स्कीम के साथ काम करते हैं. b/112806402

बदलावों की जानकारी

  • navigation-testing-ktx मॉड्यूल को navigation-testing artifact में शामिल कर दिया गया है और अब इसे पब्लिश नहीं किया जाएगा.
  • navigation-testing आर्टफ़ैक्ट अब Kotlin स्टैंडर्ड लाइब्रेरी पर निर्भर करता है. एपीआई को Kotlin के कॉन्वेंशन के मुताबिक बनाने के लिए बदला गया है. हालांकि, Java में लिखी गई जांचों के लिए इसका इस्तेमाल जारी रखा जा सकता है.
  • मेटाडेटा मेनिफ़ेस्ट में रजिस्टर किए गए नेविगेशन ग्राफ़ का इस्तेमाल अब नहीं किया जा सकता. b/118355937
  • अब कार्रवाइयों को <activity> डेस्टिनेशन से अटैच नहीं किया जा सकता. aosp/785539

गड़बड़ियां ठीक की गईं

  • डीप लिंक अब क्वेरी पैरामीटर को सही तरीके से पार्स करते हैं. b/110057514
  • गतिविधि के डेस्टिनेशन अब सभी एंटर और एक्सिट ऐनिमेशन को सही तरीके से लागू करते हैं. b/117145284
  • कस्टम नेविगेटर का इस्तेमाल करते समय, कॉन्फ़िगरेशन में बदलाव होने के बाद होने वाली क्रैश की समस्या को ठीक किया गया. b/110763345

Safe Args

  • सेफ़ आर्ग्युमेंट की डिपेंडेंसी अब Android Gradle प्लग इन 3.2.1 पर सेट है. b/113167627
  • अब इनर क्लास के लिए निर्देश जनरेट किए जा सकते हैं. b/117407555
  • <include> ग्राफ़ के लिए निर्देश जनरेट करने से जुड़ी समस्या को ठीक किया गया. b/116542123

वर्शन 1.0.0-alpha06

20 सितंबर, 2018

नई सुविधाएं

एपीआई में हुए बदलाव

  • बड़ा बदलाव: नेविगेटर navigate() का तरीका अब Navigator.Extras पैरामीटर लेता है.
  • NavController का getGraph() तरीका अब NonNull है b/112243286

गड़बड़ियां ठीक की गईं

  • NavigationUI.setupWithNavController() का इस्तेमाल अलग-अलग डेस्टिनेशन के व्यू के साथ करने पर, अब व्यू का डेटा लीक नहीं होता b/111961977
  • नेविगेटर onSaveState() को अब सिर्फ़ एक बार कॉल किया जाता है b/112627079

Safe Args

  • नेविगेशन डेस्टिनेशन के निर्देशों की क्लास, अब अपने पैरंट की निर्देशों की क्लास को बढ़ाती हैं. हालांकि, ऐसा तब ही होता है, जब पैरंट की निर्देशों की क्लास मौजूद हो b/79871405
  • Directions और Args क्लास में अब toString() लागू करने की सुविधा उपलब्ध है b/111843389

वर्शन 1.0.0-alpha05

10 अगस्त, 2018

गड़बड़ियां ठीक की गईं

  • बैकस्टैक के गलत तरीके से काम करने की गड़बड़ी को ठीक किया गया. b/111907708
  • जनरेट की गई आर्ग्युमेंट क्लास की 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 प्लग इन में, API में कई बदलाव, काम करने के तरीके में बदलाव, और गड़बड़ियों को ठीक करने के लिए कई सुधार किए गए हैं.

एपीआई / व्यवहार में बदलाव

  • NavHostFragment हमेशा मौजूदा फ़्रैगमेंट को मुख्य नेविगेशन फ़्रैगमेंट के तौर पर सेट करेगा. इससे यह पक्का होता है कि बाहरी NavController के पॉप होने से पहले, चाइल्ड फ़्रैगमेंट मैनेजर पॉप हो जाएं b/111345778

Safe Args

  • बदलाव: ConstraintLayout 2.0.0-alpha1 b/111110548 जैसी अन्य लाइब्रेरी के साथ होने वाली गड़बड़ियों से बचने के लिए, app:type को app:argType में बदल दिया गया है
  • Safe Args से मिलने वाले गड़बड़ी के मैसेज पर अब क्लिक किया जा सकता है b/111534438
  • आर्ग्स क्लास अब इस बात की पुष्टि करती है कि NonNull एट्रिब्यूट की वैल्यू शून्य नहीं है b/111451769
  • NavDirections और Args की जनरेट की गई क्लास b/111455455 b/111455456 में अतिरिक्त NonNull एनोटेशन जोड़े गए हैं

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट डेस्टिनेशन b/111515685 से डीप लिंक करने के बाद, सिस्टम के 'वापस जाएं' बटन से जुड़ी समस्या को ठीक किया गया

वर्शन 1.0.0-alpha03

12 जुलाई, 2018

नेविगेशन 1.0.0-alpha03 और उससे जुड़े Safe Args Gradle प्लग इन में, API में कई बदलाव, काम करने के तरीके में बदलाव, और गड़बड़ियों को ठीक करने के लिए कई सुधार किए गए हैं.

एपीआई / व्यवहार में बदलाव

  • टूलबार के लिए NavigationUI.setupWithNavController तरीका जोड़ा गया है b/109868820
  • CollapsingToolbarLayout के लिए, NavigationUI.setupWithNavController का तरीका जोड़ा गया है b/110887183
  • अगर बैक स्टैक खाली है या दिया गया डेस्टिनेशन आईडी बैक स्टैक में मौजूद नहीं है, तो popBackStack() अब गलत वैल्यू दिखाता है b/110893637
  • FragmentManager के स्टेटस सेव करने के बाद, FragmentNavigator अब नेविगेशन ऑपरेशन को अनदेखा करता है. इससे, “onSaveInstanceState के बाद यह कार्रवाई नहीं की जा सकती” अपवादों से बचा जा सकता है b/110987825

Safe Args

  • बड़े बदलाव: ऐक्शन और आर्ग्युमेंट के नामों में मौजूद अक्षर और अंक के अलावा अन्य वर्णों को, NavDirections के तरीके के नामों में कैमल केसिंग से बदल दिया जाएगा
    • उदाहरण के लिए, DemoController.index को setDemoControllerIndex b/79995048 में बदल दिया जाएगा
    • उदाहरण के लिए, action_show_settings, actionShowSettings b/79642240 हो जाएगा
  • बड़े बदलाव: अब डिफ़ॉल्ट रूप से, आर्ग्युमेंट को नॉन-नल माना जाता है. स्ट्रिंग और पार्सल किए जा सकने वाले आर्ग्युमेंट पर शून्य वैल्यू की अनुमति देने के लिए, app:nullable="true" b/79642307 जोड़ें
  • अब app:type="long" का इस्तेमाल, “123L” b/79563966 के तौर पर डिफ़ॉल्ट वैल्यू के साथ किया जा सकता है
  • app:type के लिए पूरी तरह क्वालिफ़ाइड क्लास नेम का इस्तेमाल करके, अब पार्सल किए जा सकने वाले आर्ग्युमेंट इस्तेमाल किए जा सकते हैं. इस एट्रिब्यूट के लिए सिर्फ़ "@null" b/79563966 वैल्यू को डिफ़ॉल्ट वैल्यू के तौर पर इस्तेमाल किया जा सकता है
  • आर्ग्युमेंट क्लास अब equals() और hashCode() को लागू करती हैं b/79642246
  • Safe Args प्लग इन अब लाइब्रेरी प्रोजेक्ट b/80036553 पर लागू किया जा सकता है
  • Safe Args प्लग इन को अब सुविधा वाले प्रोजेक्ट b/110011752 पर लागू किया जा सकता है

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट लाइफ़साइकल के तरीकों के दौरान नेविगेट करने से जुड़ी समस्याएं ठीक की गईं b/109916080
  • नेस्ट किए गए ग्राफ़ में कई बार नेविगेट करने से जुड़ी समस्याएं ठीक की गईं b/110178671
  • ग्राफ़ b/109909461 में पहले डेस्टिनेशन के साथ setPopUpTo का इस्तेमाल करते समय आने वाली समस्याओं को ठीक किया गया
  • app:defaultValue की सभी वैल्यू को स्ट्रिंग के तौर पर पास करने से जुड़ी समस्या को ठीक किया गया b/110710788
  • Android Gradle प्लग इन 3.2 बीटा 01 के साथ बंडल किया गया aapt2, अब नेविगेशन एक्सएमएल फ़ाइलों में हर android:name एट्रिब्यूट के लिए, 'रखें' नियम जोड़ता है b/79874119
  • डिफ़ॉल्ट FragmentNavigator को बदलते समय, मेमोरी लीक की समस्या को ठीक किया गया b/110900142

वर्शन 1.0.0-alpha02

7 जून, 2018

व्यवहार में बदलाव

  • FragmentNavigator अब setReorderingAllowed(true) का इस्तेमाल करता है. b/109826220

  • नेविगेशन अब डीप लिंक यूआरएल से पार्स किए गए आर्ग्युमेंट को URLDecode करता है. b/79982454

गड़बड़ियां ठीक की गईं

  • फ़्रैगमेंट लाइफ़साइकल के तरीकों से नेविगेट करने के लिए कॉल करते समय, IllegalStateException को ठीक किया गया. b/79632233

  • ऐनिमेशन का इस्तेमाल करते समय फ़्लिकरिंग की समस्या को ठीक करने के लिए, नेविगेशन अब Support Library 27.1.1 पर निर्भर करता है. b/80160903

  • चाइल्ड फ़्रैगमेंट के तौर पर defaultNavHost="true" का इस्तेमाल करते समय, IllegalArgumentException को ठीक किया गया. b/79656847

  • NavDeepLinkBuilder का इस्तेमाल करते समय StackOverflowError को ठीक किया गया. b/109653065

  • नेस्ट किए गए ग्राफ़ पर वापस जाने पर आने वाली IllegalArgumentException गड़बड़ी को ठीक किया गया. b/80453447

  • launchSingleTop का इस्तेमाल करते समय, ओवरलैप होने वाले फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया. b/79407969

  • नेविगेशन अब नेस्ट किए गए ग्राफ़ के लिए, सही सिंथेटिक बैक स्टैक बनाता है. b/79734195

  • नेस्ट किए गए ग्राफ़ को MenuItem के तौर पर इस्तेमाल करने पर, NavigationUI अब सही आइटम को हाइलाइट करेगा. b/109675998

एपीआई में हुए बदलाव

  • NavOptions में ऐक्शन के लिए clearTask एट्रिब्यूट और उससे जुड़े एपीआई का इस्तेमाल बंद कर दिया गया है. b/80338878

  • NavOptions में, कार्रवाइयों के लिए launchDocument एट्रिब्यूट और उससे जुड़े एपीआई का इस्तेमाल बंद कर दिया गया है. b/109806636

वर्शन 1.0.0-alpha01

8 मई, 2018

नेविगेशन, इन-ऐप्लिकेशन नेविगेशन बनाने के लिए फ़्रेमवर्क उपलब्ध कराता है. यह शुरुआती रिलीज़ 1.0.0-alpha01 है.