नेविगेशन

नेविगेशन, Android ऐप्लिकेशन में 'डेस्टिनेशन' के बीच नेविगेट करने के लिए एक फ़्रेमवर्क है. यह एक जैसा एपीआई उपलब्ध कराता है. इससे कोई फ़र्क़ नहीं पड़ता कि डेस्टिनेशन को फ़्रैगमेंट, ऐक्टिविटी या अन्य कॉम्पोनेंट के तौर पर लागू किया गया है.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा वर्शन
16 जुलाई, 2025 2.9.2 - - -

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

Navigation पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.

अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle फ़ाइल में उन आर्टफ़ैक्ट की डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.9.2"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

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

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

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

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.9.2"

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

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

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

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

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

Safe Args

To add Safe Args to your project, include the following classpath in your top level build.gradle file:

Groovy

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

Kotlin

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

You must also apply one of two available plugins.

To generate Java language code suitable for Java or mixed Java and Kotlin modules, add this line to your app or module's build.gradle file:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

Alternatively, to generate Kotlin code suitable for Kotlin-only modules add:

Groovy

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

Kotlin

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

You must have android.useAndroidX=true in your gradle.properties file as per Migrating to AndroidX.

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

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

सुझाव/राय दें या शिकायत करें

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

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

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

वर्शन 2.9

वर्शन 2.9.2

16 जुलाई, 2025

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

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

  • एंट्री के ऊपर मौजूद डायलॉग को खारिज करने पर, एंट्री के फिर से शुरू न होने की समस्या ठीक की गई है (Idb20e, b/418746335)
  • कस्टम NavTypes का इस्तेमाल करते समय, टाइप सेफ़ रास्तों के साथ SavedStateHandle की जांच करते समय होने वाली MissingFieldException गड़बड़ी को ठीक किया गया. (I2f843, b/421002511)

वर्शन 2.9.1

2 जुलाई, 2025

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

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

  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से सिंगल टॉप का इस्तेमाल करके इंस्टैंशिएट किए गए NavEntries, अपनी Lifecycle.State में CREATED से आगे नहीं बढ़ पाते थे. (I043ba, b/421095236)

वर्शन 2.9.0

7 मई, 2025

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

2.8.0 के बाद हुए अहम बदलाव

  • नेविगेशन से जुड़ी Safe Args कार्रवाइयों को अब @CheckResult एनोटेशन के साथ जनरेट किया जाता है, ताकि यह पक्का किया जा सके कि उनका इस्तेमाल किया जा रहा है.

SupportingPane इंटरफ़ेस

  • कस्टम नेविगेटर अब अपने डेस्टिनेशन को SupportingPane इंटरफ़ेस के तौर पर मार्क कर सकते हैं. इससे NavController को पता चलता है कि इन डेस्टिनेशन को अन्य डेस्टिनेशन के साथ दिखाया जाएगा. इस इंटरफ़ेस का इस्तेमाल करके, एक साथ कई डेस्टिनेशन RESUMED किए जा सकते हैं.

Compose Kotlin Multiplatform

  • नेविगेशन में अब एक नया सामान्य NavController.handleDeepLink() फ़ंक्शन उपलब्ध है. यह Intent के बजाय NavDeepLinkRequest लेता है. इससे Android के अलावा अन्य प्लैटफ़ॉर्म को डीप लिंक को सही तरीके से मैनेज करने की अनुमति मिलती है. धन्यवाद कॉन्स्टेंटिन त्स्खोवरेबोव!
  • नेविगेशन में अब NavUri की सुविधा उपलब्ध है. यह एक नया कॉमन पार्सर फ़ंक्शन है. यह अन्य प्लैटफ़ॉर्म पर Android के यूआरआई के साथ काम करने वाला एपीआई है. इससे, प्लैटफ़ॉर्म से अलग यूआरआई बनाया जा सकता है. धन्यवाद कॉन्स्टेंटिन त्स्खोवरेबोव!

टाइप सेफ़ फ़ंक्शन

  • टाइप सेफ़ एपीआई, जिन्हें पहले सिर्फ़ reified तरीकों से ऐक्सेस किया जा सकता था. जैसे, composable<YourScreen> के अब नॉन-रीफ़ाइड वर्शन उपलब्ध हैं. ये सीधे तौर पर KClass इंस्टेंस लेते हैं.
  • नेविगेशन टाइप की सुरक्षा अब वैल्यू क्लास को रूट के तौर पर या रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की सुविधा देती है.

वर्शन 2.9.0-rc01

23 अप्रैल, 2025

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

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

  • Jetpack Navigation से, Android के अलावा अन्य प्लैटफ़ॉर्म के सभी टारगेट हटा दिए गए हैं, क्योंकि वे टारगेट काम नहीं करते. अब अलग-अलग प्लैटफ़ॉर्म के लिए स्टब उपलब्ध कराए गए हैं.(I2877d)

वर्शन 2.9.0-beta01

9 अप्रैल, 2025

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

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

  • parseStringAsNavUri के सामान्य एपीआई को NavUri फ़ैक्ट्री फ़ंक्शन में बदल दिया गया है. यह फ़ंक्शन एक स्ट्रिंग लेता है. (I4db6e, b/403616316)

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

  • यह लाइब्रेरी अब Kotlin 2.0 भाषा के लेवल को टारगेट करती है. इसके लिए, KGP 2.0.0 या इसके बाद का वर्शन ज़रूरी है. (Idb6b5)

वर्शन 2.9.0-alpha09

26 मार्च, 2025

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

नई सुविधाएं

  • navigation-testing मॉड्यूल अब Android के साथ-साथ डेस्कटॉप, Linux, macOS, और iOS पर भी काम करता है. (I2b770, b/398265336)
  • NavType की सुविधा अब Android के साथ-साथ डेस्कटॉप, Linux, macOS, और iOS पर भी उपलब्ध है. (I297d8)

वर्शन 2.9.0-alpha08

12 मार्च, 2025

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

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

  • नेविगेशन 2.8.9: नेविगेशन 2.8.8 में मिली रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या में, डीप लिंक को मैच माना जाने के लिए, डीप लिंक के अनुरोध या इंटेंट के सभी फ़ील्ड से सटीक तौर पर मेल खाना ज़रूरी था. इस वजह से, ऐसे डीप लिंक काम नहीं कर रहे हैं जिनमें फ़ील्ड के कुछ हिस्से मैच होते हैं और अन्य फ़ील्ड मैच नहीं होते. (Ie5e36, b/399826566)

बाहरी योगदान

  • NavUri बनाने के लिए, नया सामान्य पार्सर फ़ंक्शन. धन्यवाद कॉन्स्टेंटिन त्स्खोवरेबोव! (If0a6a)

वर्शन 2.9.0-alpha07

26 फ़रवरी, 2025

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

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

  • उस समस्या को ठीक कर दिया गया है जिसमें पॉप-अप को saveState करने पर, सेव किया गया स्टेट नल हो जाता था. इससे, ऐप्लिकेशन को वापस लाने पर क्रैश होने की समस्या हो सकती थी. (I9f3e8, b/395091644)
  • Navigation 2.8.8 से: NavDeepLink मैचिंग की समस्या ठीक कर दी गई है. इस समस्या में, यूआरआई, ऐक्शन, और माइम के आधार पर डीपलिंक और डीपलिंक अनुरोध का सटीक मिलान नहीं हो पाता था. अगर सिर्फ़ एक या दो फ़ील्ड मैच होते हैं, तो अब मैचिंग की अनुमति नहीं है. (I3b029, b/395712033)
  • Navigation 2.8.8 में यह समस्या ठीक की गई है: वाइल्डकार्ड पाथ वाले रूट, जोड़े गए डीपलिंक से मैच नहीं होते थे (I7ea92, b/389970341)

बाहरी योगदान

  • नेविगेशन-कॉमन, नेविगेशन-रनटाइम, और नेविगेशन-कंपोज़ एपीआई को सामान्य प्लैटफ़ॉर्म पर एक्सट्रैक्ट करें. धन्यवाद कॉन्स्टेंटिन त्स्खोवरेबोव! (I1e626, Ica76f, Idf479)

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

  • b/395712033 को ठीक करने के लिए किए जा रहे काम की वजह से, डीपलिंक के लिए यह ज़रूरी है कि उनमें डीपलिंक के अनुरोध और/या Intent के सभी फ़ील्ड मौजूद हों. डीप लिंक सिर्फ़ उन फ़ील्ड से मैच होने चाहिए जो उनमें मौजूद हैं. साथ ही, जो फ़ील्ड शामिल नहीं हैं उन्हें अनदेखा किया जाना चाहिए. इस समस्या को b/399826566 के तहत, आने वाले वर्शन में ठीक कर दिया गया है.

वर्शन 2.9.0-alpha06

12 फ़रवरी, 2025

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

नई सुविधाएं

  • नेविगेशन से जुड़ी Safe Args कार्रवाइयों को अब @CheckResult एनोटेशन के साथ जनरेट किया जाता है, ताकि यह पक्का किया जा सके कि उनका इस्तेमाल किया जा रहा है. (I14d4c, b/356323084)

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

  • NavController में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें बैकस्टैक की स्थितियों को सूची में सेव किए जाने पर, उन्हें गलत तरीके से ऐरे में वापस लाने की कोशिश की जाती थी. (Idfb9b)
  • नेविगेशन 2.8.7 से: नेविगेशन Safe Args अब कंपोज़ेबल डेस्टिनेशन के साथ काम करता है. (I35320, b/362791955)

वर्शन 2.9.0-alpha05

29 जनवरी, 2025

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

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

  • Navigation Compose का इस्तेमाल करते समय, स्केल ऐनिमेशन के अचानक दिखने की समस्या को ठीक किया गया है. (I480f4, b/353294030)
  • नेविगेशन 2.8.6 से: NavDestination एक्सएमएल के ज़रिए दिए गए लेबल, NavType.get के ज़रिए पार्स किए जाएंगे. इससे यह पक्का किया जा सकेगा कि कस्टम NavType लॉजिक का पालन किया गया है. (I7ec2f, b/388100796)
  • नेविगेशन 2.8.6 से: dataPattern की मदद से किसी गतिविधि पर नेविगेट करते समय, ActivityNavigator अब आर्ग्युमेंट की वैल्यू को आर्ग्युमेंट के NavType के साथ एन्कोड करने की कोशिश करेगा. (I16376, b/383616432)
  • नेविगेशन 2.8.5: नेविगेशन कंपोज़ का इस्तेमाल करते समय, स्केल ऐनिमेशन के अचानक दिखने की समस्या को ठीक किया गया है. यह समस्या तब होती थी, जब मौजूदा ऐनिमेशन खत्म होने वाले फ़्रेम में ही नेविगेट करने के लिए कॉल किया जाता था. (I26cb1, b/353294030)

वर्शन 2.9.0-alpha04

11 दिसंबर, 2024

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

नई सुविधाएं

नीचे दी गई टेबल में, रीफ़ाइड और KClass एपीआई दिए गए हैं.

रीफ़ाइड KClass
composable<TestClass> { } composable(TestClass::class) { }
navigation<NestedGraph>(startDestination = TestClass::class) navigation(route = NestedGraph::class, startDestination = TestClass::class)
dialog<TestClass> {} dialog(TestClass::class) {}
navDeepLink<TestClass>(baseUri) navDeepLink(TestClass::class, baseUri)
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri)
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { }
navController.getBackStackEntry<TestClass>() navController.getBackStackEntry(TestClass::class)
navController.popBackStack<TestClass>(true) navController.popBackStack(TestClass::class, true)
navController.clearBackStack<TestClass>() navController.clearBackStack(TestClass::class)
NavOptions.setPopUpTo<TestClass>() NavOptions.setPopUpTo(TestClass::class)
navOptions { popUpTo<TestClass> {...} } navOptions { popUpTo(TestClass::class) {...} }
NavGraph.setStartDestination<TestClass>() NavGraph.setStartDestination(TestClass::class)
NavGraph.findNode<TestClass>() NavGraph.findNode(TestClass::class)
backStackEntry.toRoute<TestClass>() backStackEntry.toRoute(TestClass::class)
savedStateHandle.toRoute<TestClass>() savedStateHandle.toRoute(TestClass::class)

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

  • टाइप की सुरक्षा के लिए, Kotlin के लिए खास तौर पर तैयार किया गया NavGraph.setStartDestination ओवरलोड, Java सोर्स से छिपा होता है. (Ic640c, b/364634035)

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

  • नेविगेशन 2.8.5 से जुड़ी समस्या ठीक की गई: इस समस्या में, बैक स्टैक को एक एंट्री पर पॉप डाउन करने पर, NavHost, PredictiveBackHandler के अंदर एक अपवाद थ्रो कर सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर किए जाते थे. (I1a429, b/375343407)
  • नेविगेशन 2.8.5: ग्राफ़ के startDestination को अपडेट करते समय, NavDestination NullPointerException को ठीक किया गया. (I99421, b/361560785)

बाहरी योगदान

  • नेविगेशन 2.8.5 से: नेविगेशन टाइप की सुरक्षा अब List<Enum> को किसी रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की सुविधा देती है. इसके लिए, किसी कस्टम NavType की ज़रूरत नहीं होती. धन्यवाद Csaba Kozák! (GH-725, b/375559962)

वर्शन 2.9.0-alpha03

13 नवंबर, 2024

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

नई सुविधाएं

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

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

  • हमने उस ConcurrentModificationException को ठीक किया है जो तब हो सकता है, जब NavBackStackEntry से जुड़ा कोई LifecycleObserver, बैक स्टैक में बदलाव को ट्रिगर करता है. ऐसा तब होता है, जब होस्ट LifecycleOwner, जैसे कि ऐक्टिविटी या फ़्रैगमेंट, अपने लाइफ़साइकल की स्थिति बदलता है. (Ia9494)

वर्शन 2.9.0-alpha02

30 अक्टूबर, 2024

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

बाहरी योगदान

  • NavController.handleDeepLink(request: NavDeepLinkRequest) का नया तरीका. धन्यवाद कॉन्स्टेंटिन त्स्खोवरेबोव! (I3e228)

वर्शन 2.9.0-alpha01

16 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

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

  • 'Enum क्लास नहीं मिली' अपवाद को अपडेट किया गया है, ताकि अगर मिनीफ़ाइड बिल्ड में Enum क्लास मिट जाती है, तो @Keep एनोटेशन का इस्तेमाल करने का सुझाव दिया जा सके. (I90e79, b/358137294)

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

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

वर्शन 2.8

वर्शन 2.8.9

12 मार्च, 2025

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

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

  • Navigation 2.8.8 में मिली रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या की वजह से, डीप लिंक के अनुरोध या इंटेंट के सभी फ़ील्ड से पूरी तरह मेल खाने वाले डीप लिंक को ही मैच माना जाता था. इस वजह से, ऐसे डीप लिंक काम नहीं कर रहे हैं जिनमें फ़ील्ड के कुछ हिस्से मैच होते हैं और अन्य फ़ील्ड मैच नहीं होते. (Ie5e36, b/399826566)

वर्शन 2.8.8

26 फ़रवरी, 2025

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

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

  • उस गड़बड़ी को ठीक किया गया है जिसमें वाइल्डकार्ड पाथ वाले रूट, जोड़े गए डीपलिंक से मेल नहीं खाते थे. (I7ea92, b/389970341)
  • NavDeepLink मैचिंग की समस्या ठीक कर दी गई है. इसमें यूआरआई, ऐक्शन, और माइम के हिसाब से डीपलिंक और डीपलिंक के अनुरोध का पूरी तरह से मेल खाना ज़रूरी है. अगर सिर्फ़ एक या दो फ़ील्ड मैच होते हैं, तो अब मैचिंग की अनुमति नहीं है. (I3227f, b/395712033)

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

  • b/395712033 को ठीक करने के लिए किए जा रहे काम की वजह से, डीपलिंक के लिए यह ज़रूरी है कि उनमें डीपलिंक के अनुरोध और/या Intent के सभी फ़ील्ड मौजूद हों. डीप लिंक सिर्फ़ उन फ़ील्ड से मैच होने चाहिए जो उनमें मौजूद हैं. साथ ही, जो फ़ील्ड शामिल नहीं हैं उन्हें अनदेखा किया जाना चाहिए. इस समस्या को b/399826566 के तहत, आने वाले वर्शन में ठीक कर दिया गया है.

वर्शन 2.8.7

12 फ़रवरी, 2025

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

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

  • Navigation Safe Args अब कंपोज़ेबल डेस्टिनेशन के साथ काम करता है. (I35320, b/362791955)

वर्शन 2.8.6

29 जनवरी, 2025

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

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

  • एक्सएमएल के ज़रिए दिए गए NavDestination लेबल, NavType.get के ज़रिए पार्स किए जाएंगे. इससे यह पक्का किया जा सकेगा कि कस्टम NavType लॉजिक का पालन किया गया है. (Id366d, b/388100796)
  • dataPattern की मदद से गतिविधि पर नेविगेट करते समय, ActivityNavigator अब आर्ग्युमेंट की वैल्यू को आर्ग्युमेंट के NavType के साथ एन्कोड करने की कोशिश करेगा. (I1a71d, b/383616432)

वर्शन 2.8.5

