नेविगेशन

नेविगेशन, Android ऐप्लिकेशन में 'डेस्टिनेशन' के बीच नेविगेट करने के लिए एक फ़्रेमवर्क है. यह एक जैसा एपीआई उपलब्ध कराता है. भले ही, डेस्टिनेशन को फ़्रैगमेंट, ऐक्टिविटी या अन्य कॉम्पोनेंट के तौर पर लागू किया गया हो.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
23 सितंबर, 2026 2.10.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.10.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.10.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

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

Groovy

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

Kotlin

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

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

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

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

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

Groovy

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

Kotlin

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

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

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

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

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

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

नई समस्या दर्ज करने का तरीका

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

वर्शन 2.10.2

23 सितंबर, 2026

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

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

  • androidx.lifecycle की डिपेंडेंसी को वर्शन 2.10.0 में अपडेट किया गया. I4505a9f9a

वर्शन 2.10.1

09 सितंबर, 2026

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

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

  • अगर NavHost ऐनिमेशन छोड़ देता है, तो अब यह छोड़े गए ऐनिमेशन के हिस्से के तौर पर sizeTransform को भी शामिल करेगा, ताकि अनचाही क्लिपिंग को रोका जा सके. (I4f995, b/550924680)

वर्शन 2.10.0

26 अगस्त, 2026

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

2.9.0 के बाद हुए मुख्य बदलाव:

  • NavHost अब एक ओवरलोड उपलब्ध कराता है. यह predictivePopEnterTransition और predictivePopExitTransition पैरामीटर स्वीकार करता है, ताकि अनुमानित बैक जेस्चर के दौरान कस्टम ट्रांज़िशन की अनुमति दी जा सके.
  • handleDeepLink में बदलाव किया गया है, ताकि सिर्फ़ मान्यता पाए डीप लिंक को हैंडल किया जा सके. बाकी सभी डीप लिंक को अनदेखा कर दिया जाएगा. अगर इसकी वजह से आपके ऐप्लिकेशन में कोई गड़बड़ी होती है, तो नेविगेशन ग्राफ़ में तय किए गए डीप लिंक के ज़रिए नेविगेट करने का विकल्प चुनें. Robolectric टेस्ट के लिए, आपको किसी भरोसेमंद पैकेज के लिए setPackage तरीके का इस्तेमाल करना पड़ सकता है.
  • NavBackStackEntryInfo को नेविगेशन इवेंट के दौरान, बैक स्टैक स्नैपशॉट दिखाने के लिए जोड़ा गया था. इससे, पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर के लिए बेहतर कस्टम ऐनिमेशन चालू हो जाते हैं.

अन्य प्लैटफ़ॉर्म के लिए सहायता

  • navigation-common, navigation-runtime, और navigation-testing मॉड्यूल में desktop, linux, macOS, iOS, javascript, WASM, watchos, और tvos के लिए सहायता जोड़ी गई है.

वर्शन 2.10.0-rc01

12 अगस्त, 2026

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

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

  • Navigation SDK के लिए, SDK टूल के वर्शन को एपीआई 24 पर ले जाया गया है. ऐसा AndroidX की बाकी लाइब्रेरी के साथ भी किया गया है. (I972da, b/474169350)

वर्शन 2.10.0-beta01

29 जुलाई, 2026

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

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

  • नेविगेशन इवेंट के दौरान बैकस्टैक स्नैपशॉट दिखाने के लिए, NavBackStackEntryInfo को लॉन्च किया गया है. इससे, बेहतर कस्टम प्रिडिक्टिव बैक ऐनिमेशन चालू किए जा सकते हैं. (Icb3b8)

वर्शन 2.10.0-alpha06