11 दिसंबर, 2024

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

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

  • उस समस्या को ठीक किया गया है जिसमें बैक स्टैक को एक एंट्री तक कम करने पर, NavHost के अंदर PredictiveBackHandler एक अपवाद दे सकता था. ऐसा तब होता था, जब एक ही फ़्रेम में सिस्टम बैक ट्रिगर होता था. (I1a429, b/375343407)
  • ग्राफ़ के startDestination को अपडेट करते समय, NavDestination NullPointerException को ठीक किया गया. (I99421, b/361560785)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से, नेविगेशन कंपोज़ का इस्तेमाल करते समय और उसी फ़्रेम में नेविगेट करने के लिए कॉल करते समय, अनचाहा स्केल ऐनिमेशन दिखता था जिसमें मौजूदा ऐनिमेशन खत्म हो रहा होता था. (I26cb1, b/353294030)
  • हमने उस ConcurrentModificationException को ठीक किया है जो तब हो सकता है, जब NavBackStackEntry से जुड़ा कोई LifecycleObserver, बैक स्टैक में बदलाव को ट्रिगर करता है. ऐसा तब होता है, जब होस्ट LifecycleOwner, जैसे कि ऐक्टिविटी या फ़्रैगमेंट, अपने लाइफ़साइकल की स्थिति बदलता है. (Ia9494)

बाहरी योगदान

  • नेविगेशन टाइप की सुरक्षा से जुड़ी सुविधा अब List<Enum> को किसी रूट के आर्ग्युमेंट टाइप के तौर पर इस्तेमाल करने की अनुमति देती है. इसके लिए, किसी कस्टम NavType की ज़रूरत नहीं होती. धन्यवाद Csaba Kozák! (GH-725, b/375559962)

वर्शन 2.8.4

13 नवंबर, 2024

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

नई सुविधाएं

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

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

वर्शन 2.8.3

16 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.2

2 अक्टूबर, 2024

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

नई सुविधाएं

  • नेविगेशन टाइप सेफ़्टी अब सीरियलाइज़ किए जा सकने वाले उन क्लास के साथ काम करती है जिनमें Double, Double?, DoubleArray, DoubleArray?, List<Double>, और List<Double>? शामिल हैं. इसके लिए, किसी कस्टम NavType की ज़रूरत नहीं होती. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)

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

  • नेविगेशन के किसी रूट के तर्क को NavType पर मैप न कर पाने पर, गड़बड़ी के मैसेज को बेहतर बनाया गया है. नए गड़बड़ी के मैसेज में तर्क का नाम, तर्क का पूरा क्वालिफ़ाइड नाम, और रूट का पूरा क्वालिफ़ाइड नाम शामिल होगा. (Id8416, b/346264232)

वर्शन 2.8.1

18 सितंबर, 2024

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

नई सुविधाएं

  • एक नया लिंट नियम जोड़ा गया है. इससे यह पक्का किया जा सकेगा कि टाइप-सेफ़ एपीआई का इस्तेमाल करके popBackStack करने की कोशिश करते समय, popBackStack फ़ंक्शन का इस्तेमाल किया गया हो. यह फ़ंक्शन, रीफ़ाइड क्लास टाइप लेता है. (Ief161, b/358095343)

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

  • नेविगेशन के लिए अब यह ज़रूरी है कि NavGraph के startDestination को पास किए गए रूट में, सभी ज़रूरी आर्ग्युमेंट की वैल्यू शामिल हों. इनमें वे आर्ग्युमेंट भी शामिल हैं जिन्हें शून्य नहीं किया जा सकता और जिनकी कोई डिफ़ॉल्ट वैल्यू नहीं होती. (I18e74, b/362594265)
  • Navigation safe args में, नॉन-नलेबल स्ट्रिंग के लिए सहायता जोड़ी गई है. इससे "null" वैल्यू को पार्स किया जाएगा और बंडल में सेव किया जाएगा. यह मौजूदा व्यवहार से अलग है, जहां "null" वैल्यू को null ऑब्जेक्ट में पार्स किया जाता है. यह बदलाव सिर्फ़ नॉन-नलेबल स्ट्रिंग टाइप पर लागू होता है. जिन स्ट्रिंग में नल वैल्यू हो सकती है उनमें कोई बदलाव नहीं होता. (I08b4a, b/348936238)
  • अब NavDestination को डीपलिंक नहीं किया जा सकता. हालांकि, डेस्टिनेशन में साफ़ तौर पर जोड़े गए डीप लिंक के ज़रिए ऐसा किया जा सकता है. इसका यह भी मतलब है कि नेविगेट करने के लिए, सिर्फ़ उस फ़ंक्शन का इस्तेमाल किया जा सकता है जो स्ट्रिंग के तौर पर रूट लेता है. इस अपडेट में, एक ऐसी समस्या को ठीक किया गया है जिसकी वजह से, किसी सुरक्षित डेस्टिनेशन से डीप लिंक करना मुमकिन हो जाता था. (Ie30e6)

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

  • नेविगेशन सेफ़ आर्ग्युमेंट अब Kotlin 2.X के बजाय Kotlin 1.9.24 पर निर्भर करता है. इससे यह पक्का होता है कि डेवलपर को अपडेट करने के लिए मजबूर नहीं किया जाएगा. (a4129a)
  • नेविगेशन कंपोज़ अब कंपोज़ 1.7.2 पर निर्भर करता है.

वर्शन 2.8.0

4 सितंबर, 2024

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

2.7.0 के बाद हुए ज़रूरी बदलाव

Navigation Kotlin DSL में टाइप-सेफ़्टी

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

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

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

ज़्यादा जानकारी के लिए, Navigation Compose meet Type Safety ब्लॉग पोस्ट देखें.

Navigation Compose Predictive Back

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

Navigation Fragment Composable

  • एक नया navigation-fragment-compose आर्टफ़ैक्ट जोड़ा गया है. इसमें NavHostFragment का ComposableNavHostFragment विकल्प शामिल है. इसकी मदद से, अपनी नेविगेशन एक्सएमएल फ़ाइलों में कंपोज़ेबल डेस्टिनेशन जोड़े जा सकते हैं. हर composable डेस्टिनेशन को टॉप-लेवल, नो आर्ग्युमेंट @Composable तरीके के तौर पर दिखाया जाना चाहिए. इसके पूरी तरह क्वालिफ़ाइड नाम का इस्तेमाल, हर डेस्टिनेशन पर android:name एट्रिब्यूट के तौर पर किया जाता है. इन डेस्टिनेशन में से किसी एक पर नेविगेट करते समय, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बनाया जाता है.
  // In HomeScreen.kt
  @Composable
  fun HomeScreen() {
    // Your Composable content here
  }

  // In your navigation.xml
  <composable
    android:id="@+id/home_screen"
    android:name="com.example.HomeScreenKt\$HomeScreen" />

अन्य बदलाव

  • Navigation Compose अब Compose 1.7.0 पर निर्भर करता है.
  • नेविगेशन में अब एक नई CollectionNavType<T> क्लास उपलब्ध है. यह NavType<T> की सबक्लास है. इसका इस्तेमाल कलेक्शन पर आधारित आर्ग्युमेंट के लिए किया जाता है. जैसे, सूची, ऐरे, मैप. डिफ़ॉल्ट NavType ऐरे (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType, और StringArrayType) अब इस नई क्लास से इनहेरिट होते हैं.
  • NavType में अब Int, String, Boolean, Float, और Long की सूचियों के लिए, पहले से मौजूद सहायता उपलब्ध है.

वर्शन 2.8.0-rc01

21 अगस्त, 2024

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

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

  • टाइप सेफ़ आर्ग्युमेंट के तौर पर टॉप लेवल की Enum क्लास पास करने पर, नेविगेशन क्रैश होने की समस्या ठीक की गई. (I0ba76, b/358137294)
  • Navigation 2.8 अब एसडीके 34 के साथ सही तरीके से काम करता है. साथ ही, AndroidX की बाकी लाइब्रेरी के साथ 2.9 वर्शन रिलीज़ होने तक, यह एसडीके 35 पर स्विच नहीं करेगा. (b/358798728)

वर्शन 2.8.0-beta07

7 अगस्त, 2024

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

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

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

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

  • डुप्लीकेट या शेयर की गई मंज़िलों पर नेविगेट करते समय, नेविगेशन की सुविधा, ग्राफ़ में मौजूद मौजूदा जगह से सबसे मिलती-जुलती मंज़िल को प्राथमिकता देगी. (Ic89a4, b/352006850)
  • सुरक्षित आर्ग्युमेंट में नेविगेशन के लिए, अब एक नया NavType.EnumType जोड़ा गया है. इसका मतलब है कि अब Enum टाइप के लिए, कस्टम NavType की ज़रूरत नहीं है. ध्यान दें कि Enum का SerialName, डिफ़ॉल्ट फ़ुल क्वालिफ़ाइड नाम होना चाहिए. (I66d22, b/346475493)
  • Safe Args में नेविगेशन की सुविधा के लिए, नल वैल्यू वाले आर्ग्युमेंट टाइप के लिए पहले से मौजूद सहायता जोड़ी गई है. इनमें Int?,Long?, Float?, Boolean?, और Enum<*>? शामिल हैं. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • अगर NavGraph को पास किया गया startDestination रूट, startDestination.route के बराबर है, तो NavGraph का startDestination अब डिफ़ॉल्ट आर्ग्युमेंट वैल्यू का इस्तेमाल करेगा. (I13762, b/354046047)

वर्शन 2.8.0-beta06

24 जुलाई, 2024

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

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

  • उस समस्या को ठीक किया गया है जिसमें WrongStartDestinationType लिंट जांच, पास किए गए क्लास टाइप पर कंपैनियन ऑब्जेक्ट की जांच नहीं करती थी. इस वजह से, लिंट गड़बड़ी का पता नहीं लगा पाता था. (I92b09)

वर्शन 2.8.0-beta05

10 जुलाई, 2024

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

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

  • नेस्ट किए गए NavGraphs एक ही startDestination रूट शेयर करने पर, singleTop नेविगेशन क्रैश होने की समस्या ठीक की गई. (I17b94, b/294408596)

वर्शन 2.8.0-beta04

26 जून, 2024

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

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

  • नेविगेशन अब पाथ आर्ग्युमेंट में खाली स्ट्रिंग के साथ नेविगेट करने की सुविधा देता है. (Ic5dbd, b/339481310)
  • @Serializable(with =...) के ज़रिए क्लास फ़ील्ड पर सीधे तौर पर एलान किए गए कस्टम सीरियलाइज़र के लिए, गड़बड़ी के मैसेज को बेहतर बनाया गया है. इससे यह साफ़ तौर पर बताया जा सकेगा कि फ़िलहाल यह सुविधा काम नहीं करती. (I052b0, b/341319151)
  • SavedStateHandleFactory अब test api का इस्तेमाल, Android के अलावा अन्य टेस्ट में भी किया जा सकता है. हालांकि, इसके लिए Robolectric को Bundles के साथ आर्ग्युमेंट पार्स करने की सुविधा देनी होगी. (I76cdc, b/340966212)
  • Compose में टाइप-सेफ़ नेविगेशन का इस्तेमाल करते समय, प्रोसेस बंद होने के बाद ऐप्लिकेशन को फिर से शुरू करने पर, स्थिति को वापस लाने के दौरान क्रैश होने की समस्या ठीक की गई. (Ia8f38, b/341801005)
  • Navigation Compose में एक समस्या ठीक की गई है. इसमें, अनुमानित बैक जेस्चर को रद्द करने के बाद, उपयोगकर्ता जिस NavBackStackEntry पर वापस जाता है वह कभी भी RESUMED लाइफ़साइकल की स्थिति में वापस नहीं आता है. इससे यह भी पक्का होता है कि फ़्लिंग करने के बाद, वापस आने वाली जगह पर सही तरीके से ऐनिमेशन हो. ऐसा न हो कि वह जगह तुरंत अपनी जगह पर वापस आ जाए. (I97a0c, b/346608857)
  • Navigation Compose के साथ Predictive back का इस्तेमाल करने पर, पॉप किए जा रहे डेस्टिनेशन का अब सही z-ऑर्डर होगा. साथ ही, यह आने वाले डेस्टिनेशन के ऊपर सही तरीके से ऐनिमेशन करेगा. (I2077b, b/345993681)

वर्शन 2.8.0-beta03

12 जून, 2024

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

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

  • CollectionNavType में नया ऐब्स्ट्रैक्ट emptyCollection() तरीका है. इसे तब बदलें, जब आर्ग्युमेंट के तौर पर पास किया गया कलेक्शन खाली हो. (Ie4d84, b/341723133)

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

  • NavType.serializeAsValue और serializeAsValues के बारे में दस्तावेज़ जोड़ा गया है, ताकि यह हाइलाइट किया जा सके कि फ़ाइनल आउटपुट को यूआरआई में कोड किया जाना चाहिए. (Ida6bd, b/344943214)
  • शून्य CollectionNavType आर्ग्युमेंट के साथ toRoute<T> को कॉल करने पर, क्रैश होने की समस्या को ठीक किया गया. शून्य CollectionNavType के साथ नेविगेट करने पर, आउटपुट आर्ग्युमेंट, आपकी सीरियलाइज़ की जा सकने वाली क्लास पर घोषित की गई डिफ़ॉल्ट वैल्यू होगी. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो यह emptyCollection() की रिटर्न वैल्यू होगी. (I84158, Id630f, b/342672856)

वर्शन 2.8.0-beta02

29 मई, 2024

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

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

  • शून्य हो सकने वाले कस्टम NavType के साथ NavBackStackEntry.toRoute का इस्तेमाल करते समय होने वाली ClassCastException क्रैश की समस्या ठीक की गई. (I1c29b, b/342239473)
  • नेविगेशन के बैक स्टैक की स्थिति को वापस लाने से जुड़ी समस्याओं को ठीक किया गया है. ये समस्याएं तब होती हैं, जब किसी ऐसी बैक स्टैक एंट्री को वापस लाने की कोशिश की जाती है जिसे मौजूदा डेस्टिनेशन से आईडी के ज़रिए ऐक्सेस नहीं किया जा सकता. रास्तों को आईडी के ज़रिए बैकअप दिया जाता है. इसलिए, रास्तों के साथ बनाए गए डेस्टिनेशन पर भी असर पड़ा. इससे clearBackStack() को कॉल करने पर होने वाली क्रैश की समस्या भी ठीक हो जाती है. इस समस्या की वजह भी यही थी. (I423c3, b/339908057)

वर्शन 2.8.0-beta01

14 मई, 2024

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

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

  • SavedStateHandle.toRoute() अब कस्टम आर्ग्युमेंट टाइप के लिए, typeMap पैरामीटर लेता है. (Ie39fb, b/339026523)
  • navigation-testing में एक टेस्ट एपीआई जोड़ा गया है, ताकि Kotlin Serializable ऑब्जेक्ट से SavedStateHandle बनाया जा सके. (Id4867, b/339080702)

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

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

वर्शन 2.8.0-alpha08

1 मई, 2024

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

Navigation Compose में Safe Args का इस्तेमाल करना

इस सुविधा में Kotlin Serialization का इस्तेमाल किया जाता है. इससे, टाइप सेफ़ ऑब्जेक्ट और डेटा क्लास के ज़रिए, नेविगेशन ग्राफ़ में डेस्टिनेशन तय किए जा सकते हैं:

  // Define a home destination that doesn't take any arguments
  @Serializable
  object Home

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

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

ज़्यादा जानकारी के लिए, Navigation Compose meet Type Safety ब्लॉग पोस्ट देखें.

नई सुविधाएं

  • navigation-fragment-compose आर्टफ़ैक्ट अब ComposableFragment में कंपोज़ेबल तरीकों के लिए, LocalFragment कंपोज़िशन उपलब्ध कराता है. (If35e5)
  • NavType में अब Int, String, Boolean, Float, और Long की सूचियों के लिए, पहले से मौजूद सहायता उपलब्ध है. (I4b6dd, Ia914c, b/188693139)

वर्शन 2.8.0-alpha07

17 अप्रैल, 2024

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

नई सुविधाएं

  • यह एक नया navigation-fragment-compose आर्टफ़ैक्ट जोड़ता है. इसमें NavHostFragment का ComposableNavHostFragment विकल्प शामिल होता है. इससे, नेविगेशन एक्सएमएल फ़ाइलों में composable डेस्टिनेशन जोड़े जा सकते हैं. हर composable डेस्टिनेशन को टॉप-लेवल, नो आर्ग्युमेंट @Composable तरीके के तौर पर दिखाया जाना चाहिए. इसके पूरी तरह क्वालिफ़ाइड नाम का इस्तेमाल, हर डेस्टिनेशन पर android:name एट्रिब्यूट के तौर पर किया जाता है. इन डेस्टिनेशन में से किसी एक पर नेविगेट करते समय, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बनाया जाता है. (I0ef2e, b/265480755)

    // In HomeScreen.kt
    @Composable
    fun HomeScreen() {
      // Your Composable content here
    }
    
    // In your navigation.xml
    <composable
      android:id="@+id/home_screen"
      android:name="com.example.HomeScreenKt\$HomeScreen" />
    

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

  • Kotlin Serialization पर आधारित अप्रोच का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता जारी रखी गई. ये एपीआई अभी तैयार नहीं हुए हैं और इन्हें ExperimentalSafeArgsApi एनोटेशन के साथ मार्क किया गया है. आने वाले समय में, जब एपीआई का पूरा वर्शन रिलीज़ हो जाएगा, तब इस एनोटेशन को हटा दिया जाएगा. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)

वर्शन 2.8.0-alpha06

3 अप्रैल, 2024

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

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

  • Kotlin Serialization पर आधारित अप्रोच का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता उपलब्ध कराई गई है. ये एपीआई अभी तैयार नहीं हुए हैं और इन्हें ExperimentalSafeArgsApi एनोटेशन के साथ मार्क किया गया है. आने वाले समय में, जब एपीआई का पूरा वर्शन रिलीज़ हो जाएगा, तब इस एनोटेशन को हटा दिया जाएगा. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)

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

  • NavHost अब contentAlignment आर्ग्युमेंट के लिए, Alignment.TopStart का इस्तेमाल डिफ़ॉल्ट तौर पर करता है. इससे यह AnimatedContent के डिफ़ॉल्ट सेटिंग के मुताबिक हो जाता है. साथ ही, इससे सेंटर ट्रांज़िशन से अनचाहे तरीके से स्केल होने की कुछ समस्याएं ठीक हो जाती हैं. (I09e72, b/330111602)
  • Navigation Compose का इस्तेमाल करते समय, अनुमानित बैक जेस्चर को फ़्लिक करने पर, NavHost अब तुरंत खत्म होने के बजाय, कस्टम ट्रांज़िशन को सही तरीके से पूरा करेगा. (I99017, b/327292110)

वर्शन 2.8.0-alpha05

20 मार्च, 2024

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

नई सुविधाएं

  • अब defaultValue पर भरोसा किए बिना, startDestination के रूट में सीधे तौर पर NavGraph के startDestination को आर्ग्युमेंट पास किए जा सकते हैं. यह नेस्ट किए गए NavGraph startDestinations पर भी लागू होता है. (I0e0b5, b/109505019, b/188693139)

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

  • नया ऐब्स्ट्रैक्ट CollectionNavType<T> क्लास जोड़ा गया है. यह NavType<T> का सबक्लास है. इसका इस्तेमाल कलेक्शन पर आधारित आर्ग्युमेंट के लिए किया जाता है. जैसे, सूची, ऐरे, मैप. (Ic6d63, b/188693139)
  • डिफ़ॉल्ट NavType ऐरे (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType, और StringArrayType) अब CollectionNavType टाइप (Idcf79, b/188693139) के हैं
  • NavType अब एक नया ओपन valueEquals एपीआई उपलब्ध कराता है. यह एपीआई यह तय करता है कि एक ही टाइप की दो वैल्यू एक-दूसरे के बराबर हैं या नहीं. (I6cb97, b/327229511)

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

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

वर्शन 2.8.0-alpha03

21 फ़रवरी, 2024

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

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

  • NavBackStackEntry.savedStateHandle को अब @MainThread के तौर पर मार्क किया गया है, क्योंकि यह ऐसे कोड का इस्तेमाल करता है जिसे मुख्य थ्रेड पर होना ज़रूरी है. (Ibb988, b/299523245)

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

  • नेविगेशन में मौजूद एक समस्या को ठीक किया गया है. इस समस्या की वजह से, NavGraph ViewModels DESTROYED बहुत जल्द बंद हो जाते थे, क्योंकि इससे जुड़ी एंट्री का ViewModel सेव किए गए स्टेट का हिस्सा नहीं था. (Ib6bb7, b/317581849)

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

वर्शन 2.8.0-alpha02

7 फ़रवरी, 2024

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.7.7

वर्शन 2.7.7

7 फ़रवरी, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.7.6

वर्शन 2.7.6

13 दिसंबर, 2023

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

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

  • NavGraph equals() फ़ंक्शन अब सिर्फ़ कॉल करने वाले ग्राफ़ के बजाय, दूसरे ग्राफ़ के नोड को भी सही तरीके से ध्यान में रखता है. इससे यह पक्का किया जा सकेगा कि अलग-अलग आईडी वाले नोड वाले ग्राफ़ को अब एक जैसा नहीं माना जाएगा (I401cb, b/311414915)

वर्शन 2.7.5

वर्शन 2.7.5

1 नवंबर, 2023

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

परफ़ॉर्मेंस में सुधार

  • दो ग्राफ़ की तुलना करने की परफ़ॉर्मेंस को बेहतर बनाया गया है. इसमें समय और संख्या, दोनों के हिसाब से सुधार किया गया है. इसका मतलब है कि setGraph जैसे कॉल, जो नए ग्राफ़ की तुलना मौजूदा ग्राफ़ से करते हैं, वे बहुत तेज़ी से काम करते हैं. साथ ही, इससे कम फ़्रेम स्किप होते हैं. इस सुधार के लिए, हम Michał Z को धन्यवाद देते हैं. उन्होंने इस समस्या का बारीकी से विश्लेषण किया. (I6ad62)
  • NavHost अब अपडेट किए गए स्टेटस को पढ़ने के लिए, दूसरे पास का इंतज़ार करने के बजाय, पहले कंपोज़िशन पास पर ही शुरुआती डेस्टिनेशन को रेंडर करेगा. (I439a7, b/304852206)

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

  • हमने उस समस्या को ठीक कर दिया है जिसमें एक ही ग्राफ़ के साथ setGraph को एक से ज़्यादा बार कॉल करने पर, बैक स्टैक पॉप हो जाता था. ऐसा सिर्फ़ तब होता था, जब आपके ग्राफ़ में कोई ऐसा डेस्टिनेशन होता था जिसमें दो डेस्टिनेशन को लिंक करने वाली कार्रवाई शामिल होती थी. (Ieaed7)
  • जिन डायलॉग बॉक्स को तुरंत नेविगेट करके बंद कर दिया गया था वे अब NavController.visibleEntries की सूची में नहीं दिखेंगे. (I67586, b/287969970)
  • जब कॉन्फ़िगरेशन में बदलाव के बाद कोई एंट्री पॉप की जाती है, तो अगर saveState की वैल्यू false है, तो एंट्री का ViewModel अब ठीक से मिटा दिया जाएगा. (Idf242, b/298164648)
  • उस समस्या को ठीक किया गया है जिसमें कॉन्फ़िगरेशन में बदलाव होने या setGraph को कॉल करने से पहले, बैक स्टैक पूरी तरह से खाली होने पर NavController एक ही डीप लिंक को एक से ज़्यादा बार हैंडल कर सकता था. ऐसा सिर्फ़ तब होता था, जब आने वाले इंटेंट में FLAG_ACTIVITY_NEW_TASK फ़्लैग सेट किया गया हो. (I73c7f)

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

  • अब फ़्रैगमेंट के साथ नेविगेशन, Fragment 1.6.2 पर निर्भर करता है. इससे उस समस्या को ठीक किया गया है जिसमें clearBackStack को कॉल करने पर, नेस्ट किए गए फ़्रैगमेंट के ViewModel इंस्टेंस क्लियर नहीं होते थे.

वर्शन 2.7.4

वर्शन 2.7.4

4 अक्टूबर, 2023

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

नई सुविधाएं

  • popUpTo के लिए, आर्ग्युमेंट के साथ रास्तों का इस्तेमाल करने की सुविधा जोड़ी गई है. इससे, उन आर्ग्युमेंट का इस्तेमाल करने वाली किसी खास एंट्री पर वापस जाने की अनुमति मिलती है. यह सुविधा, popBackStack में उपलब्ध सुविधा से मिलती-जुलती है. (I731f4, b/299255572)

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

  • उस समस्या को ठीक किया गया है जिसमें popUpTo की मदद से नेविगेट करने के दौरान, किसी दूसरे नेविगेट को इंटरप्ट करने पर FragmentNavigator क्रैश हो जाता था. (I3c848, b/301887045)
  • उस समस्या को ठीक किया गया है जिसमें सिस्टम बैक प्रेस की वजह से, currentDestination को सही तरीके से अपडेट नहीं किया जाता था, ताकि वह दिखाए गए फ़्रैगमेंट से मैच हो सके. (Id0d6c, b/289877514)
  • ऊपर मौजूद डायलॉग को खारिज करने पर, DialogFragment लाइफ़साइकल अब RESUMED स्थिति में ठीक से चला जाएगा. (I88f0d, b/301811387)

वर्शन 2.7.3

वर्शन 2.7.3

20 सितंबर, 2023

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

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

  • फ़्रैगमेंट के साथ नेविगेशन में मौजूद उस समस्या को ठीक किया गया है जिसकी वजह से visibleEntries सूची में गलत एंट्री शामिल हो जाती थीं. (I5caa9, b/288520638)
  • उस समस्या को ठीक किया गया है जिसकी वजह से फ़्लोटिंग विंडो डेस्टिनेशन (जैसे कि Dialogs, Bottomsheets वगैरह) को कभी भी RESUMED लाइफ़साइकल कॉलबैक नहीं मिलता था. (I3b866, b/287505132)

वर्शन 2.7.2

वर्शन 2.7.2

6 सितंबर, 2023

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

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

  • अब नेविगेशन, लाइफ़साइकल 2.6.2 पर निर्भर करता है. इससे rememberSaveable और Navigation Compose के NavHost के बीच होने वाली बातचीत ठीक हो जाती है. इससे डेस्टिनेशन की rememberSaveable स्थिति और ViewModel के मालिकाना हक वाले SavedStateHandle इंस्टेंस, प्रोसेस बंद होने और फिर से शुरू होने के बाद ठीक से रीस्टोर हो जाते हैं. (b/298059596, b/289436035)
  • Navigation Compose में एक साथ कई डायलॉग दिखाने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, आंशिक रूप से छिपे हुए डायलॉग (जैसे, सबसे ऊपर वाला डायलॉग नहीं) STARTED स्थिति के बजाय CREATED लाइफ़साइकल की स्थिति में होते थे. (aosp/2728520, b/289257213)
  • नेविगेशन कंपोज़ में एक साथ कई डायलॉग दिखाने से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, सबसे ऊपर मौजूद डायलॉग को खारिज करने पर, नया सबसे ऊपर मौजूद डायलॉग RESUMED में सही तरीके से जाने के बजाय, STARTED लाइफ़साइकल की स्थिति में अटक जाता था. (aosp/2629401, b/286371387)
  • अगर नेविगेशन सेफ़ आर्ग्युमेंट को असल में लागू नहीं किया जा रहा है, तो अब यह अपने टास्क को तुरंत शुरू नहीं करेगा. (I0e385, b/260322841)

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

  • Navigation Compose अब Compose 1.5.1 पर निर्भर करता है.

वर्शन 2.7.1

वर्शन 2.7.1

23 अगस्त, 2023

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

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

  • Compose में नेविगेशन से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, Scaffold का इस्तेमाल करते समय, Lifecycle.State.DESTROYED ViewModel को ऐक्सेस करने की कोशिश करने पर गड़बड़ी हो सकती थी. (I1dc11, b/268422136)

वर्शन 2.7.0

वर्शन 2.7.0

9 अगस्त, 2023

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

2.6.0 के बाद हुए अहम बदलाव

Accompanist से मिले ऐनिमेशन

अब AnimatedContent स्टेबल हो गया है. इसलिए, हम Accompanist Navigation Animation से कोड को वापस Navigation Compose में ले जा सके.

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

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

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

  • Navigation Compose में मौजूद NavHost अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. भले ही, गतिविधि को STOP और RESUME किया गया हो. (Icb6de, b/279118447)

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

  • नेविगेशन अब Compose 1.5.0 पर निर्भर करता है, जो 1.1.0 से अपग्रेड किया गया है.

वर्शन 2.7.0-rc01

26 जुलाई, 2023

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

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

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

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

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

वर्शन 2.7.0-beta02

28 जून, 2023

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

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

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

वर्शन 2.7.0-beta01

7 जून, 2023

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

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

  • NavHost अब Navigation Compose में, सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट किया जाता है. ऐसा तब भी होता है, जब Activity को STOPPED और RESUMED कर दिया गया हो. (Icb6de, b/279118447)

वर्शन 2.7.0-alpha01

24 मई, 2023

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

Accompanist से मिले ऐनिमेशन

अब AnimatedContent स्टेबल हो गया है. इसलिए, हम Accompanist Navigation Animation से कोड को वापस Navigation Compose में ले जा सके.

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

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

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

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

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

  • नेविगेशन अब Compose 1.5.0-beta01 पर निर्भर करता है.

वर्शन 2.6.0

वर्शन 2.6.0

7 जून, 2023

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

नेविगेशन 2.5.0 के बाद हुए अहम बदलाव

  • NavBackStackEntry का arguments और OnDestinationChangedListener को पास किया गया arguments, अब सिर्फ़ उन अपरिवर्तनीय आर्ग्युमेंट की कॉपी है जो डेस्टिनेशन पर नेविगेट करते समय बनाए गए थे. इसका मतलब है कि उन बंडलों में किए गए किसी भी बदलाव का असर, arguments या अन्य OnDestinationChangedListener इंस्टेंस के बाद के ऐक्सेस पर नहीं दिखेगा.
  • NavDeepLink अब ऐरे के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे बार-बार इस्तेमाल किए जाने वाले क्वेरी पैरामीटर के साथ काम किया जा सकता है. ये क्वेरी पैरामीटर, आर्ग्युमेंट के ऐरे टाइप पर मैप होंगे. NavType में अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे पार्स की गई दो वैल्यू को एक साथ जोड़ने के लिए बदला जा सकता है.
  • NavType के कस्टम सबक्लास, अब serializeAsValue को स्ट्रिंग में वैल्यू को क्रम से लगाने के लिए बदल सकते हैं. इससे क्रम से लगाने और क्रम से हटाने (parseValue के ज़रिए) की प्रोसेस को पूरी तरह से NavType क्लास में शामिल किया जा सकता है. StringType अब इस तरीके को बदलकर, दिए गए String पर Uri.encode को कॉल करता है.

Navigation Compose 2.5.0 के बाद हुए अहम बदलाव

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

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

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

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

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

वर्शन 2.6.0-rc02

24 मई, 2023

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

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

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

वर्शन 2.6.0-rc01

10 मई, 2023

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

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

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

वर्शन 2.6.0-beta01

19 अप्रैल, 2023

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

नई सुविधाएं

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

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

  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, मैन्युअल तरीके से FragmentTransaction करने की कोशिश करने पर, अब IllegalArgumentException दिखेगा. इससे FragmentManager के बैक स्टैक में फ़्रैगमेंट जुड़ जाता है. आपको हमेशा navigate() एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए. (I6d38e)
  • जब एक ही फ़्रेम में, कोई एंट्री जोड़ने वाला navigate और उसे हटाने वाला popBackStack मौजूद होता है, तो बैक स्टैक में सबसे ऊपर मौजूद एंट्री अब RESUMED Lifecycle.State में वापस आ जाएगी. (Id8067, b/276495952)

वर्शन 2.6.0-alpha09

5 अप्रैल, 2023

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

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

  • अमान्य रूट की जांच की गई है, ताकि अगर किसी NavDestination में नॉन-नलेबल NavArgument शामिल है, तो इस डेस्टिनेशन के रूट में उन आर्ग्युमेंट के लिए प्लेसहोल्डर शामिल होने चाहिए जिनके नाम नॉन-नलेबल NavArgument के नाम के जैसे हैं. (Ic62bf, b/274697949)
  • अगर नेविगेशन ऑपरेशन में, NavDestination के लिए ज़रूरी ऐसा NavArgument मौजूद नहीं है जिसे शून्य पर सेट नहीं किया जा सकता और Action/MimeType उससे मेल खाता है, तो Action/MimeType के आधार पर डीपलिंक नेविगेशन अब काम नहीं करेगा. (Ibfa17, b/271777424)
  • जब NavController पिछले ग्राफ़ के जैसे ही रूट और डेस्टिनेशन वाला कोई ग्राफ़ सेट करता है, तो अब यह अपने मौजूदा ग्राफ़ नोड और बैक स्टैक डेस्टिनेशन को नए इंस्टेंस से बदल देता है. इससे Navigation Compose में स्थिति सेव किए बिना onLaunchSingleTop का इस्तेमाल करते समय होने वाली क्रैश की समस्या ठीक हो जाती है. इससे उस गड़बड़ी को भी ठीक किया गया है जिसमें रूट ग्राफ़ से जुड़े डेस्टिनेशन पर नेविगेट करने और गलत बैक स्टैक बनाने के दौरान गड़बड़ी होती थी. (I5bc58, b/275258161, b/275407804)

वर्शन 2.6.0-alpha08

22 मार्च, 2023

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

नई सुविधाएं

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

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

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

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

वर्शन 2.6.0-alpha07

8 मार्च, 2023

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

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

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

वर्शन 2.6.0-alpha06

22 फ़रवरी, 2023

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