01 जुलाई, 2026

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

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

  • सिर्फ़ पहचाने गए डीप लिंक हैंडल किए जाएं, इसके लिए handleDeepLink में बदलाव किया गया (Id4fe3, b/509640056)
  • कंपोज़ेबल फ़ंक्शन को बड़ा करने के लिए, फ़्रैगमेंट आर्ग्युमेंट के बजाय डेस्टिनेशन से पूरी तरह से क्वालिफ़ाइड नाम का इस्तेमाल करने के लिए, ComposableFragment को बदल दिया गया है. (I65ded, b/509640586)
  • FragmentNavigator में क्रैश होने की समस्या को ठीक किया गया है. इसकी वजह से, ऑपरेशन ऑप्टिमाइज़ न होने पर, लेजिटिमेट फ़्रैगमेंट IllegalArgumentException थ्रो करते थे. (I093b0, b/340202276)
  • फ़्रैगमेंट के साथ नेविगेशन में एक गड़बड़ी को ठीक किया गया है. इसमें प्रोग्राम के हिसाब से ग्राफ़ सेट करने पर, उसे ठीक से रीस्टोर नहीं किया जा सका. (I41251, b/321147435)

वर्शन 2.10.0-alpha05

19 मई, 2026

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

वर्शन 2.10.0-alpha04

6 मई, 2026

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

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

  • NavHost को बेहतर बनाया गया है, ताकि पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की वजह से होने वाली रेस कंडिशन से होने वाली संभावित NullPointerException से बचा जा सके. (Ie36c6, b/500945998)

वर्शन 2.10.0-alpha03

22 अप्रैल, 2026

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

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

  • Compose compileSdk को एपीआई 37 पर अपडेट किया गया. इसका मतलब है कि Compose का इस्तेमाल करने के लिए, AGP का कम से कम 9.2.0 वर्शन होना ज़रूरी है. (Id45cd, b/413674743)

बाहरी योगदान

  • watchos और tvos टारगेट को navigation-common, navigation-runtime, और navigation-testing मॉड्यूल में जोड़ा गया (I60e46)
  • DefaultNavTransitions को सार्वजनिक करें (Ide293)

वर्शन 2.10.0-alpha02

25 मार्च, 2026

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

वर्शन 2.10.0-alpha01

11 मार्च, 2026

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

नई सुविधाएं

  • NavHost अब एक ओवरलोड उपलब्ध कराता है. यह predictivePopEnterTransition और predictivePopExitTransition पैरामीटर स्वीकार करता है, ताकि अनुमानित बैक जेस्चर के दौरान कस्टम ट्रांज़िशन की अनुमति दी जा सके. (Iac9b0, b/478294569)

एसडीके का कम से कम वर्शन अपडेट करना

  • डिफ़ॉल्ट minSdk, AndroidX की बाकी लाइब्रेरी के साथ-साथ API 21 से API 23 तक रहा है. (Ibdfca, b/380448311, b/435705964, b/435705223)

बाहरी योगदान

  • navigation:navigation-common, navigation:navigation-runtime, और navigation:navigation-testing अब Android के साथ-साथ डेस्कटॉप, Linux, macOS, iOS, JavaScript, और WASM पर भी काम करते हैं. धन्यवाद, कंस्टेंटिन त्स्खोवरेबोव!(I035d9, Iec624, I1615d)

वर्शन 2.9

वर्शन 2.9.8

22 अप्रैल, 2026

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

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

  • NavHost को बेहतर बनाया गया है, ताकि पीछे जाने पर झलक दिखाने वाले हाथ के जेस्चर की वजह से होने वाली रेस कंडिशन से होने वाले संभावित NullPointerException से बचा जा सके. (Ie36c6, b/500945998)

वर्शन 2.9.7

28 जनवरी, 2026

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

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

  • Google की सेवाओं के साथ इस्तेमाल किए जाने पर, नेविगेशन SafeArgs में अब कॉन्फ़िगरेशन कैश मेमोरी से जुड़ी समस्याएं नहीं आती हैं. (I57cda, b/458071608)
  • नेविगेशन-टेस्टिंग में, टेस्ट SavedStateHandle कंस्ट्रक्टर की समस्या ठीक की गई है. इसमें List<String> डिकोड नहीं हो रहा था. (I26aac,b/454180135)

वर्शन 2.9.6

05 नवंबर, 2025

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

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

  • Navigation SafeArgs प्लगिन को, Android Gradle प्लगिन के नए एपीआई पर माइग्रेट कर दिया गया है. इससे यह पक्का हो जाएगा कि यह AGP 8.4.2 और इसके बाद के सभी वर्शन के साथ काम करता है. इन बदलावों की वजह से, प्लगिन से जनरेट की गई फ़ाइलों की आउटपुट डायरेक्ट्री को AGP की ओर से दी गई डिफ़ॉल्ट जगह पर बदल दिया गया है. (Ie09d6, I7c431, b/203559535, b/293920476, b/269532448, b/443261197)
  • AGP 9.0.0-alpha04+ के साथ इस्तेमाल किए जाने पर, Navigation SafeArgs प्लगिन को अब useAndroidX प्रॉपर्टी सेट करने की ज़रूरत नहीं होगी. (I6c3a4, b/444746731, b/443106400)

वर्शन 2.9.5

24 सितंबर, 2025

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

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

  • नेविगेशन Safe Args अब AGP 9.0 में, पहले से मौजूद Kotlin के लिए उपलब्ध कराई गई सुविधा को मैनेज कर सकते हैं. (I1d9d76)

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

  • Navigation Safe Args प्लगिन अब Android Gradle प्लगिन 8.4.2 पर निर्भर करता है. (b/431847270, I5932a)

वर्शन 2.9.4

10 सितंबर, 2025

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

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

  • NavHost ट्रांज़िशन में हैंडलर बंद होने के बाद, फ़्रेम के बीच में पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर इवेंट डिलीवर होने पर क्रैश होने से रोकें. (I5667c, b/384186542)

वर्शन 2.9.3

30 जुलाई, 2025

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

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

  • NavController में मौजूद उस गड़बड़ी को ठीक किया गया है जिसकी वजह से OnDestinationChangedListeners का इस्तेमाल करते समय ConcurrentModificationException होता था. (If7406, b/417784831)
  • navigate(uri, navOptions,navigationExtras) का इस्तेमाल करते समय होने वाली गड़बड़ी को ठीक किया गया. इस गड़बड़ी में, अतिरिक्त जानकारी को अनदेखा किया जा रहा था. (I67fb7, b/430336813)

वर्शन 2.9.2

16 जुलाई, 2025

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

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

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

वर्शन 2.9.1

2 जुलाई, 2025

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

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

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

वर्शन 2.9.0

7 मई, 2025

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

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

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

SupportingPane Interface

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

Compose Kotlin Multiplatform

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

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

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

वर्शन 2.9.0-rc01

23 अप्रैल, 2025

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

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

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

वर्शन 2.9.0-beta01

9 अप्रैल, 2025

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

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

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

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

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

वर्शन 2.9.0-alpha09

26 मार्च, 2025

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

नई सुविधाएं

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

वर्शन 2.9.0-alpha08

12 मार्च, 2025

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

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

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

बाहरी योगदान

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

वर्शन 2.9.0-alpha07

26 फ़रवरी, 2025

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

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

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

बाहरी योगदान

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

मौजूदा समस्याएं

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

वर्शन 2.9.0-alpha06

12 फ़रवरी, 2025

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

नई सुविधाएं

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

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

  • NavController में मौजूद एक गड़बड़ी को ठीक किया गया है. इसमें, backStack की स्थितियों को सूची में सेव किए जाने पर, उन्हें गलत तरीके से ऐरे में वापस लाने की कोशिश की जाती थी. (Idfb9b)
  • नेविगेशन 2.8.7 से: नेविगेशन 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)

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

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

मौजूदा समस्याएं

  • Navigation 2.8.* में जोड़े गए नए लिंट नियमों में एक समस्या है. इसकी वजह से, Android Gradle प्लगिन 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 में ये बदलाव शामिल हैं.

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

  • नेविगेशन 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)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से Navigation Compose का इस्तेमाल करते समय, अचानक स्केल ऐनिमेशन दिखता था. ऐसा तब होता था, जब मौजूदा ऐनिमेशन खत्म होने वाले फ़्रेम में ही नेविगेट करने के लिए कॉल किया जाता था. (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) या इसके बाद के वर्शन के साथ लिंट चलाने की कोशिश करते समय, नेविगेशन लिंट, कस्टम लिंट चेक से जुड़ी पुरानी गड़बड़ी दिखाएगा. (b/371926651)

वर्शन 2.8.2

2 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

वर्शन 2.8.1

18 सितंबर, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.0