नई सुविधाएं

  • NavHost की मदद से कंपोज़ेबल की झलक देखने पर, अब यह डिफ़ॉल्ट रूप से NavGraph का startDestination दिखाएगा. (I2b89f)

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

  • सभी NavController navigate ओवरलोड को अब @MainThread के साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि उन्हें मुख्य थ्रेड पर कॉल किया गया है. (I2c0b0, b/263427111)

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

  • डाइनैमिक फ़्रैगमेंट नेविगेशन का इस्तेमाल करते समय नेविगेट करने की कोशिश करने पर होने वाली क्रैश की समस्या को ठीक किया गया है. (I3ee29, b/268360479)
  • सिस्टम के बैक बटन का इस्तेमाल करके किसी दूसरे फ़्रैगमेंट पर जाने पर, बॉटम बार में सही आइटम नहीं दिखता था. इस गड़बड़ी को ठीक कर दिया गया है (If559f, b/269044426)

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

  • Fragments के साथ नेविगेशन का इस्तेमाल करते समय, Animation API का इस्तेमाल करने पर, NavBackStackEntry का लाइफ़साइकल RESUMED तक नहीं पहुंच पाता. (b/269646882)
  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय और BottomNavigation का इस्तेमाल करके नेविगेट करते समय, अगर एक से ज़्यादा एंट्री वाली पिछली ऐक्टिविटी को वापस लाने की कोशिश की जाती है, तो BottomNavigation को सही तरीके से अपडेट नहीं किया जाता है.BottomMenuItem (b/270447657)
  • फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, स्थिति को वापस लाने के बाद NavBackStackEntry Lifecycle को DESTROYED नहीं किया जाता है, जब उसका फ़्रैगमेंट DESTROYED होता है . (b/270610768)

वर्शन 2.6.0-alpha05

8 फ़रवरी, 2023

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

नई सुविधाएं

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) अब सभी सहायता पाने के तरीकों में, कुछ या सभी तर्क भरे गए हैं. ध्यान दें कि तर्क, एंट्री के तर्कों से पूरी तरह मेल खाने चाहिए. (Iebd28, Ic678c, I3b37b, b/257514373)
  • FragmentNavigator अब नेविगेट करते समय और NavBackStackEntries को पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अब NavBackStackEntry Lifecycle, फ़्रैगमेंट में एंट्री और एग्ज़िट के खास इफ़ेक्ट पूरे होने का इंतज़ार करेगा. इसके बाद ही, वह अपने फ़ाइनल Lifecycle.State को मूव करेगा. (I3cb19, b/238686802)
  • DialogFragmentNavigator अब नेविगेट करते समय और NavBackStackEntries को पॉप अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है कि अब NavBackStackEntry Lifecycle, DialogFragment Lifecycle के DESTROYED पर जाने के बाद ही DESTROYED पर जाएगा. (I53ee5, b/261213893)

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

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

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

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

वर्शन 2.6.0-alpha04

9 नवंबर, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

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

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

  • नेविगेशन अब Fragment 1.5.4 पर निर्भर करता है. (Icd424)

वर्शन 2.6.0-alpha02

5 अक्टूबर, 2022

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

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

  • AppBarConfiguration को नेविगेशन ग्राफ़ का आईडी पास करते समय (जैसे कि Menu के ज़रिए), NavigationUI अब उस नेविगेशन ग्राफ़ के सिर्फ़ शुरुआती डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर मानता है. ऐसा इसलिए, ताकि ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क न किया जाए. किसी डेस्टिनेशन का आईडी पास करने के तरीके में कोई बदलाव नहीं हुआ है. यह सुविधा, AppBarConfiguration पर मौजूद नए isTopLevelDestination फ़ंक्शन के ज़रिए आपके कोड के लिए भी उपलब्ध है. (Ie936e, b/238496771)

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

  • navigation:navigation-fragment कॉम्पोनेंट अब फ़्रैगमेंट वर्शन 1.5.2 पर निर्भर करता है. (I00ba4)
  • डायलॉग जैसे FloatingWindow डेस्टिनेशन पर नेविगेट करने पर, चुना गया मेन्यू आइटम अब अपडेट नहीं होगा. (I4cde8, b/240308330)

वर्शन 2.6.0-alpha01

7 सितंबर, 2022

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

नई सुविधाएं

  • टॉप ऐप्लिकेशन बार के साथ काम करने के लिए, NavigationUI में setupWithNavController इंटिग्रेशन अब android:label में मौजूद ReferenceType आर्ग्युमेंट के लिए R.string वैल्यू को पार्स करेंगे. इसके बाद, अपने-आप जनरेट होने वाले संसाधन पूर्णांक को आउटपुट करने के बजाय, उन्हें स्ट्रिंग वैल्यू में बदल देंगे. (I5f803, b/167959935)
  • NavDeepLink अब ऐरे के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे बार-बार इस्तेमाल किए जाने वाले क्वेरी पैरामीटर के साथ काम किया जा सकता है. ये क्वेरी पैरामीटर, आर्ग्युमेंट के ऐरे टाइप पर मैप होंगे. NavType में अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे पार्स की गई दो वैल्यू को एक साथ जोड़ने के लिए बदला जा सकता है. (Id68c3, b/209977108)
  • नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में, app:data और app:dataPattern एट्रिब्यूट में प्लेसहोल्डर के तौर पर ${applicationId} स्ट्रिंग का इस्तेमाल करने पर, प्लेसहोल्डर में कॉन्टेक्स्ट का packageName अपने-आप भर जाएगा. (Iaabde, b/234223561)
  • navDeepLink Kotlin DSL का इस्तेमाल करके, खाली NavDeepLink बनाने की कोशिश करने पर अब लिंट की चेतावनी दिखेगी. इसमें बताया जाएगा कि डीप लिंक के मान्य होने के लिए, यूआरआई, ऐक्शन, और/या माइमटाइप की ज़रूरत होती है. (I08d2f, b/154038883)

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

  • NavDestination एक्सटेंशन फ़ंक्शन जोड़ा गया है. यह android:label="{arg}" के फ़ॉर्म में मौजूद आर्ग्युमेंट के साथ डाइनैमिक लेबल को स्ट्रिंग में पार्स करता है. यह फ़ंक्शन, ReferenceType आर्ग्युमेंट के साथ काम करता है. इसके लिए, यह R.string वैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स करता है. (I07d89, b/236269380)

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

  • NavBackStackEntry के arguments और OnDestinationChangedListener को पास किए गए arguments, अब सिर्फ़ उन आर्ग्युमेंट की कॉपी हैं जिन्हें डेस्टिनेशन पर नेविगेट करते समय बनाया गया था. इसका मतलब है कि उन बंडलों में किए गए किसी भी बदलाव का असर, arguments या अन्य OnDestinationChangedListener इंस्टेंस के बाद के ऐक्सेस पर नहीं दिखेगा. (I676f5)

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

  • नेविगेशन 2.5.2: डाइनैमिक नेविगेशन अब अन्य मॉड्यूल से गतिविधि के डेस्टिनेशन इंस्टॉल करने की कोशिश करता है. इसके बाद, उन पर नेविगेट करता है. (Ia2c16, b/240292838)
  • नेविगेशन 2.5.2: अब एक ही डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, फ़्रैगमेंट इंस्टेंस को सही तरीके से बदल देगा. साथ ही, launchSingleTop फ़्लैग को सही पर सेट कर देगा. (I5a2f1, b/237374580)
  • नेविगेशन 2.5.2 से: डबल नेस्ट किए गए ऐसे ग्राफ़ पर नेविगेट करने की वजह से हुई IllegalStateException समस्या को ठीक किया गया है जो पॉप किए गए नए स्टार्ट डेस्टिनेशन के साथ पैरंट शेयर करता है. (I9f7cb, b/243778589)

वर्शन 2.5

वर्शन 2.5.3

24 अक्टूबर, 2022

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

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

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

वर्शन 2.5.2

7 सितंबर, 2022

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

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

  • डाइनैमिक नेविगेशन अब अन्य मॉड्यूल से गतिविधि के डेस्टिनेशन इंस्टॉल करने की कोशिश करता है. इसके बाद ही, उन पर नेविगेट करता है. (Ia2c16, b/240292838)
  • अब एक ही डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, फ़्रैगमेंट इंस्टेंस को सही तरीके से बदल देगा. इसके लिए, launchSingleTop फ़्लैग को सही पर सेट करना होगा. (I5a2f1, b/237374580)
  • डबल नेस्ट किए गए ऐसे ग्राफ़ पर नेविगेट करने की वजह से हुई IllegalStateException को ठीक किया गया है जो एक नए पॉप किए गए स्टार्ट डेस्टिनेशन के साथ पैरंट शेयर करता है. (I9f7cb, b/243778589)

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

वर्शन 2.5.1

27 जुलाई, 2022

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

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

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

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

वर्शन 2.5.0

29 जून, 2022

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

2.4.0 के बाद हुए अहम बदलाव

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

Navigation SafeArgs

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

अन्य बदलाव

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

वर्शन 2.5.0-rc02

15 जून, 2022

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

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

  • Navigation Compose NavHost का इस्तेमाल करते समय, बॉटम डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया है. (I3979a, b/234054916)
  • Navigation SafeArgs अब तब क्रैश नहीं होगा, जब applicationIdSuffix और नेमस्पेस का इस्तेमाल किया जा रहा हो और उनमें applicationId मौजूद न हो या applicationId और नेमस्पेस अलग-अलग हों. (I754b1, b/233119646)
  • NavArgument में अब एक कस्टम toString() फ़ंक्शन है. इसकी मदद से, आर्ग्युमेंट की इंटरनल वैल्यू दिखाई जा सकती हैं. (I900a8)

वर्शन 2.5.0-rc01

11 मई, 2022

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

नई सुविधाएं

  • आपकी navigation.xml फ़ाइल में, <activity> एलिमेंट के अंदर <deeplink> एलिमेंट रखने पर चेतावनी देने के लिए, एक नया लिंट नियम जोड़ा गया है.(Ic15a5, b/178403185)

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

  • NavHost और DialogHost में कंपोज़ किए जा सकने वाले स्कोप अब उम्मीद के मुताबिक क्रम में बंद हो जाते हैं. इसका मतलब है कि अंदर के कंपोज़ किए जा सकने वाले स्कोप, बाहर के कंपोज़ किए जा सकने वाले स्कोप से पहले बंद हो जाते हैं. (I157e6)
  • Navigation SafeArgs अब ArgumentsGenerationTask में PathSensitivity.RELATIVE का इस्तेमाल करता है, ताकि कैश मेमोरी को दूसरी जगह ले जाया जा सके. इसका मतलब है कि अब कैश मेमोरी की एंट्री को सीआई बिल्ड से लोकल बिल्ड में फिर से इस्तेमाल किया जा सकता है. (I5f67c, b/173420454)
  • UnrememberedGetBackStackEntryDetector लिंट नियम को अपडेट किया गया है, ताकि यह पक्का किया जा सके कि getBackStackEntry() को कॉल करने वाले remember कॉल में, NavBackStackEntry ऑब्जेक्ट को भी कुंजी के तौर पर पास किया गया हो.(Ib7081, b/227382831)

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

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

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

  • DialogNavigator अब dismiss() कॉल को एक्ज़ीक्यूट करते समय, popWithTransition का इस्तेमाल करता है. इस कुकी का इस्तेमाल, dialog डेस्टिनेशन में ViewModel का इस्तेमाल करते समय रेस कंडीशन को ठीक करने के लिए किया जाता है. इससे, सिस्टम के बैक बटन का इस्तेमाल करके या डायलॉग से बाहर निकलने के लिए डायलॉग के बाहर टैप करके डायलॉग को खारिज करते समय, IllegalStateException की समस्या ठीक हो जाती है. (Id7376, b/226552301)

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

  • अब नेविगेशन, लाइफ़साइकल 2.5.0-beta01 पर निर्भर करता है. साथ ही, एक से ज़्यादा बैक स्टैक का इस्तेमाल करते समय, प्राइमरी बॉटम नेविगेशन टैब के अलावा किसी दूसरे टैब में एक NavHost को दूसरे NavHost में नेस्ट करते समय, IllegalStateException को ठीक किया गया है.

वर्शन 2.5.0-alpha04

6 अप्रैल, 2022

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

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

  • visibleEntries अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I4829f, b/225394514)

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

  • NavHost अब यह तय करने के लिए कि किन एंट्री को कंपोज़ करना है, NavController से visibleEntries पर निर्भर करता है. इसका मतलब है कि नेस्ट किए गए NavHost का इस्तेमाल करते समय, अब अंदरूनी NavHost को सही तरीके से ऐनिमेट किया जाना चाहिए. (I4ba2b, b/225394514)
  • NavController से मिले visibleEntries StateFlow को अब लाइफ़साइकल की मौजूदा स्थिति के बजाय, लाइफ़साइकल की एंट्री मैक्स स्थिति के आधार पर तय किया जाता है. इसका मतलब है कि अगर navController की होस्ट लाइफ़साइकल STARTED से कम हो जाती है, तब भी दिखने वाली एंट्री की सूची में कोई बदलाव नहीं होगा. (I9e2a8, b/225394514)
  • SavedStateViewFactory अब CreationExtras का इस्तेमाल करने की सुविधा देता है. भले ही, इसे SavedStateRegistryOwner के साथ शुरू किया गया हो. अगर एक्सट्रा दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)
  • NavDeepLink अब बिना वैल्यू वाले सिंगल क्वेरी पैरामीटर के साथ यूआरआई को पार्स कर सकता है. (I0efe8, b/148905489)
  • अब डीप लिंक में खाली स्ट्रिंग को मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
  • नेमस्पेस का इस्तेमाल करते समय और AndroidManifest.xml मौजूद न होने पर, Navigation Safe Args अब क्रैश नहीं होगा. (I17ccf, b/227229815)

वर्शन 2.5.0-alpha03

23 फ़रवरी, 2022

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

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

  • अब ViewModel बनाने के लिए, CreationExtras को by navGraphViewModels में पास किया जा सकता है. (I29217, b/217618359)

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

  • NavDeepLinks अब रास्तों/डीप लिंक यूआरआई में एम्बेड किए गए, नई लाइन के लिए कोड में बदले गए वर्णों के साथ काम करता है. (I513d1, b/217815060)
  • CreationExtras का इस्तेमाल अब NavBackStackEntries के साथ करने पर, ViewModels सही तरीके से बनाए जा सकेंगे. (I69161, b/217617710)
  • Navigation Safe Args अब AndroidManifest में पैकेज की जगह, build.gradle में तय किए गए नेमस्पेस का इस्तेमाल करने की सुविधा देता है. (I659ef, b/217414933)

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

  • नेविगेशन 2.4.1 से: नेस्ट किए गए ग्राफ़ के साथ viewbinding का इस्तेमाल करते समय, NavHostFragment अब OnBackPressedDispatcher को सही तरीके से सेट करेगा. (Ifbb51, b/214577959)
  • नेविगेशन 2.4.1 से: कई नेस्ट किए गए NavGraph के ज़रिए डीप लिंकिंग करने पर, बैक स्टैक में अब इंटरमीडिएट स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060)

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

नई सुविधाएं

  • NavBackStackEntry को अब ViewModel CreationExtras के साथ इंटिग्रेट किया गया है. इसे Lifecycle 2.5.0-alpha01 के हिस्से के तौर पर पेश किया गया था. (Ib9fe2, b/207012490)

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

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

Safe Args

  • Safe Args अब Android Gradle प्लग इन 7.0.4 वर्शन पर निर्भर करता है. इसका मतलब है कि नेविगेशन सेफ़ आर्ग, Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, अब यह Android Gradle Plugin 7.1.0 और इसके बाद के वर्शन के साथ काम करेगा. (I41c88, b/213086135, b/207670704)

वर्शन 2.4.2

वर्शन 2.4.2

6 अप्रैल, 2022

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

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

  • नेविगेशन 2.5.0-alpha03 से बैकपोर्ट किया गया: NavDeepLinks अब रास्तों/डीप लिंक यूआरआई में एम्बेड किए गए, एन्कोड किए गए नई लाइन के वर्णों के साथ सही तरीके से काम करता है. (I513d1, b/217815060)
  • Navigation 2.5.0-alpha03 से बैकपोर्ट किया गया: Navigation SafeArgs अब AndroidManifest में पैकेज की जगह build.gradle में तय किए गए नेमस्पेस का इस्तेमाल करने की सुविधा देता है. (I659ef, b/217414933)
  • नेविगेशन 2.5.0-alpha04 से बैकपोर्ट किया गया: नेमस्पेस का इस्तेमाल करते समय और कोई AndroidManifest.xml मौजूद न होने पर, Navigation Safe Args अब क्रैश नहीं होगा. (I17ccf, b/227229815)
  • नेविगेशन 2.5.0-alpha04 से बैकपोर्ट किया गया: अब डीप लिंक में खाली स्ट्रिंग को मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)

वर्शन 2.4.1

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

  • नेस्ट किए गए ग्राफ़ के साथ viewbinding का इस्तेमाल करने पर, NavHostFragment अब OnBackPressedDispatcher को सही तरीके से सेट करेगा. (Ifbb51, b/214577959)
  • एक से ज़्यादा नेस्ट किए गए NavGraph के ज़रिए डीप लिंकिंग करने पर, बैक स्टैक में अब इंटरमीडिएट स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060)
  • Navigation 2.5.0-alpha01 से बैकपोर्ट किया गया: उस समस्या को ठीक किया गया है जिसमें by navGraphViewModels() के ज़रिए बनाए गए ViewModel को Fragment के onCreate() से ऐक्सेस करने पर, IllegalStateException की वजह से ऐक्सेस नहीं किया जा सकता था. (I8a14d)
  • नेविगेशन 2.5.0-alpha01 से बैकपोर्ट किया गया: NavDeepLinkअब यह फ़ंक्शन, आर्ग्युमेंट को दो बार डिकोड नहीं करता है. इसका मतलब है कि अब सही तरीके से डिकोड किए गए आर्ग्युमेंट, आपके फ़ाइनल डेस्टिनेशन पर पास किए जाते हैं. (I31b0a, b/210711399)
  • नेविगेशन 2.5.0-alpha01 से बैकपोर्ट किया गया: Safe Args अब Android Gradle प्लग इन 7.0.4 वर्शन पर निर्भर करता है. इसका मतलब है कि Navigation Safe Args, Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, अब यह Android Gradle Plugin 7.1.0 और इसके बाद के वर्शन के साथ काम करेगा. (I41c88, b/213086135, b/207670704)