4 सितंबर, 2024

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

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

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

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

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

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

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

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

  • डुप्लीकेट या शेयर की गई मंज़िलों पर नेविगेट करते समय, नेविगेशन की सुविधा, ग्राफ़ में मौजूद मौजूदा जगह से सबसे मिलती-जुलती मंज़िल को प्राथमिकता देगी. (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 के साथ पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर का इस्तेमाल करने पर, पॉप किए जा रहे डेस्टिनेशन का 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 लीक होने की समस्या ठीक की गई है. इस समस्या में, किसी डेस्टिनेशन पर कई saveState कॉल करने पर, कई स्थितियां सेव हो जाती थीं. हालांकि, सिर्फ़ पहली स्थिति को वापस लाया जा सकता था. (I598b0, b/309559751)
  • ऐप्लिकेशन बार के टाइटल में जानकारी भरने के लिए NavigationUI हेल्पर का इस्तेमाल करने पर, स्ट्रिंग के अलावा अन्य आर्ग्युमेंट को ठीक से नहीं दिखाने की समस्या को ठीक किया गया है. (#636, b/316676794)

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

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

बाहरी योगदान

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

वर्शन 2.7.7

वर्शन 2.7.7

7 फ़रवरी, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.7.6

वर्शन 2.7.6

13 दिसंबर, 2023

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

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

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

वर्शन 2.7.5

वर्शन 2.7.5

1 नवंबर, 2023

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

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

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

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

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

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

  • फ़्रैगमेंट के साथ नेविगेशन की सुविधा अब 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 में ये बदलाव शामिल हैं.

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

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

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

  • नेविगेशन कंपोज़ अब कंपोज़ 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 अब स्टेबल हो गया है. इसलिए, हम नेविगेशन के साथ चलने वाले ऐनिमेशन के कोड को वापस Navigation Compose में ले जा सके.

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

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

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

  • Navigation Compose में मौजूद NavHost अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. भले ही, ऐक्टिविटी को STOP किया गया हो और फिर से शुरू किया गया हो. (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 में ये बदलाव शामिल हैं.

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

  • उस समस्या को ठीक कर दिया गया है जिसमें EnterTransition और ExitTransition लैम्डा, NavHost के हिस्से के तौर पर बनाए जाते थे. ऐसा हो सकता था कि 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 अब स्टेबल हो गया है. इसलिए, हम नेविगेशन के साथ चलने वाले ऐनिमेशन के कोड को वापस Navigation Compose में ले जा सके.

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

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

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

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

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

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

वर्शन 2.6.0

वर्शन 2.6.0

7 जून, 2023

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

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

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

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

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

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

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

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

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

वर्शन 2.6.0-alpha09

5 अप्रैल, 2023

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

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

  • अमान्य रूट की जांच से जुड़ी समस्या ठीक की गई है. अगर किसी NavDestination में नॉन-नलेबल NavArgument शामिल है, तो इस डेस्टिनेशन के रूट में, नॉन-नलेबल NavArgument के नाम वाले आर्ग्युमेंट के लिए प्लेसहोल्डर शामिल होने चाहिए. (Ic62bf, b/274697949)
  • अगर नेविगेशन ऑपरेशन में, 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 की मदद से, अब NavController को NavHostFragment से अटैच करते ही FragmentManager वापस पाया जा सकता है. इसके लिए, onCreate() तक इंतज़ार करने की ज़रूरत नहीं है. (Ic6382, b/220186282)

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

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

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

वर्शन 2.6.0-alpha07

8 मार्च, 2023

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

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

  • नेविगेशन 2.5.3 से: 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)

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

  • Navigation लाइब्रेरी अब Lifecycle 2.5.1 पर निर्भर करती है. (Ib4451)
  • Navigation library अब Activity 1.5.1 पर निर्भर करती है. (I3efe8)
  • नेविगेशन लाइब्रेरी अब Fragment 1.5.1 पर निर्भर करती है. (I56177)

वर्शन 2.5.0

29 जून, 2022

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

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

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

Navigation SafeArgs

  • Navigation Safe Args ने Android Gradle Plugin डिपेंडेंसी को अपग्रेड किया है, ताकि यह 7.0.4 पर काम कर सके. इससे, 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 फ़ाइल में, <deeplink> एलिमेंट को <activity> एलिमेंट के अंदर रखने पर चेतावनी देने के लिए, नया लिंट नियम जोड़ा गया है.(Ic15a5, b/178403185)

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

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

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

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

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

  • 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 बनाने के लिए, by navGraphViewModels में CreationExtras पास किया जा सकता है. (I29217, b/217618359)

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

नई सुविधाएं

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

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

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

Safe Args

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

वर्शन 2.4.2

वर्शन 2.4.2

6 अप्रैल, 2022

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

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

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

वर्शन 2.4.1

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

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

वर्शन 2.4.0

वर्शन 2.4.0

26 जनवरी, 2022

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

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

  • सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे, NavType सबक्लास) की नल होने की स्थिति में सुधार हुआ है. Kotlin के सभी एक्सटेंशन फ़ंक्शन, जो पहले -ktx आर्टफ़ैक्ट का हिस्सा थे उन्हें उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है. -ktx आर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे.
  • navigation-fragment आर्टफ़ैक्ट में, अब नए AbstractListDetailFragment के ज़रिए दो पैन वाले लेआउट का पहले से बना हुआ वर्शन शामिल है. यह फ़्रैगमेंट, सूची वाले पैनल को मैनेज करने के लिए SlidingPaneLayout का इस्तेमाल करता है. यह सूची वाला पैनल, आपकी सब-क्लास उपलब्ध कराती है. साथ ही, यह फ़्रैगमेंट जानकारी वाले पैनल को मैनेज करने के लिए भी NavHostFragment का इस्तेमाल करता है. इसे लागू करने के उदाहरण में देखा जा सकता है.
  • NavController पर मौजूद currentBackStackEntryAsFlow() तरीके से, एक 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 डीएसएल

नेविगेशन के पिछले वर्शन में, हर डेस्टिनेशन के लिए एक कॉन्स्टेंट पूर्णांक आईडी होता था. इससे, डेस्टिनेशन की पहचान उसके जैसे अन्य डेस्टिनेशन से अलग तौर पर की जाती थी. साथ ही, इसकी मदद से सीधे तौर पर या किसी कार्रवाई के ज़रिए उस डेस्टिनेशन पर navigate() किया जा सकता था. यह अब भी मान्य और काम का है. खास तौर पर, उन मामलों में जहां आपको एक्सएमएल में अपना नेविगेशन ग्राफ़ तय करना होता है और अपने-आप जनरेट होने वाले R.id कॉन्स्टेंट या Safe Args का इस्तेमाल करना होता है. Safe Args, इन कॉन्स्टेंट का इस्तेमाल करके, बिल्ड प्रोसेस में लगने वाले समय पर कोड जनरेट करता है. हालांकि, यूनीक पूर्णांकों का यह सिस्टम, सिमैंटिक मीनिंग और एक्सप्रेसिवनेस को कैप्चर नहीं करता है. इसकी ज़रूरत, Navigation Kotlin DSL के ज़रिए रनटाइम पर प्रोग्राम के हिसाब से बनाए गए पूरी तरह से डाइनैमिक ग्राफ़ को सपोर्ट करने के लिए होती है.

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

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

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

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

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

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

Navigation Compose

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

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

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

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

सभी मामलों में, 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 का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी.

सामान्य समस्याएं

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

वर्शन 2.4.0-rc01

15 दिसंबर, 2021

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

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

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

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

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

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

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

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

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

वर्शन 2.4.0-beta02

3 नवंबर, 2021

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

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

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

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

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

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

  • उस समस्या को ठीक कर दिया गया है जिसमें NavHost को सीधे तौर पर गतिविधि के setContent() में जोड़ने पर, NavBackStackEntries को Lifecycle.State.STARTED से Lifecycle.State.CREATED में ले जाने के बाद, नीचे की ओर पुश किया जा रहा था. (Ia5ac1, b/203536683)
  • रेस कंडीशन को ठीक किया गया है. इसमें, डायलॉग के दिखने से पहले बैक स्टैक से DialogFragment डेस्टिनेशन को हटाने पर, डायलॉग खारिज नहीं होता था. इससे, उपयोगकर्ता के डायलॉग को मैन्युअल तरीके से खारिज करने पर क्रैश हो जाता था. (I687e5)
  • उस समस्या को ठीक किया गया है जिसमें NavigationUI पर मौजूद onNavDestinationSelected API, 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 API को अब एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. (I93f6f)

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

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

वर्शन 2.4.0-alpha10

29 सितंबर, 2021

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

नई सुविधाएं

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

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

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

वर्शन 2.4.0-alpha09

15 सितंबर, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

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

वर्शन 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 का इस्तेमाल करता है. यह सूची वाला पैनल, आपकी सब-क्लास उपलब्ध कराती है. साथ ही, यह फ़्रैगमेंट जानकारी वाले पैनल को मैनेज करने के लिए भी 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)
  • 1.5.0 से पहले के Kotlin वर्शन का इस्तेमाल करके ऐप्लिकेशन बनाने पर, SafeArgs अब काम नहीं करेगा. (Icd1ff, b/190739257)