वर्शन 2.4.0

वर्शन 2.4.0

26 जनवरी, 2022

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

2.3.0 के बाद हुए अहम बदलाव

  • नेविगेशन के सभी आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे कि NavType सबक्लास) की नल होने की स्थिति में सुधार हुआ है. -ktx आर्टफ़ैक्ट का हिस्सा रहे सभी Kotlin एक्सटेंशन फ़ंक्शन को उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है. -ktx आर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे.
  • navigation-fragment आर्टफ़ैक्ट में अब AbstractListDetailFragment के ज़रिए, दो पैनल वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. इस फ़्रैगमेंट में, सूची वाले पैन को मैनेज करने के लिए SlidingPaneLayout का इस्तेमाल किया जाता है. यह सूची वाला पैन, आपकी सबक्लास उपलब्ध कराती है. साथ ही, इसमें जानकारी वाला पैन भी होता है, जो SlidingPaneLayout का इस्तेमाल करता है. इसे हमारे उदाहरण के तौर पर दिए गए कोड में देखा जा सकता है.NavHostFragment
  • NavController पर मौजूद currentBackStackEntryAsFlow() तरीके से एक Flow मिलता है. यह Flow तब ट्रिगर होता है, जब मौजूदा NavBackStackEntry बदलता है. इस फ़्लो का इस्तेमाल, OnDestinationChangedListener को मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है.
  • NavController अब visibleEntries प्रॉपर्टी के ज़रिए, दिखने वाले सभी NavBackStackEntry इंस्टेंस की सूची को StateFlow के तौर पर वापस पाने की सुविधा देता है.
  • अब NavType क्लास को बढ़ाकर, कस्टम NavTypes बनाए जा सकते हैं. कस्टम टाइप का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब प्रोग्राम के हिसाब से नेविगेशन ग्राफ़ बनाया जा रहा हो. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए.
  • नेविगेशन में अब findStartDestination() और getHierarchy() एपीआई उपलब्ध हैं. इनका इस्तेमाल, कस्टम NavigationUI को लागू करने के लिए किया जा सकता है. findStartDestination(), NavGraph पर एक एक्सटेंशन फ़ंक्शन है. यह उस शुरुआती डेस्टिनेशन का पता लगाएगा जो ग्राफ़ पर नेविगेट करते समय दिखेगा. भले ही, startDestination खुद एक नेस्ट किया गया NavGraph हो. getHierarchy(), NavDestination पर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि दिया गया डेस्टिनेशन, किसी दूसरे डेस्टिनेशन के क्रम में है या नहीं.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI तरीकों को अपडेट किया गया है. इनमें BottomNavigationView का इस्तेमाल किया जाता था. अब ये तरीके, 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 कॉन्स्टेंट या Safe Args का इस्तेमाल करना होता है. Safe Args, इन कॉन्स्टेंट का इस्तेमाल करके, बिल्ड टाइम पर कोड जनरेट करता है. हालांकि, यूनीक पूर्णांक के इस सिस्टम में, सिमैंटिक मीनिंग और एक्सप्रेसिवनेस को कैप्चर नहीं किया गया. इसकी ज़रूरत, Navigation Kotlin DSL के ज़रिए रनटाइम पर प्रोग्राम के हिसाब से बनाए गए पूरी तरह से डाइनैमिक ग्राफ़ को सपोर्ट करने के लिए होती है.

इस रिलीज़ में, नेविगेशन ग्राफ़ में किसी डेस्टिनेशन की पहचान करने के लिए एक नया विकल्प पेश किया गया है. इसकी पहचान route के हिसाब से की जाती है. रास्ता एक String होता है, जो किसी डेस्टिनेशन तक पहुंचने के लिए खास पाथ तय करता है. Kotlin DSL के वे सभी तरीके अब काम नहीं करते जिनमें डेस्टिनेशन आईडी का इस्तेमाल किया जाता था. इनकी जगह, ऐसे एपीआई का इस्तेमाल किया जा सकता है जो रूट का इस्तेमाल करते हैं.

हर रूट को Uri के ‘पाथ’ वाले हिस्से के तौर पर माना जाना चाहिए.यह हिस्सा, डेस्टिनेशन के बारे में बताता है. उदाहरण के लिए, home, profile/{userId}, profile/{userId}/friends वगैरह. जब किसी डेस्टिनेशन की पहचान किसी कॉन्टेंट से जुड़ी होती है, तो उन डाइनैमिक आर्ग्युमेंट को रूट का हिस्सा होना चाहिए. इसके लिए, इंप्लिसिट डीप लिंक के नियमों का पालन करना होगा.

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

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

  • Kotlin DSL में मौजूद popUpTo Kotlin प्रॉपर्टी को अब इस्तेमाल नहीं किया जा सकता. इसकी जगह popUpToId का इस्तेमाल किया जा सकता है.
  • getStartDestination() एपीआई अब काम नहीं करता. उसकी जगह getStartDestinationId() का इस्तेमाल किया जाता है.

आईडी के हिसाब से नेविगेट करने के बजाय, रूट के हिसाब से नेविगेट करने पर वही नियम लागू होते हैं जो इंप्लिसिट डीप लिंक के लिए लागू होते हैं. इसका मतलब है कि किसी भी नेस्ट किए गए ग्राफ़ में मौजूद किसी भी डेस्टिनेशन पर सीधे नेविगेट किया जा सकता है. इससे यह पक्का होता है कि इन रूट का इस्तेमाल मल्टी-मॉड्यूल प्रोजेक्ट में किया जा सकता है. इसके लिए, हर डेस्टिनेशन में बाहरी तौर पर दिखने वाला डीप लिंक जोड़ने की ज़रूरत नहीं होती.

Navigation Compose

navigation-compose आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन की सुविधा देता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.

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

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

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

val navController = rememberNavController()
Scaffold { innerPadding ->
    NavHost(navController, "home", Modifier.padding(innerPadding)) {
        composable("home") {
            // This content fills the area provided to the NavHost
            HomeScreen()
        }
        dialog("detail_dialog") {
            // This content will be automatically added to a Dialog() composable
            // and appear above the HomeScreen or other composable destinations
            DetailDialogContent()
        }
    }
}

ज़्यादा जानकारी के लिए, Compose Navigation गाइड देखें.

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

NavController, डेस्टिनेशन के बैक स्टैक को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate() करते हैं, तो यह उसे बैक स्टैक में जोड़ता है. साथ ही, जब आप popBackStack() को कॉल करते हैं या सिस्टम के बैक बटन को ट्रिगर करते हैं, तो यह उसे हटा देता है. बैक स्टैक को सेव करने और उसे पहले जैसा करने की सुविधा देने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद मौजूदा NavOptions क्लास और <action> एलिमेंट को बड़ा किया गया है.

इस बदलाव के तहत, onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), और NavigationView.setupWithNavController() के NavigationUI तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और रीस्टोर करते हैं. इससे, कोड में कोई बदलाव किए बिना, एक से ज़्यादा बैक स्टैक के लिए सहायता मिलती है. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, एक से ज़्यादा बैक स्टैक के साथ इंटिग्रेट करने का यह सबसे सही तरीका है.

स्टेट को सेव और वापस लाने के लिए इस्तेमाल किए जाने वाले एपीआई, कई प्लैटफ़ॉर्म पर उपलब्ध हैं:

  • नेविगेशन एक्सएमएल में, <action> एलिमेंट अब app:popUpToSaveState और app:restoreState के बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससे app:popUpTo के ज़रिए पॉप अप किए गए किसी भी डेस्टिनेशन की स्थिति को सेव किया जा सकता है. साथ ही, app:destination के तौर पर पास किए गए डेस्टिनेशन से जुड़ी स्थिति को वापस लाया जा सकता है:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL में, popUpTo बिल्डर पर restoreState बूलियन प्रॉपर्टी और saveState बूलियन प्रॉपर्टी जोड़ी जा सकती हैं:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • NavOptions.Builder के ज़रिए मैन्युअल तरीके से NavOptions ऑब्जेक्ट बनाते समय, setPopUpTo() के लिए setRestoreState() और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह एक अतिरिक्त saveState पैरामीटर लेता है.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • popBackStack() को प्रोग्राम के हिसाब से कॉल करने के लिए, अब एक और saveState पैरामीटर शामिल किया जा सकता है.

  • popBackStack() या popUpToSaveState की मदद से सेव किए गए किसी भी स्टेट को मिटाने के लिए, clearBackStack() तरीके का इस्तेमाल किया जा सकता है.

हर मामले में, NavController हर NavBackStackEntry की स्थिति को सेव और रीस्टोर करेगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel इंस्टेंस भी शामिल हैं. Navigator एपीआई को अपडेट किया गया है, ताकि हर Navigator अपनी स्थिति को सेव और वापस ला सके.

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

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

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

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

वर्शन 2.4.0-rc01

15 दिसंबर, 2021

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

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

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

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

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

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

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

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

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

वर्शन 2.4.0-beta02

3 नवंबर, 2021

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

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

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

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

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

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

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

वर्शन 2.4.0-beta01

27 अक्टूबर, 2021

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.4.0-alpha10

29 सितंबर, 2021

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

नई सुविधाएं

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

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

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

वर्शन 2.4.0-alpha09

15 सितंबर, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

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

वर्शन 2.4.0-alpha08

1 सितंबर, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha07

18 अगस्त, 2021

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

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

  • Navigation Compose अब कॉन्फ़िगरेशन में बदलाव होने के बाद, स्थिति को सही तरीके से सेव करता है. साथ ही, एक से ज़्यादा बैक स्टैक की सुविधा का इस्तेमाल करते समय, ग्राफ़ बदलते समय भी स्थिति को सही तरीके से सेव करता है. (If5a3d, b/195141957)
  • एक से ज़्यादा बैक स्टैक के साथ नेविगेशन कंपोज़ का इस्तेमाल करते समय, उसी टैब को फिर से चुनने पर अब स्क्रीन खाली नहीं होगी. (I860dc, b/194925622)
  • NavHost अब NavBackStackEntry के Lifecycle.State में होने वाले बदलावों को मॉनिटर करता है. इसका मतलब है कि फ़्रैगमेंट में NavHost का इस्तेमाल करने पर, लाइफ़साइकल में होने वाले बदलावों के हिसाब से उसे फिर से कंपोज़ किया जाएगा. इससे स्क्रीन खाली नहीं रहेगी. (I4eb85, b/195864489)
  • उस समस्या को ठीक किया गया है जिसमें DialogFragment को खारिज करने पर, गतिविधि को फिर से बनाने के बाद NavController की स्थिति ठीक से अपडेट नहीं होती थी. गतिविधि को फिर से बनाने का मतलब है, कॉन्फ़िगरेशन में बदलाव करने के बाद. (Icd72b)
  • डायलॉग डेस्टिनेशन पॉप अप करने पर, NavController के सिस्टम के 'वापस जाएं' बटन को हैंडल करने की सुविधा अपडेट नहीं होती थी. इस समस्या को ठीक किया गया है. इससे NavController, 'वापस जाएं' बटन को इंटरसेप्ट कर लेता था, भले ही उसके पास पॉप करने के लिए कोई बैक स्टैक न हो. (If3b34)
  • Safe-args अब अपने-आप, आर्ग्युमेंट के लिए toSavedStateHandle मेथड जनरेट करता है. इसका इस्तेमाल, ViewModel कोड की जांच करने के लिए किया जा सकता है. (If1e2d, b/193353880)

वर्शन 2.4.0-alpha06

4 अगस्त, 2021

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

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

  • AbstractListDetailFragment पर मौजूद requireSlidingPaneLayout() और requireDetailPaneNavHostFragment() तरीकों के नाम बदलकर, क्रमशः getSlidingPaneLayout() और getDetailPaneNavHostFragment() कर दिए गए हैं. (I34a08)

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

  • ऐनिमेशन (जैसे, Crossfade) की मदद से नेविगेट करते समय, नए डेस्टिनेशन का Lifecycle अब सिर्फ़ तब RESUMED तक पहुंचेगा, जब ऐनिमेशन पूरा हो जाएगा. (If0543, b/172112072, b/194301889)
  • Navigation Compose NavHost अब ग्राफ़ को पहली कंपोज़िशन के हिस्से के तौर पर सेट करता है. (Ieb7be)

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

  • नेविगेशन ग्राफ़ के आखिरी डेस्टिनेशन को पॉप करने पर, अब ClassCastException नहीं दिखता. (If0543, b/172112072, b/194301889)
  • हमने उस NullPointerException को ठीक किया है जो Uri के बिना डीप लिंक जोड़ने और किसी रूट या डीप लिंक से नेविगेट करने पर होता था. (938a0c, b/193805425)
  • Navigation Compose में उस समस्या को ठीक किया गया है जिसकी वजह से डीप लिंक किया गया NavBackStackEntry, RESUMED स्थिति तक नहीं पहुंच पाता था. (I192c5)
  • उस समस्या को ठीक किया गया है जिसमें डायलॉग डेस्टिनेशन को पॉप करने पर, NavController के सिस्टम के बैक बटन को हैंडल करने की सुविधा अपडेट नहीं होती थी. इससे NavController, बैक बटन को इंटरसेप्ट कर लेता था, भले ही उसके पास पॉप करने के लिए कोई बैक स्टैक न हो. (aosp/1782668)

वर्शन 2.4.0-alpha05

21 जुलाई, 2021

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

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

  • नेविगेशन कंपोज़ का NavHost अब डेस्टिनेशन के बीच नेविगेट करते समय, हमेशा क्रॉसफ़ेड का इस्तेमाल करता है. (I07049, b/172112072)
  • अब NavHost के ग्राफ़ में बदलाव किए जा सकते हैं. अगर किसी ग्राफ़ में startDestination और destinations एक जैसे हैं, तो उन्हें एक ही माना जाएगा. साथ ही, वे NavController बैक स्टैक को नहीं हटाएंगे. (I0b8db, b/175392262)

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

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

वर्शन 2.4.0-alpha04

1 जुलाई, 2021

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

नई सुविधाएं

  • navigation-fragment आर्टफ़ैक्ट में अब AbstractListDetailFragment के ज़रिए, दो पैनल वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. इस फ़्रैगमेंट में, सूची वाले पैन को मैनेज करने के लिए SlidingPaneLayout का इस्तेमाल किया जाता है. यह सूची वाला पैन, आपकी सबक्लास उपलब्ध कराती है. साथ ही, इसमें जानकारी वाला पैन भी होता है, जो SlidingPaneLayout का इस्तेमाल करता है. इसे हमारे उदाहरण के तौर पर दिए गए कोड में देखा जा सकता है.NavHostFragment (Iac4be, b/191276636)
  • navigation-compose आर्टफ़ैक्ट के NavHost में अब composable के साथ-साथ dialog डेस्टिनेशन भी इस्तेमाल किए जा सकते हैं. ये डायलॉग डेस्टिनेशन, हर कंपोज़ेबल Dialog में दिखाए जाएंगे. ये मौजूदा composable डेस्टिनेशन के ऊपर तैरते हुए दिखेंगे. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

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

  • NavigatorState में मौजूद add फ़ंक्शन का नाम बदलकर push कर दिया गया है. add() को किए गए सभी मौजूदा कॉल को push() में बदलना होगा. (Ie89fc, b/172112072)
  • कस्टम Navigator इंस्टेंस अब NavigatorState पर pushWithTransaction और popWithTransition एपीआई का इस्तेमाल कर सकते हैं. इससे किसी डेस्टिनेशन को एसिंक्रोनस तरीके से पुश या पॉप किया जा सकता है. ध्यान दें कि इन एपीआई का इस्तेमाल, शामिल किए गए किसी भी नेविगेटर ने अब तक नहीं किया है. (Ic4d7c, b/172112072)

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

  • NavDeepLinkBuilder अब createPendingIntent() से मिले PendingIntent में PendingIntent.FLAG_IMMUTABLE जोड़ता है. इससे यह पक्का होता है कि Android 12 को टारगेट करते समय, यह एपीआई उम्मीद के मुताबिक काम करे. (If8c52)

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

  • <include-dynamic> से जुड़ी समस्या को ठीक किया गया है. इस समस्या में, ग्राफ़ को पास किए गए आर्ग्युमेंट, डाइनैमिक तौर पर शामिल किए गए ग्राफ़ को सही तरीके से पास नहीं किए जाते थे. (I3e115)
  • किसी मंज़िल तक पहुंचने के लिए, @null की डिफ़ॉल्ट वैल्यू वाले string[] आर्ग्युमेंट का इस्तेमाल करते समय, NullPointerException को ठीक किया गया. (I1fbe8)
  • @Navigator.Name के लिए ProGuard के नियम जोड़े गए हैं. साथ ही, R8 3.1 के फ़ुल मोड का इस्तेमाल करते समय आने वाली समस्याएं ठीक की गई हैं. (I2add9, b/191654433)
  • Kotlin से पहले के वर्शन का इस्तेमाल करके ऐप्लिकेशन बनाने पर, SafeArgs अब काम नहीं करेगा.1.5.0 (Icd1ff, b/190739257)