वर्शन 2.4.0-alpha03

16 जून, 2021

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

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

  • डाइनैमिक ग्राफ़ पर जाने के लिए, दो बार navigate() कॉल करने की ज़रूरत पड़ती थी. इस समस्या को ठीक कर दिया गया है. (I7785c, b/188859835)
  • नेविगेशन 2.4.0-alpha01 में हुई एक समस्या को ठीक किया गया है. इस समस्या की वजह से, टॉप लेवल डेस्टिनेशन पर होने पर setupActionBarWithNavController(), 'ऊपर जाएं' आइकॉन को ठीक से नहीं हटाता था. (I5d443, b/189868637)
  • NavController के रूट ग्राफ़ को पहले पॉप करने के बाद, popBackStack() को कॉल करते समय होने वाली IllegalStateException को ठीक किया गया. (I2a330, b/190265699)
  • 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 में ये बदलाव शामिल हैं.

नई सुविधाएं

  • अब Activity, Fragment, और Dialog डेस्टिनेशन के साथ-साथ, पूरे 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 मिलता है. यह तब ट्रिगर होता है, जब मौजूदा NavBackStackEntry बदलता है. इस फ़्लो का इस्तेमाल, OnDestinationChangedListener को मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है. (I19c4a, #89, b/163947280)

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

NavController, डेस्टिनेशन की पिछली गतिविधियों को मैनेज करता है. जब आप किसी डेस्टिनेशन पर navigate() करते हैं, तो वह उसे पिछली गतिविधियों में जोड़ देता है. इसके अलावा, जब आप popBackStack() को कॉल करते हैं या सिस्टम के 'वापस जाएं' बटन को ट्रिगर करते हैं, तो वह डेस्टिनेशन को पिछली गतिविधियों से हटा देता है. बैक स्टैक को सेव और रीस्टोर करने की सुविधा देने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूद <action> एंट्री और मौजूदा NavOptions क्लास को बड़ा किया गया है. (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 API का हिस्सा बन गया है. इससे, Navigation Kotlin DSL के ज़रिए ग्राफ़ बनाते समय, पूर्णांक आईडी का इस्तेमाल करने का विकल्प मिलता है. (b/172823546)

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

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

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

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

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

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

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

  • सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनेरिक का इस्तेमाल करने वाली क्लास (जैसे कि NavType सबक्लास) की नल होने की स्थिति में सुधार हुआ है. Kotlin के सभी एक्सटेंशन फ़ंक्शन, जो पहले -ktx आर्टफ़ैक्ट का हिस्सा थे उन्हें उनके मुख्य आर्टफ़ैक्ट में ले जाया गया है. -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)

Compose Compatibility

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

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

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

बाहरी योगदान

  • simonschiller का धन्यवाद. उन्होंने Safe Args के लिए, हर NavArgs क्लास के लिए fromSavedStateHandle() तरीके को जनरेट करने की सुविधा बनाई है. (#122, b/136967621)
  • डीप लिंक से Enum आर्ग्युमेंट को पार्स करने के लिए, केस-इनसेंसिटिव बनाने के लिए धन्यवाद Bradleycorn. (#152, b/135857840)
  • osipxd का धन्यवाद. उन्होंने उस समस्या को ठीक किया है जिसमें ट्रेलिंग आर्ग्युमेंट प्लेसहोल्डर, उन डीप लिंक से ज़्यादा प्राथमिकता लेते थे जिनका सफ़िक्स पूरी तरह से मेल खाता था. (#153, b/184072811)
  • Safe Args को KotlinPoet 1.8.0 पर निर्भर बनाने के लिए, tatocaster का धन्यवाद. (#172, b/183990444)
  • 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() की सुविधा देने के लिए, Navigation Compose अब Lifecycle ViewModel Compose 1.0.0-alpha01 पर निर्भर करता है. (I7a374)
  • NavHost अब Activity-Compose 1.3.0-alpha01 से मिले नए LocalOnBackPressedDispatcherOwner का इस्तेमाल करता है, ताकि NavController पर सेट किए गए OnBackPressedDispatcher को हासिल किया जा सके. (I65b12)

वर्शन 1.0.0-alpha06

28 जनवरी, 2021

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

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

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

वर्शन 1.0.0-alpha05

13 जनवरी, 2021

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

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

वर्शन 1.0.0-alpha04

16 दिसंबर, 2020

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

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

वर्शन 1.0.0-alpha03

2 दिसंबर, 2020

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

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

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

वर्शन 1.0.0-alpha02

11 नवंबर, 2020

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

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

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

वर्शन 1.0.0-alpha01

28 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

वर्शन 2.3.5

वर्शन 2.3.5

7 अप्रैल, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.3.4

वर्शन 2.3.4

10 मार्च, 2021

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

नई सुविधाएं

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

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

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

बाहरी योगदान

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

वर्शन 2.3.3

वर्शन 2.3.3

27 जनवरी, 2021

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

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

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

वर्शन 2.3.2

वर्शन 2.3.2

2 दिसंबर, 2020

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

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

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

वर्शन 2.3.1

वर्शन 2.3.1

14 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

24 जून, 2020

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

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

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

मौजूदा समस्याएं

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

वर्शन 2.3.0-rc01

10 जून, 2020

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

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

  • डेस्टिनेशन के ऐसे इंस्टेंस को 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 में ये बदलाव शामिल हैं.

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

  • उस समस्या को ठीक किया गया है जिसमें प्रोसेस बंद होने के बाद, Lifecycle का NavBackStackEntry ठीक से अपडेट नहीं होता था. (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.1.0 पर निर्भर करता है, ताकि डेवलपर को नई डिपेंडेंसी पर जाने के लिए मजबूर न किया जाए. ऐसा तब होता है, जब नेविगेशन Core 1.2.0 में मौजूद किसी भी नए एपीआई पर निर्भर नहीं होता है.

वर्शन 2.3.0-alpha02

19 फ़रवरी, 2020

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

नई सुविधाएं

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

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

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

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

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

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

  • नेविगेशन अब 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 मिलता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए आर्ग्युमेंट भी मिलते हैं.
  • लाइफ़साइकल ViewModel SavedState इंटिग्रेशन: 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)

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

  • नेविगेशन अब Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, Activity 1.1.0-rc03, और Fragment 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 अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल तब किया जाता है, जब by navGraphViewModels() या ViewModelProvider कंस्ट्रक्टर का इस्तेमाल NavController.getViewModelStoreOwner() से मिले ViewModelStoreOwner के साथ किया जाता है. (b/135716331)

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

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

5 सितंबर, 2019

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

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

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

वर्शन 2.1.0-rc01

7 अगस्त, 2019

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

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

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

वर्शन 2.1.0-beta02

19 जुलाई, 2019

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

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

  • अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटाया गया. यह डिपेंडेंसी 2.1.0-beta01 में जोड़ी गई थी. (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 के लिए, app:argType के बिना android:defaultValue=”@null” को अब 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 के बराबर में बदलता है.

Navigation 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 कोड, अब Kotlin के कीवर्ड को सही तरीके से एस्केप करता है. जैसे, R क्लास से जुड़े पैकेज के नाम में in और fun. b/126020455

वर्शन 1.0.0-rc01

21 फ़रवरी, 2019

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

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

  • Fragments और singleTop नेविगेशन ऑपरेशन का इस्तेमाल करते समय आने वाली समस्या को ठीक किया गया b/124294805

वर्शन 1.0.0-beta02

12 फ़रवरी, 2019

इस रिलीज़ में, कई छोटे-मोटे सुधार किए गए हैं और ज़रूरी गड़बड़ियां ठीक की गई हैं.

नई सुविधाएं

  • अब 0 को reference आर्ग्युमेंट के लिए android:defaultValue के तौर पर इस्तेमाल किया जा सकता है. b/124248602

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

  • अब सटीक डीप लिंक मैच को, .* या आर्ग्युमेंट मैच वाले डीप लिंक से ज़्यादा प्राथमिकता दी जाती है. b/123969518

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

  • popBackStack() और navigateUp अब पिछली गतिविधियों पर मौजूद आखिरी डेस्टिनेशन को पॉप करते समय, false को सही तरीके से वापस लाते हैं. इससे 1.0.0-beta01 में हुई रिग्रेशन की समस्या ठीक हो जाती है. b/123933201
  • नेविगेशन अब सेव किए गए इंस्टेंस की स्थिति को वापस लाते समय, ClassLoader को सही तरीके से सेट करता है. इससे Navigator की सेव की गई स्थिति या NavDestination को भेजे गए आर्ग्युमेंट में कस्टम क्लास का इस्तेमाल करते समय आने वाली समस्याओं से बचा जा सकता है. b/123893858
  • सेव किए गए इंस्टेंस की स्थिति से Parcelable[] आर्ग्युमेंट को वापस लाने पर, Safe Args से जनरेट की गई NavArgs क्लास अब क्रैश नहीं होती हैं. b/123963545
  • Safe Args अब जनरेट की गई गैर-ज़रूरी Kotlin क्लास को ठीक से हटा देता है. b/124120883

वर्शन 1.0.0-beta01

4 फ़रवरी, 2019

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

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

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

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

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

वर्शन 1.0.0-alpha11

23 जनवरी, 2019

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

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

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

वर्शन 1.0.0-alpha10

23 जनवरी, 2019

मौजूदा समस्याएं

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

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

नई सुविधाएं

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

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

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

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

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

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

  • NavDeepLinkBuilder अब एक ही डेस्टिनेशन पर एक साथ कई PendingIntent को सही तरीके से हैंडल करता है. इसके लिए, यह उन आर्ग्युमेंट का इस्तेमाल करता है जिन्हें आपने यूनीकनेस का पता लगाने के लिए पास किया है. b/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

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

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

वर्शन 1.0.0-alpha07

29 अक्टूबर, 2018

नई सुविधाएं

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

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

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

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

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

Safe Args

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

वर्शन 1.0.0-alpha06

20 सितंबर, 2018

नई सुविधाएं

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

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

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

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

Safe Args

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

वर्शन 1.0.0-alpha05

10 अगस्त, 2018

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

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

वर्शन 1.0.0-alpha04

19 जुलाई, 2018

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

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

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

Safe Args

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

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

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

वर्शन 1.0.0-alpha03

12 जुलाई, 2018

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

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

  • Toolbar के लिए NavigationUI.setupWithNavController तरीका जोड़ा गया है b/109868820
  • CollapsingToolbarLayout के लिए, NavigationUI.setupWithNavController तरीका जोड़ा गया है b/110887183
  • popBackStack() अब तब 'गलत' वैल्यू दिखाता है, जब पिछली गतिविधियां खाली हों या दिया गया डेस्टिनेशन आईडी पिछली गतिविधियों में न हो b/110893637
  • 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
  • ग्राफ़ b/109909461 में पहले डेस्टिनेशन के साथ setPopUpTo का इस्तेमाल करने से जुड़ी समस्याएं ठीक की गईं
  • उस समस्या को ठीक किया गया है जिसमें सभी app:defaultValue वैल्यू को स्ट्रिंग के तौर पर पास किया जा रहा था b/110710788
  • Android Gradle प्लगिन 3.2 बीटा 01 के साथ बंडल किया गया aapt2, अब नेविगेशन एक्सएमएल फ़ाइलों में मौजूद हर android:name एट्रिब्यूट के लिए, नियमों को बनाए रखने की सुविधा जोड़ता है b/79874119
  • डिफ़ॉल्ट FragmentNavigator को बदलते समय मेमोरी लीक होने की समस्या ठीक की गई b/110900142

वर्शन 1.0.0-alpha02

7 जून, 2018

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha01

8 मई, 2018

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