वर्शन 2.4.0-alpha03

16 जून, 2021

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

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

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

आम समस्या

  • Kotlin के पुराने वर्शन पर निर्भरता की वजह से, Gradle 6.7.0 का इस्तेमाल करते समय Safe Args में Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ गड़बड़ी होगी. Gradle 7.0 का इस्तेमाल करके, इस समस्या को ठीक किया जा सकता है. (b/190739257)

वर्शन 2.4.0-alpha02

2 जून, 2021

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

नई सुविधाएं

  • रास्ते अब ऐक्टिविटी, फ़्रैगमेंट, और डायलॉग डेस्टिनेशन के साथ-साथ पूरे DynamicNavigation Kotlin DSL के लिए काम करते हैं. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI ने कुछ समय के लिए एक्सपेरिमेंटल एपीआई जोड़े हैं, ताकि आपको अपनी स्थिति सेव करने की सुविधा से ऑप्ट आउट करने का विकल्प मिल सके. स्टेट को हमेशा सेव करना सही तरीका है. हालांकि, अब इस्तेमाल नहीं की जा रही लाइब्रेरी (जैसे, बनाए रखे गए फ़्रैगमेंट) का इस्तेमाल अब भी किया जा रहा है. स्टेट को सेव करते समय, इनका इस्तेमाल नहीं किया जा सकता. इसलिए, ऐप्लिकेशन को ऐसे एपीआई से धीरे-धीरे दूर होने का मौका मिलता है जिनका इस्तेमाल नहीं किया जा सकता. (Idf93c)
  • नेविगेशन में अब findDestination() और getHierarchy() एपीआई उपलब्ध हैं. इनका इस्तेमाल, कस्टम NavigationUI को लागू करने के लिए किया जा सकता है. findDestination(), NavGraph पर एक एक्सटेंशन फ़ंक्शन है. यह ग्राफ़ में डेस्टिनेशन का पता लगाएगा. getHierarchy(), NavDestination पर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि दिया गया डेस्टिनेशन, किसी दूसरे डेस्टिनेशन की हैरारकी में है या नहीं.(I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI के उन तरीकों को अपडेट किया गया है जो BottomNavigationView लेते थे. अब वे 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 में दिशा-निर्देश प्रॉपर्टी जनरेट करने की कोशिश करते समय, Safe Args अब क्रैश नहीं होता. (Id2416, b/188564435)

  • NavDestination पर setId तरीके को अब @IdRes के साथ सही तरीके से एनोटेट किया गया है, इसलिए यह सिर्फ़ संसाधन आईडी स्वीकार करता है. (I69b80)

  • findNode का int पैरामीटर, अब resid के बजाय resId है. (I7711d)

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

  • Safe-Args अब Android Gradle प्लग इन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको applicationIdTextResource का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी. (I6d67b, b/172824579)

वर्शन 2.4.0-alpha01

18 मई, 2021

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

नई सुविधाएं

  • NavController पर मौजूद currentBackStackEntryAsFlow() तरीके से एक Flow मिलता है. यह Flow तब ट्रिगर होता है, जब मौजूदा NavBackStackEntry बदलता है. इस फ़्लो का इस्तेमाल, OnDestinationChangedListener को मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है. (I19c4a, #89, b/163947280)

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

NavController, डेस्टिनेशन के बैक स्टैक को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate() करते हैं, तो यह उसे बैक स्टैक में जोड़ता है. साथ ही, जब आप popBackStack() को कॉल करते हैं या सिस्टम के बैक बटन को ट्रिगर करते हैं, तो यह उसे हटा देता है. बैक स्टैक को सेव करने और उसे वापस लाने की सुविधा देने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद मौजूदा NavOptions क्लास और <action> एंट्री को बड़ा किया गया है. (b/80029773)

इस बदलाव के तहत, onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), और NavigationView.setupWithNavController() के NavigationUI तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और रीस्टोर करते हैं. इससे, कोड में कोई बदलाव किए बिना, एक से ज़्यादा बैक स्टैक के लिए सहायता मिलती है. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, एक से ज़्यादा बैक स्टैक के साथ इंटिग्रेट करने का यह सबसे सही तरीका है. (Ie07ca)

स्टेट को सेव और वापस लाने के लिए इस्तेमाल किए जाने वाले एपीआई, कई प्लैटफ़ॉर्म पर उपलब्ध हैं:

  • नेविगेशन एक्सएमएल में, <action> एलिमेंट अब app:popUpToSaveState और app:restoreState के बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससे app:popUpTo के ज़रिए पॉप अप किए गए किसी भी डेस्टिनेशन की स्थिति को सेव किया जा सकता है. साथ ही, app:destination के तौर पर पास किए गए डेस्टिनेशन से जुड़ी स्थिति को वापस लाया जा सकता है:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • navOptions Kotlin DSL में, popUpTo बिल्डर पर restoreState बूलियन प्रॉपर्टी और saveState बूलियन प्रॉपर्टी जोड़ी जा सकती हैं:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • NavOptions.Builder के ज़रिए मैन्युअल तरीके से NavOptions ऑब्जेक्ट बनाते समय, setPopUpTo() के लिए setRestoreState() और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह एक अतिरिक्त saveState पैरामीटर लेता है.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • popBackStack() को प्रोग्राम के हिसाब से कॉल करने के लिए, अब एक और saveState पैरामीटर शामिल किया जा सकता है.

हर मामले में, NavController हर NavBackStackEntry की स्थिति को सेव और रीस्टोर करेगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel इंस्टेंस भी शामिल हैं. Navigator एपीआई को अपडेट किया गया है, ताकि हर Navigator अपनी स्थिति को सेव और वापस ला सके.

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

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

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

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

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

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

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

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

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

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

  • नेविगेशन के सभी आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे कि NavType सबक्लास) की नल होने की स्थिति में सुधार हुआ है. -ktx आर्टफ़ैक्ट का हिस्सा रहे सभी Kotlin एक्सटेंशन फ़ंक्शन को उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है. -ktx आर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे. (b/184292145)
  • NavDeepLinkBuilder अब जनरेट किए गए बैक स्टैक में कई अलग-अलग डेस्टिनेशन जोड़ने की सुविधा देता है. (I3ee0d, b/147913689)
  • DynamicNavHostFragment (Icd515, b/175222619) के लिए फ़ैक्ट्री फ़ंक्शन जोड़ें
  • NavBackStackEntry का यूनीक आईडी अब इसके सार्वजनिक एपीआई के हिस्से के तौर पर दिखाया जाता है. (Ie033a)
  • name और argument फ़ील्ड के साथ-साथ NamedNavArgument के डिस्ट्रक्चरिंग फ़ंक्शन अब सार्वजनिक तौर पर उपलब्ध हैं. (#174, b/181320559)
  • एक नया NavBackStackEntry#provideToCompositionLocals एक्सटेंशन जोड़ा गया है. यह कंपोज़िशन से जुड़ी ज़रूरी लोकल को NavBackStackEntry उपलब्ध कराता है. (#175, b/187229439)

Safe Args

  • Safe Args अब हर NavArgs क्लास के लिए एक fromSavedStateHandle() तरीका जनरेट करता है. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Safe Args को KotlinPoet 1.8.0 पर निर्भर रहने के लिए अपडेट किया गया. (#172, b/183990444)

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

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

लिखने की सुविधा के साथ काम करने वाले प्रॉडक्ट

  • androidx.navigation:navigation-compose:2.4.0-alpha01 सिर्फ़ Compose के 1.0.0-beta07 और इसके बाद के वर्शन के साथ काम करता है.

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

  • इस समस्या को ठीक किया गया है. इसमें, मैच करने वाले सटीक सफ़िक्स वाले डीप लिंक के बजाय, ट्रेलिंग आर्ग्युमेंट प्लेसहोल्डर को प्राथमिकता दी जाती थी. (#153, b/184072811)
  • NavHostFragment अब कस्टम नेविगेटर के साथ काम करता है. ये नेविगेटर, डिफ़ॉल्ट DialogFragmentNavigator की तरह ही @Navigator.Name("dialog") का इस्तेमाल करते हैं. (Ib1c2c, b/175979140)
  • NavigatorProvider#addNavigator के व्यवहार को बेहतर बनाया गया है, ताकि एक ही इंस्टेंस के साथ इसे बार-बार कॉल करने से समस्याएं न हों. (#176, b/187443146)

बाहरी योगदान

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

वर्शन 1.0.0-alpha10

7 अप्रैल, 2021

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

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

  • NavHost अब Modifier स्वीकार करता है, जिसे डेस्टिनेशन कंपोज़ेबल को रैप करने वाले कंपोज़ेबल कंटेनर को पास किया जाता है. (I85aca, b/175125483)

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

  • NavHost अब तब भी काम करता है, जब OnBackPressedDispatcherOwner नहीं मिलता. ऐसा तब होता है, जब NavHost की झलक देखी जा रही हो. (I7d8b4)
  • Navigation Compose अब Navigation 2.3.5 पर निर्भर करता है. इससे NavHost डेस्टिनेशन के अंदर BackHandler का इस्तेमाल करते समय होने वाली समस्या ठीक हो गई है. (I7e63b, b/182284739)

वर्शन 1.0.0-alpha09

10 मार्च, 2021

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

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

  • LocalViewModelStoreOwner.current अब एक शून्य हो सकने वाला ViewModelStoreOwner दिखाता है, ताकि यह बेहतर तरीके से तय किया जा सके कि मौजूदा कंपोज़िशन में ViewModelStoreOwner उपलब्ध है या नहीं. जिन एपीआई के लिए ViewModelStoreOwner की ज़रूरत होती है वे अब भी अपवाद दिखाते हैं. जैसे, viewModel() और NavHost. ऐसा तब होता है, जब ViewModelStoreOwner सेट नहीं किया जाता. (Idf39a)

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

  • Navigation Compose अब Navigation 2.3.4 पर निर्भर करता है. इसमें ग्राफ़ सेट होने के बाद, एक ही ViewModelStore ऑब्जेक्ट को सेट करने की कोशिश करने से जुड़ी समस्या को ठीक किया गया है. (I65c24, b/177825470)

वर्शन 1.0.0-alpha08

24 फ़रवरी, 2021

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

नई सुविधाएं

  • NavHost अब उस डेस्टिनेशन के NavBackStackEntry के साथ LocalSavedStateRegistryOwner CompositionLocal को पॉप्युलेट करता है. इससे यह पक्का होता है कि SavedStateRegistry में सीधे तौर पर सेव किया गया कोई भी स्टेट, डेस्टिनेशन के साथ सेव और रीस्टोर किया जाएगा. (I435d7, b/179469431)

वर्शन 1.0.0-alpha07

10 फ़रवरी, 2021

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

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

  • नेविगेशन कंपोज़ अब composable डेस्टिनेशन के लिए viewModel() सहायता देने के लिए, Lifecycle ViewModel Compose 1.0.0-alpha01 पर निर्भर करता है. (I7a374)
  • NavHost अब Activity-Compose 1.3.0-alpha01 से मिले नए LocalOnBackPressedDispatcherOwner का इस्तेमाल करके, NavController पर सेट किया गया OnBackPressedDispatcher हासिल करता है. (I65b12)

वर्शन 1.0.0-alpha06

28 जनवरी, 2021

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

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

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

वर्शन 1.0.0-alpha05

13 जनवरी, 2021

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

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

वर्शन 1.0.0-alpha04

16 दिसंबर, 2020

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

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

वर्शन 1.0.0-alpha03

2 दिसंबर, 2020

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

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

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

वर्शन 1.0.0-alpha02

11 नवंबर, 2020

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

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

  • Navigation Compose अब popUpTo और launchSingleTop ऑपरेशनों का इस्तेमाल करने के लिए, NavOptions के साथ काम करता है (If96c3, b/171468994)
  • नेविगेशन फ़ंक्शन जोड़ा गया है. यह आईडी के बजाय रूट लेता है. इससे आपको Navigation Compose DSL में नेस्ट किए गए ग्राफ़ बनाने में मदद मिलती है. (I1661d)
  • NavHost (Ie620e) के पैरामीटर की सूची में, अब route से पहले startDestination दिखता है
  • अब NavHost कंपोज़ेबल के बाहर, रूट को शुरुआती डेस्टिनेशन के तौर पर इस्तेमाल करके ग्राफ़ बनाया जा सकता है. (Iceb75)

वर्शन 1.0.0-alpha01

28 अक्टूबर, 2020

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

नई सुविधाएं

navigation-compose आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन की सुविधा देता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable फ़ंक्शन का इस्तेमाल करता है.

इस शुरुआती रिलीज़ में ये सुविधाएं उपलब्ध हैं:

  • यह एक NavHost कंपोज़ेबल है. इसकी मदद से, Kotlin DSL के ज़रिए नेविगेशन ग्राफ़ बनाया जा सकता है.
  • डेस्टिनेशन लेवल पर लाइफ़साइकल, ViewModel, और याद रखी गई स्थिति को स्कोप करना.
  • सिस्टम के बैक बटन के साथ अपने-आप इंटिग्रेट होने की सुविधा.
  • आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजे वापस भेजने की सुविधा.
  • rememberNavController() और currentBackStackEntryAsState() में कुछ खास हेल्पर कंपोज़ करें, ताकि होस्टिंग की स्थिति को अनुमति दी जा सके. साथ ही, NavController को NavHost से बाहर के कंपोज़ेबल (जैसे कि सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट किया जा सके.

ज़्यादा जानकारी के लिए, Compose Navigation गाइड देखें.

वर्शन 2.3.5

वर्शन 2.3.5

7 अप्रैल, 2021

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

नई सुविधाएं

  • NavDeepLinkRequest या Uri का इस्तेमाल करके नेविगेट करते समय, अब आपको नतीजे के तौर पर मिले डेस्टिनेशन में Uri, कार्रवाई, और माइम टाइप का ऐक्सेस मिल सकता है. इसके लिए, KEY_DEEP_LINK_INTENT के ज़रिए आर्ग्युमेंट से इंटेंट पाएं. इससे, बाहरी डीप लिंकिंग के लिए पहले से उपलब्ध सुविधा को मिरर किया जा सकेगा. (I975c3, b/181521877)

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

  • OnBackPressedCallbacks को डिस्पैचर में जोड़ा गया है. साथ ही, NavBackStackEntry को LifecycleOwner के तौर पर सेट किया गया है. अब यह, ऐक्टिविटी के लाइफ़साइकल के STOPPED होने के बाद, बैक बटन के इंटरसेप्ट को सही तरीके से हैंडल करता है. इसके बाद, STARTED (Iff94f, b/182284739)
  • डीप लिंक के डोमेन को पार्स करने की सुविधा अब केस-इनसेंसिटिव है. इसका मतलब है कि www.example.com, www.example.com और www.Example.com, दोनों से मैच करेगा. ध्यान दें कि क्वेरी पैरामीटर के नाम अब भी केस-सेंसिटिव (बड़े और छोटे अक्षरों में अंतर) होते हैं. (#144, b/153829033)
  • हमने उस NullPointerException को ठीक किया है जो तब हो सकता है, जब किसी डेस्टिनेशन में कई ऐसे डिफ़ॉल्ट आर्ग्युमेंट हों जिन्हें शून्य नहीं किया जा सकता. साथ ही, सिर्फ़ उन आर्ग्युमेंट के सबसेट को बदलते समय उस डेस्टिनेशन पर नेविगेट किया जाता है. (aosp/1644827)

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

  • नेविगेशन Safe Args Gradle प्लग इन अब Kotlin Gradle प्लग इन 1.4.31 पर निर्भर करता है. (aosp/1661058, b/181156413)

बाहरी योगदान

  • पुल अनुरोध करने के लिए bentrengrove का धन्यवाद. इससे डीप लिंक डोमेन पार्सिंग केस-इनसेंसिटिव हो जाती है. (#144, b/153829033)

वर्शन 2.3.4

वर्शन 2.3.4

10 मार्च, 2021

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

नई सुविधाएं

  • ReferenceType आर्ग्युमेंट को अब डीपलिंक यूआरआई के हिस्से के तौर पर भेजे जाने पर, सही तरीके से पार्स किया जा सकता है. यह सुविधा, रॉ इंटिजर वैल्यू के साथ-साथ 0x से शुरू होने वाली हेक्स वैल्यू के साथ भी काम करती है. (#127, b/179166693)
  • अब app:argType="float" वाले आर्ग्युमेंट के लिए android:defaultValue, पूर्णांक डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे आपको 0.0 के बजाय android:defaultValue="0" का इस्तेमाल करने की सुविधा मिलती है. (#117, b/173766247)

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

  • डाइनैमिक सुविधाओं के लिए नेविगेशन की सहायता का इस्तेमाल करते समय, इंस्टॉलेशन की प्रोसेस रुकने की समस्या ठीक की गई. (Ib27a7, b/169636207)
  • पहले से सेट किए गए ऑब्जेक्ट के साथ setViewModelStore या setLifecycleOwner को कॉल करने पर, अब कोई कार्रवाई नहीं होगी (Idf491, b/177825470)
  • Safe-Args अब Java का इस्तेमाल करते समय, सही तरीकों पर एनोटेशन को दबा देता है. (I8fbc5, b/179463137)

बाहरी योगदान

  • JvmName, पुल अनुरोध के लिए धन्यवाद. इससे यह पक्का किया जा सकेगा कि डीपलिंक यूआरआई के हिस्से के तौर पर भेजे जाने पर, ReferenceType आर्ग्युमेंट को अब ठीक से पार्स किया जा सकता है. (#127, b/179166693)
  • tatocaster, पुल अनुरोध के लिए धन्यवाद. अब app:argType=”float” के साथ किसी तर्क के लिए defaultValue की अनुमति दी जा सकती है. साथ ही, पूर्णांक की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जा सकता है. (#117, b/173766247)

वर्शन 2.3.3

वर्शन 2.3.3

27 जनवरी, 2021

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

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

  • Lifecycle को CREATED में ले जाने से पहले, NavBackStackEntry को पॉप अप करने पर अब क्रैश नहीं होता. (Ie3ba3)
  • b/171364502 की वजह से हुई रिग्रेशन की समस्या को ठीक किया गया है. इस समस्या में, 0 के ऐनिमेशन रिसॉर्स वैल्यू वाली गतिविधि पर जाने से ResourceNotFoundException हो जाता था. (I7aedb, b/176819931)

वर्शन 2.3.2

वर्शन 2.3.2

2 दिसंबर, 2020

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

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

  • NavigationUI में हुई एक समस्या को ठीक किया गया है. इस समस्या में, onNavDestinationSelected के साथ <activity> डेस्टिनेशन का इस्तेमाल करने पर, गतिविधि पर नेविगेट नहीं किया जा सका. (I22e34, b/171364502)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से navigation-dynamic-features-fragment पर क्लिक करने से, उपयोगकर्ता को कई बार नए इंस्टॉल किए गए डेस्टिनेशन पर रीडायरेक्ट किया जाता था. (aosp/1486056, b/169636207)
  • उस समस्या को ठीक किया गया है जिसकी वजह से launchSingleTop का इस्तेमाल करते समय, डिफ़ॉल्ट आर्ग्युमेंट को OnDestinationChangedListener इंस्टेंस में नहीं भेजा जाता था. (I2c5cb)
  • उस समस्या को ठीक किया गया है जिसमें नेस्ट किए गए नेविगेशन ग्राफ़ पर जाने से, बैक स्टैक पर नया ग्राफ़ इंस्टेंस नहीं बनता था. (Ifc831)
  • उस समस्या को ठीक किया गया है जिसमें नेविगेशन ग्राफ़ में मौजूद आखिरी डेस्टिनेशन को हटाने वाले popUpTo के साथ navigate() का इस्तेमाल करने पर, नेविगेशन ग्राफ़ तुरंत बंद नहीं होता था और न ही बैक स्टैक से हटता था. (I910a3)
  • Navigation SafeArgs अब KotlinPoet के वर्शन 1.7.2 का इस्तेमाल करता है. इससे Kotlin के एक्सप्लिसिट एपीआई मोड के लिए सहायता मिलती है. (I918b5)
  • NavHostFragment.findNavController(Fragment) अब DialogFragment के रूट डेकोर व्यू की भी जांच करता है. इसके अलावा, यह Fragment हैरारकी और Fragment के व्यू हैरारकी की मौजूदा जांच भी करता है. इससे, नेविगेशन के लिए FragmentScenario और Navigation.setViewNavController() का इस्तेमाल करने वाले डायलॉग फ़्रैगमेंट की जांच की जा सकती है. (I69e0d)

वर्शन 2.3.1

वर्शन 2.3.1

14 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

  • navigation-ui अब DrawerLayout 1.1.1 पर निर्भर करता है. इससे यह पक्का होता है कि NavigationUI, LOCK_MODE_LOCKED_CLOSED या LOCK_MODE_LOCKED_OPEN का इस्तेमाल करते समय भी ड्रॉअर खोल सकता है. (b/162253907)
  • Safe Args अब KotlinPoet 1.6.0 (aosp/1435911) पर निर्भर करता है
  • Safe Args अब AGP 4.0.1 (aosp/1442337) पर निर्भर करता है

वर्शन 2.3.0

वर्शन 2.3.0

24 जून, 2020

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

2.2.0 के बाद के मुख्य बदलाव

  • फ़ीचर मॉड्यूल इंटिग्रेशन: navigation-dynamic-features-runtime और navigation-dynamic-features-fragment आर्टफ़ैक्ट की मदद से, फ़ीचर मॉड्यूल में तय किए गए डेस्टिनेशन पर नेविगेट किया जा सकता है. साथ ही, ज़रूरत के मुताबिक फ़ीचर मॉड्यूल के इंस्टॉलेशन को अपने-आप मैनेज किया जा सकता है. ज़्यादा जानकारी के लिए, सुविधा वाले मॉड्यूल की मदद से नेविगेट करना लेख पढ़ें.
  • नेविगेशन की जांच: navigation-testing आर्टफ़ैक्ट, TestNavHostController उपलब्ध कराता है. इसकी मदद से, मौजूदा डेस्टिनेशन सेट किया जा सकता है. साथ ही, नेविगेशन की कार्रवाइयों के बाद बैक स्टैक की पुष्टि की जा सकती है. ज़्यादा जानकारी के लिए, टेस्ट नेविगेशन देखें.
  • नतीजा दिखाना: नेविगेशन बैक स्टैक में मौजूद हर डेस्टिनेशन से जुड़ा NavBackStackEntry अब आपको SavedStateHandle ऐक्सेस करने की अनुमति देता है. इसका इस्तेमाल, सेव किए गए ऐसे छोटे डेटा को सेव करने के लिए किया जा सकता है जिसे बैक स्टैक की किसी खास एंट्री से जोड़ा जाना चाहिए. ज़्यादा जानकारी के लिए, नतीजे को पिछले डेस्टिनेशन पर वापस भेजना लेख पढ़ें.
  • NavigationUI के लिए Openable का इस्तेमाल किया जा सकता है: NavigationUI में DrawerLayout के सभी इस्तेमाल को, Openable इंटरफ़ेस से बदल दिया गया है. इसे CustomView 1.1.0 में जोड़ा गया है और DrawerLayout 1.1.0 में DrawerLayout ने लागू किया है.
  • डीप लिंक में ऐक्शन और माइम टाइप का इस्तेमाल: डीप लिंकिंग की सुविधा को अब app:uri के साथ-साथ app:action और app:mimeType के लिए भी उपलब्ध कराया गया है. NavController अब नई NavDeepLinkRequest क्लास के ज़रिए, इन फ़ील्ड के किसी भी कॉम्बिनेशन के हिसाब से नेविगेट करने की सुविधा देता है. ज़्यादा जानकारी के लिए, NavDeepLinkRequest का इस्तेमाल करके नेविगेट करना लेख पढ़ें.

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

  • Manifest Merger में, डीप लिंक की कार्रवाइयों और माइम टाइप के लिए सहायता अभी उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में मौजूद <nav-graph> एलिमेंट से जनरेट हुए किसी भी <intent-filter> एलिमेंट में, <data> एलिमेंट में आपका माइम टाइप या आपका कस्टम <action> शामिल नहीं होगा. आपको अपने मेनिफ़ेस्ट में सही <intent-filter> को मैन्युअल तरीके से जोड़ना होगा.

वर्शन 2.3.0-rc01

10 जून, 2020

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

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

  • डेस्टिनेशन के ऐसे इंस्टेंस को singleTop के साथ आर्ग्युमेंट वाले दूसरे इंस्टेंस से बदलते समय, NullPointerException को ठीक किया गया. (b/158006669)
  • NavController से थ्रो किए गए सभी destination is unknown अपवादों में अब डीबग करने के बारे में ज़्यादा जानकारी शामिल है. इससे NavController की स्थिति का पता लगाने में मदद मिलती है. (b/157764916)

वर्शन 2.3.0-beta01

20 मई, 2020

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

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

  • उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद, NavBackStackEntry का Lifecycle ठीक से अपडेट नहीं होता था. (b/155218371)
  • OnDestinationChangedListener को कॉल करने से पहले रजिस्टर किए गए OnDestinationChangedListener इंस्टेंस को अब प्रोसेस बंद होने के बाद, सही तरीके से डेस्टिनेशन की जानकारी भेजी जाती है.setGraph() (b/155218371)
  • singleTop का इस्तेमाल करने पर, NavBackStackEntry के तर्क अब सही तरीके से अपडेट हो जाते हैं. साथ ही, अपडेट किए गए तर्क, OnDestinationChangeListener के सभी इंस्टेंस को भेज दिए जाते हैं. (b/156545508)

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

वर्शन 2.3.0-alpha06

29 अप्रैल, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha05

15 अप्रैल, 2020

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

नई सुविधाएं

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

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

  • Navigation 2.2.2: आपकी ऐक्टिविटी में कई NavHostFragment इंस्टेंस होने पर, ग्राफ़ के शुरुआती डेस्टिनेशन से डीप लिंक करने पर होने वाली IllegalStateException को ठीक किया गया है. (b/147378752)

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

वर्शन 2.3.0-alpha04

18 मार्च, 2020

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

नई सुविधाएं

  • Navigation Kotlin DSL में, फ़ीचर मॉड्यूल ऐक्टिविटी और फ़्रैगमेंट डेस्टिनेशन के लिए सहायता जोड़ी गई है. (b/148969800)

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

  • DynamicExtras क्लास अब बिल्डर पैटर्न का इस्तेमाल नहीं करती है. इसलिए, इसे सीधे तौर पर बनाया जा सकता है. (aosp/1253671)
  • DynamicActivityNavigator अब अपने कंस्ट्रक्टर में Activity के बजाय Context लेता है. (aosp/1250252)

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

  • NavigationUI अब खाली लेबल (यानी कि android:label=”” वाला डेस्टिनेशन) को अनदेखा नहीं करता है. साथ ही, अब टाइटल को खाली स्ट्रिंग पर सही तरीके से सेट करता है. (b/148679860)

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

  • नेविगेशन डाइनैमिक सुविधाओं के आर्टफ़ैक्ट, अब Play Core 1.6.5 पर निर्भर करते हैं. (b/149556401)

वर्शन 2.3.0-alpha03

4 मार्च, 2020

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

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

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

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

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

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

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

वर्शन 2.3.0-alpha02

19 फ़रवरी, 2020

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

नई सुविधाएं

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

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

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

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

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

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

  • नेविगेशन अब Core 1.2.0 पर निर्भर करता है.

वर्शन 2.3.0-alpha01

5 फ़रवरी, 2020

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

नई सुविधाएं

  • नए navigation-testing आर्टफ़ैक्ट में TestNavHostController क्लास मिलती है. यह क्लास, नेविगेशन की जांच करते समय, मॉक NavController का इस्तेमाल करने का विकल्प देती है. इससे आपको मौजूदा डेस्टिनेशन सेट करने और नेविगेशन ऑपरेशन के बाद बैक स्टैक की पुष्टि करने की सुविधा मिलती है. (b/140884273)
  • नए navigation-dynamic-features-fragment (और इसकी ट्रांज़िटिव डिपेंडेंसी, navigation-dynamic-features-runtime) की मदद से, सुविधा वाले मॉड्यूल से डेस्टिनेशन या पूरे नेविगेशन ग्राफ़ (<include-dynamic> के ज़रिए) शामिल किए जा सकते हैं. इससे उन डेस्टिनेशन पर नेविगेट करते समय, मांग पर उपलब्ध सुविधा वाले मॉड्यूल को आसानी से इंस्टॉल किया जा सकता है. ज़्यादा जानकारी के लिए, सुविधा वाले मॉड्यूल की मदद से नेविगेट करना लेख पढ़ें. (b/132170186)

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

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

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

वर्शन 2.2.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)
  • navigation-ui के लिए DrawerArrowDrawable के 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 मिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए तर्क भी मिलते हैं.
  • लाइफ़साइकल व्यू मॉडल सेव्डस्टेट इंटिग्रेशन: SavedStateViewModelFactory अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल तब किया जाता है, जब by navGraphViewModels() या ViewModelProvider कंस्ट्रक्टर का इस्तेमाल किया जा रहा हो. साथ ही, NavController.getBackStackEntry() या NavController.getViewModelStoreOwner() से मिले ViewModelStoreOwner का इस्तेमाल किया जा रहा हो.
  • डीप लिंक के लिए क्वेरी पैरामीटर की सुविधा: क्वेरी पैरामीटर वाले डीप लिंक अब क्वेरी पैरामीटर के क्रम में बदलाव करने की सुविधा के साथ काम करते हैं. साथ ही, डिफ़ॉल्ट वैल्यू वाले या शून्य हो सकने वाले आर्ग्युमेंट अब डीप लिंक मैच करते समय ज़रूरी नहीं होते.
  • ऐनिमेशन से जुड़ी बेहतर सुविधा: NavHostFragment अब Fragment 1.2.0 से FragmentContainerView का इस्तेमाल करता है. इससे ऐनिमेशन के z-ऑर्डरिंग से जुड़ी समस्याएं ठीक हो जाती हैं. साथ ही, विंडो इंसर्ट को फ़्रैगमेंट में भेजा जा सकता है.

वर्शन 2.2.0-rc04

18 दिसंबर, 2019

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

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

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

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

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

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

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

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

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

वर्शन 2.2.0-rc02

7 नवंबर, 2019

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

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

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

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

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

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

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

नई सुविधाएं

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

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

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

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

  • डीप लिंक के पाथ में मौजूद आर्ग्युमेंट को अनदेखा करने की समस्या को ठीक किया गया है. ऐसा तब होता था, जब क्वेरी पैरामीटर भी तय किए जाते थे. (b/141505755)
  • navArgs() Activity पर मौजूद Kotlin एक्सटेंशन में, अब कोई एक्स्ट्रा न होने पर गड़बड़ी का बेहतर मैसेज दिखता है. (b/141408999)
  • Safe Args से जनरेट हुई Directions Java क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/141099045)
  • Safe Args से जनरेट हुई Args Java क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/140123727)
  • Toolbar का इस्तेमाल करने पर, दो टॉप लेवल डेस्टिनेशन के बीच नेविगेट करते समय, NavigationUI अब टेक्स्ट में होने वाले बदलाव को ऐनिमेट नहीं करता. (b/140848160)

वर्शन 2.2.0-alpha03

18 सितंबर, 2019

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

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

  • setGraph को कॉल करने के बाद, setViewModelStore() को कॉल करने पर अब IllegalStateException मिलता है. इसे हमेशा NavHost को सेट करना चाहिए. ऐसा शुरुआती सेटअप के दौरान किया जाना चाहिए, ताकि यह पक्का किया जा सके कि सभी NavBackStackEntry इंस्टेंस में ViewModel इंस्टेंस के लिए एक जैसा स्टोरेज हो. (aosp/1111821)

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

  • एक से ज़्यादा नेविगेशन ग्राफ़ स्कोप किए गए ViewModelStore इंस्टेंस से जुड़े ViewModel इंस्टेंस का इस्तेमाल करते समय, ConcurrentModificationException को ठीक किया गया. (aosp/1112257)

वर्शन 2.2.0-alpha02

5 सितंबर, 2019

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

नई सुविधाएं

  • क्वेरी पैरामीटर वाले डीप लिंक अब फिर से क्रम में लगाए गए क्वेरी पैरामीटर के साथ काम करते हैं. डिफ़ॉल्ट वैल्यू वाले या शून्य हो सकने वाले आर्ग्युमेंट अब डीप लिंक से मेल खाते समय ज़रूरी नहीं होते. (b/133273839)
  • अब NavController.getBackStackEntry() को कॉल किया जा सकता है. इसके लिए, बैक स्टैक पर मौजूद डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास करें. जवाब में मिले NavBackStackEntry से, नेविगेशन की सुविधा वाला LifecycleOwner, ViewModelStoreOwner (वही जवाब जो NavController.getViewModelStoreOwner() से मिलता है), और SavedStateRegistryOwner मिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए तर्क भी मिलते हैं. (aosp/1101691, aosp/1101710)

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

  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से ViewPager2 में NavHostFragment जोड़ने पर, IllegalArgumentException दिखता था. (b/133640271)
  • NavInflater अब getResourceName() को बेवजह कॉल नहीं करता है. इससे, इन्फ़्लेशन के समय में 40% तक की कमी आती है. (b/139213740)

वर्शन 2.2.0-alpha01

7 अगस्त, 2019

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

नई सुविधाएं

  • SavedStateViewModelFactory का इस्तेमाल करने पर, अब SavedStateViewModelFactory डिफ़ॉल्ट फ़ैक्ट्री के तौर पर इस्तेमाल की जाती है. इसके अलावा, NavController.getViewModelStoreOwner() से मिले ViewModelStoreOwner के साथ ViewModelProvider कंस्ट्रक्टर का इस्तेमाल करने पर भी ऐसा होता है.by navGraphViewModels() (b/135716331)

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

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

5 सितंबर, 2019

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

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

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

वर्शन 2.1.0-rc01

7 अगस्त, 2019

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

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

  • NavController पर बंद किए गए getViewModelStore() एपीआई को हटा दिया गया है. इसे 2.1.0-alpha02 में लॉन्च किया गया था. (aosp/1091021)

वर्शन 2.1.0-beta02

19 जुलाई, 2019

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

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

  • 2.1.0-beta01 में, अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटाया गया. (b/137782950)

वर्शन 2.1.0-beta01

17 जुलाई, 2019

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

नई सुविधाएं

  • NavigationUI अब Toolbar या CollapsingToolbarLayout के साथ setupWithNavController() का इस्तेमाल करने पर, 'पसंद करें' बटन को हटाने पर ऐनिमेशन दिखाता है. (b/131403621)

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

  • findNavController() के साथ एक ही कंटेनर में कई NavHostFragment इस्तेमाल करते समय, समय से जुड़ी समस्या को ठीक किया गया है. (b/136021571)

वर्शन 2.1.0-alpha06

2 जुलाई, 2019

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

नई सुविधाएं

  • NavHostFragment इस्तेमाल करने वाले app:navGraph एट्रिब्यूट को अब navigation-runtime आर्टफ़ैक्ट में ले जाया गया है. एक्सएमएल के ज़रिए जोड़े जा सकने वाले कस्टम नेविगेटर को इस एट्रिब्यूट का इस्तेमाल करना चाहिए, ताकि वे नेविगेशन एडिटर के होस्ट पैनल के साथ इंटिग्रेट हो सकें. (b/133880955)

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

  • NavController पर मौजूद getViewModelStore() एपीआई को बंद कर दिया गया है. इसके बजाय, अब getViewModelStoreOwner() का इस्तेमाल किया जा सकता है. यह ViewModelStoreOwner दिखाता है. (aosp/987010)
  • फ़्लोटिंग विंडो डेस्टिनेशन, जैसे कि <dialog> डेस्टिनेशन को लागू करने की प्रोसेस को अब मार्कर इंटरफ़ेस, FloatingWindow में सामान्य बना दिया गया है. अब सभी <dialog> डेस्टिनेशन इसे लागू करते हैं. टॉप ऐप्लिकेशन बार के साथ इंटरैक्ट करने के लिए, NavigationUI के तरीके अब FloatingWindow डेस्टिनेशन को अनदेखा करते हैं. (b/133600763)

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

  • अब नेविगेशन, <dialog> डेस्टिनेशन का इस्तेमाल करते समय स्क्रीन पर दिखने वाले कॉन्टेंट के साथ अपनी स्थिति को सही तरीके से सिंक करता है. इस वजह से, अब किसी ऐसे डेस्टिनेशन पर नेविगेट करते समय नेविगेशन अपने-आप <dialog> डेस्टिनेशन दिखाता है जो डायलॉग और गतिविधि वाला डेस्टिनेशन नहीं है. जैसे, <fragment> डेस्टिनेशन. (b/134089818)

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

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

वर्शन 2.1.0-alpha05

5 जून, 2019

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

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

  • NavController पर होस्ट से जुड़े एपीआई का नाम बदल दिया गया है. साथ ही, इन्हें NavController की नई सबक्लास, NavHostController में ले जाया गया है. (aosp/966091)
  • NavController setHostOnBackPressedDispatcherOwner() तरीके को NavHostController के setOnBackPressedDispatcher() तरीके से बदल दिया गया है. अब इसे कॉल करने से पहले, आपको setLifecycleOwner() को कॉल करना होगा. (aosp/965409)
  • NavHostController में अब एक enableOnBackPressed(boolean) मैथड शामिल है. यह NavHostOnBackPressedManager क्लास को बदलता है. इस क्लास को पहले setHostOnBackPressedDispatcherOwner() से वापस लाया जाता था. (aosp/966091)

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

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

वर्शन 2.1.0-alpha04

16 मई, 2019

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

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

  • NavHostFragment, सिस्टम के 'वापस जाएं' बटन के इवेंट को इंटरसेप्ट करते समय, app:defaultNavHost का सही तरीके से पालन करता है. इससे Navigation 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
  • navigate को रिसॉर्स आईडी या NavDirections इंस्टेंस के साथ कॉल करने के अलावा, अब 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 के लिए, android:defaultValue=”@null” में मौजूद app:argType को अब string आर्ग्युमेंट के तौर पर सही तरीके से अनुमानित किया जाता है. b/129629192

वर्शन 2.1.0-alpha02

3 अप्रैल, 2019

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.1.0-alpha01

19 मार्च, 2019

यह Navigation 2.1.0 का पहला ऐल्फ़ा वर्शन है.

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

  • नेविगेशन अब androidx.core:core:1.0.1 और androidx.fragment:fragment:1.1.0-alpha05 पर निर्भर करता है. इस रिलीज़ से, androidx.legacy:legacy-support-core-utils:1.0.0 पर निर्भरता भी खत्म हो जाती है. b/128632612

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

  • क्लिक लिसनर बनाने के लिए, Navigation.createNavigateOnClickListener(NavDirections) नया तरीका जोड़ा गया है. यह तरीका, संसाधन आईडी और बंडल का इस्तेमाल करके क्लिक लिसनर बनाने के तरीके का विकल्प है. b/127631752
  • FragmentNavigator.instantiateFragment का अब इस्तेमाल नहीं किया जा सकता. डिफ़ॉल्ट तौर पर लागू करने की सुविधा अब फ़्रैगमेंट को इंस्टैंशिएट करने के लिए FragmentFactory का इस्तेमाल करती है. b/119054429

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

  • नेविगेशन अब किसी डेस्टिनेशन से जुड़े आर्ग्युमेंट होने पर, शून्य Bundle नहीं भेजता. इससे android:defaultValue="@null" का इस्तेमाल करते समय आने वाली समस्या ठीक हो जाती है. b/128531879
  • Safe Args अब KotlinPoet 1.1.0 पर निर्भर करता है. इससे बहुत लंबे पैकेज के नामों से जुड़ी समस्या ठीक हो गई है. b/123654948

वर्शन 2.0.0

वर्शन 2.0.0

14 मार्च, 2019

नेविगेशन 2.0.0 को 2.0.0-rc02 में किए गए बदलावों के बिना रिलीज़ किया गया है.

वर्शन 2.0.0-rc02

6 मार्च, 2019

Navigation 2.0.0-rc02, androidx.navigation ग्रुप आईडी के साथ नए आर्टफ़ैक्ट उपलब्ध कराता है. साथ ही, इसकी डिपेंडेंसी को AndroidX के बराबर में बदलता है.

2.0.0-rc02 का व्यवहार, Navigation 1.0.0-rc02 के जैसा ही है. साथ ही, 1.0.0-rc02 से अपडेट करने के लिए, आपको अपने कोड में कोई बदलाव करने की ज़रूरत नहीं होगी. हालांकि, आपको नई डिपेंडेंसी से मेल खाने के लिए, अपनी डिपेंडेंसी अपडेट करनी होंगी.

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

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

Navigation के AndroidX से पहले के वर्शन के लिए, इन डिपेंडेंसी को शामिल करें:

dependencies {
    def nav_version = "1.0.0"

    implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}

Safe args के लिए, अपनी टॉप लेवल build.gradle फ़ाइल में यहां दिया गया classpath जोड़ें

buildscript {
    repositories {
        google()
    }
    dependencies {
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
    }
}

वर्शन 1.0.0

वर्शन 1.0.0

14 मार्च, 2019

नेविगेशन 1.0.0 को 1.0.0-rc02 में किए गए बदलावों के बिना रिलीज़ किया गया है.

वर्शन 1.0.0-rc02

26 फ़रवरी, 2019

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

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

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

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

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

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

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

  • Safe Args का इस्तेमाल अब Android Gradle प्लगिन के सभी वर्शन पर, लाइब्रेरी और फ़ीचर मॉड्यूल में किया जा सकता है. b/121304903
  • एक रिग्रेशन को ठीक किया गया है. इसकी वजह से, एक popBackStack() ऑपरेशन से बैक स्टैक में मौजूद डेस्टिनेशन की सभी कॉपी, सबसे ऊपर से पॉप हो जाती थीं. हालांकि, ऐसा एक बार में सिर्फ़ एक डेस्टिनेशन के साथ होना चाहिए था. b/123552990
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से FragmentNavigator की स्थिति, NavController की स्थिति के साथ सिंक नहीं होती थी. इस वजह से, बैक स्टैक को वापस लाने की कोशिश करते समय IllegalStateException होता था. b/123803044
  • उस समस्या को ठीक किया गया है जिसमें ProGuard का इस्तेमाल करने पर, NavigationUI हैंडल किया गया बैक ऐरो नहीं दिखता था. b/123449431
  • Safe Args से जनरेट किया गया कोड, अब app:argType का इस्तेमाल करके .OuterClass$InnerClass फ़ॉर्मैट में स्टैटिक इनर क्लास की ओर पॉइंट करने की सुविधा को सही तरीके से हैंडल करता है. b/123736741
  • Safe Args से जनरेट किया गया Java कोड, अब ग्लोबल ऐक्शन और डीपली नेस्ट किए गए डेस्टिनेशन को सही तरीके से हैंडल करता है. b/123347762

वर्शन 1.0.0-alpha11

23 जनवरी, 2019

यह 1.0.0-alpha10 का हॉटफ़िक्स रिलीज़ है. इसमें Safe Args से जुड़ी समस्या को ठीक किया गया है.

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

  • इस अपडेट में, उस समस्या को ठीक किया गया है जिसकी वजह से Safe Args, ग्लोबल ऐक्शन से जुड़ी Directions क्लास को इंपोर्ट नहीं कर पाता था. b/123307342

वर्शन 1.0.0-alpha10

23 जनवरी, 2019

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

  • Safe Args, ग्लोबल ऐक्शन से जुड़ी Directions क्लास को इंपोर्ट नहीं कर पाता. b/123307342

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

नई सुविधाएं

  • Kotlin का इस्तेमाल करने वाले लोग अब by navArgs() प्रॉपर्टी डेलिगेट का इस्तेमाल करके, Activity या Fragment में Safe Args से जनरेट की गई NavArgs क्लास का रेफ़रंस पा सकते हैं. b/122603367
  • Safe Args की मदद से, अब androidx.navigation.safeargs.kotlin प्लगिन लागू करके Kotlin कोड जनरेट किया जा सकता है. Kotlin कोड को खास तौर पर, सिर्फ़ Kotlin मॉड्यूल के लिए बनाया गया है. इसमें डिफ़ॉल्ट आर्ग्युमेंट और बिल्डर पैटर्न के बजाय इम्यूटेबल क्लास का इस्तेमाल किया गया है. बिल्डर पैटर्न अब भी androidx.navigation.safeargs प्लगिन के पिछले वर्शन के ज़रिए उपलब्ध है. b/110263087

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

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

नुकसान पहुंचा सकने वाले बदलाव

  • किसी गतिविधि में पॉप ऐनिमेशन लागू करने के लिए, NavOptions.applyPopAnimationsToPendingTransition() तरीके को ActivityNavigator में ले जाया गया है. b/122413117
  • Safe Args अब बिना किसी तर्क वाली कार्रवाइयों के लिए, एक जैसी क्लास को डुप्लीकेट करने से रोकता है. जनरेट की गई NavDirections क्लास में, बिना आर्ग्युमेंट वाले तरीकों के लिए रिटर्न टाइप अब NavDirections है. b/123233147
  • Safe Args से जनरेट की गई Directions क्लास में अब कोई पब्लिक कंस्ट्रक्टर नहीं है - आपको सिर्फ़ जनरेट किए गए स्टैटिक तरीकों से इंटरैक्ट करना चाहिए. b/123031660
  • Safe Args से जनरेट की गई NavDirections क्लास में अब सार्वजनिक कंस्ट्रक्टर नहीं होता. इन्हें सिर्फ़ जनरेट की गई Directions क्लास में स्टैटिक तरीकों से जनरेट किया जाना चाहिए. b/122963206
  • NavDirections' getArguments() से मिले Bundle को अब @Nullable के बजाय @NonNull के तौर पर मार्क किया गया है. b/123243957

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

  • NavDeepLinkBuilder अब एक ही डेस्टिनेशन पर एक साथ कई PendingIntent को सही तरीके से हैंडल करता है. इसके लिए, यह उन आर्ग्युमेंट का इस्तेमाल करता है जिन्हें आपने यूनीकनेस का पता लगाने के लिए पास किया है. b/120042732
  • NavController अब नेस्ट किए गए NavHostFragment या बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट का इस्तेमाल करते समय, popBackStack() कार्रवाइयों को सही तरीके से हैंडल करता है. b/122770335
  • NavigationUI अब 'ऊपर जाएं' बटन के कॉन्टेंट की जानकारी को सही तरीके से सेट करता है. b/120395362
  • Safe Args से जनरेट की गई Directions क्लास, अब उन ग्लोबल ऐक्शन को सही तरीके से हैंडल करती हैं जिनका आईडी, डेस्टिनेशन पर मौजूद किसी ऐक्शन के आईडी के जैसा होता है. b/122962504
  • Safe Args से जनरेट की गई NavDirections क्लास में अब hashCode() की वैल्यू सही तरीके से बराबर होती हैं. ऐसा तब होता है, जब equals() से true वैल्यू मिलती है. b/123043662
  • FragmentNavigator अब NavHostFragment के FragmentManager पर कस्टम FragmentTransactions करने की कोशिश करने पर, गड़बड़ी का बेहतर मैसेज दिखाता है. आपको हमेशा getChildFragmentManager() का इस्तेमाल करना चाहिए. b/112927148

वर्शन 1.0.0-alpha09

18 दिसंबर, 2018

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

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

नई सुविधाएं

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

नुकसान पहुंचा सकने वाले बदलाव

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

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

  • अब डीप लिंक से आर्ग्युमेंट को सही तरीके से पार्स किया जाता है. ऐसा हमेशा स्ट्रिंग के तौर पर करने के बजाय, सही argType के तौर पर किया जाता है b/110273284
  • नेविगेशन अब अपने सार्वजनिक संसाधनों को सही तरीके से एक्सपोर्ट करता है b/121059552
  • Safe Args अब Android Gradle प्लग इन 3.4 Canary 4 और इसके बाद के वर्शन के साथ काम करता है b/119662045

वर्शन 1.0.0-alpha08

6 दिसंबर, 2018

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

नई सुविधाएं

  • NavigationUI तरीकों के साथ इस्तेमाल किए जाने पर, डेस्टिनेशन लेबल अब android:label में {argName} इंस्टेंस को सही तर्क के साथ अपने-आप बदल देंगे b/80267266
  • नेविगेशन अब Support Library 28.0.0 पर निर्भर करता है b/120293333

नुकसान पहुंचा सकने वाले बदलाव

  • OnNavigatedListener का नाम बदलकर OnDestinationChangedListener कर दिया गया है b/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, सीरियलाइज़ किए जा सकने वाले ऑब्जेक्ट के साथ काम करता है. इसमें Enum वैल्यू भी शामिल हैं. ईनम टाइप, क्लास के नाम के बिना ईनम लिटरल का इस्तेमाल करके डिफ़ॉल्ट वैल्यू सेट कर सकते हैं (उदाहरण के लिए, app:defaultValue="READ") b/111316353
  • Safe Args, इस्तेमाल किए जा सकने वाले सभी टाइप की ऐरे के साथ काम करता है b/111487504
  • Safe Args अब संसाधन डायरेक्ट्री के सबफ़ोल्डर को अनदेखा करता है b/117893516
  • Safe Args, जहां ज़रूरी हो वहां @Override एनोटेशन जोड़ता है b/117145301

वर्शन 1.0.0-alpha07

29 अक्टूबर, 2018

नई सुविधाएं

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

नुकसान पहुंचा सकने वाले बदलाव

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

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

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

Safe Args

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

वर्शन 1.0.0-alpha06

20 सितंबर, 2018

नई सुविधाएं

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

  • बदलाव: Navigator navigate() तरीके में अब Navigator.Extras पैरामीटर का इस्तेमाल किया जाता है.
  • NavController का getGraph() तरीका अब NonNull b/112243286 है

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

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

Safe Args

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

वर्शन 1.0.0-alpha05

10 अगस्त, 2018

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

  • बैकस्टैक के गलत तरीके से काम करने की वजह बनने वाली गड़बड़ी को ठीक किया गया है. b/111907708
  • जनरेट की गई Args क्लास के equals() में मौजूद गड़बड़ी को ठीक किया गया है. b/111450897
  • Safe Args में बिल्ड फ़ेल होने की समस्या ठीक की गई. b/109409713
  • संसाधन आइडेंटिफ़ायर से Java के नामों में कन्वर्ज़न की समस्या ठीक करें b/111602491
  • Safe Args प्लगिन में, नल वैल्यू की अनुमति देने के बारे में गड़बड़ी के मैसेज ठीक किए गए.
  • उन एनोटेशन को जोड़ें जो नल हो सकते हैं.

वर्शन 1.0.0-alpha04

19 जुलाई, 2018

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

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

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

Safe Args

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

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

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

वर्शन 1.0.0-alpha03

12 जुलाई, 2018

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

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

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

Safe Args

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

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

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

वर्शन 1.0.0-alpha02

7 जून, 2018

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

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

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

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

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

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

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

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

  • नेस्ट किए गए ग्राफ़ पर वापस जाने के दौरान होने वाली IllegalArgumentException को ठीक किया गया है. b/80453447

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

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

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

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

  • कार्रवाइयों के लिए clearTask एट्रिब्यूट और NavOptions में इससे जुड़ा एपीआई अब काम नहीं करेगा. b/80338878

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

वर्शन 1.0.0-alpha01

8 मई, 2018

नेविगेशन की मदद से, ऐप्लिकेशन में नेविगेशन की सुविधा बनाई जा सकती है. यह शुरुआती रिलीज़ 1.0.0-alpha01 है.