नेविगेशन

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

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

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

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

ग्रूवी

dependencies {
  def nav_version = "2.8.0"

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

}

Kotlin

dependencies {
  val nav_version = "2.8.0"

  // 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")

}

Safe Args

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

ग्रूवी

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

Kotlin

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

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

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

ग्रूवी

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

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

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

ग्रूवी

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

Kotlin

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

आपके प्रॉडक्ट में android.useAndroidX=true होना ज़रूरी है gradle.properties फ़ाइल के अनुसार AndroidX पर माइग्रेट करना.

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

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

सुझाव

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

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

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

वर्शन 2.9

वर्शन 2.9.0-alpha02

30 अक्टूबर, 2024

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

बाहरी योगदान

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

वर्शन 2.9.0-alpha01

16 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

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

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

आम समस्याएं

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

वर्शन 2.8

वर्शन 2.8.3

16 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

आम समस्याएं

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

वर्शन 2.8.2

2 अक्टूबर, 2024

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

नई सुविधाएं

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

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

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

वर्शन 2.8.1

18 सितंबर, 2024

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.8.0

4 सितंबर, 2024

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

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

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

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

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

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

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

नेविगेशन कंपोज़िशन का अनुमानित बैक

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

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

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

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

अन्य बदलाव

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

वर्शन 2.8.0-rc01

21 अगस्त, 2024

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

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

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

वर्शन 2.8.0-beta07

7 अगस्त, 2024

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

आम समस्याएं

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

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

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

वर्शन 2.8.0-beta03

12 जून, 2024

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

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

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

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

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

वर्शन 2.8.0-beta02

29 मई, 2024

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

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

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

वर्शन 2.8.0-beta01

14 मई, 2024

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

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

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

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

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

वर्शन 2.8.0-alpha08

1 मई, 2024

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

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

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

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

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

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

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha07

17 अप्रैल, 2024

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

नई सुविधाएं

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

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

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

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

वर्शन 2.8.0-alpha06

3 अप्रैल, 2024

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

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

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

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

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

वर्शन 2.8.0-alpha05

20 मार्च, 2024

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

नई सुविधाएं

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

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

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

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

  • डीप लिंक में क्वेरी पैरामीटर अब तर्क के नाम (जैसे कि {argName}) के आस-पास कर्ली ब्रैकेट के तौर पर वैल्यू को, स्ट्रिंग पर आधारित NavTypes के लिए मान्य वैल्यू के तौर पर इस्तेमाल करने की अनुमति देता है. इससे उस समस्या को ठीक किया जाता है जहां इस तरह की वैल्यू को सभी टाइप के लिए अमान्य (या वैल्यू मौजूद न होने) माना जाता है. (I18302, b/327274038)
  • NavController फ़ंक्शन, navigate या popBackStack जैसे रास्तों के साथ काम करते हैं. अब ये फ़ंक्शन, अरे NavTypes के आर्ग्युमेंट से भरे रास्तों से सही तरीके से मैच कर सकते हैं. (Iea805, b/327229511)

वर्शन 2.8.0-alpha04

6 मार्च, 2024

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

नई सुविधाएं

  • अब नेविगेशन कंपोज़ में, अपने ट्रांज़िशन के लिए SizeTranform तय किया जा सकता है. इसके लिए, उन्हें composable और/या navigation फ़ंक्शन के लिए शुरू करने के हिस्से के तौर पर तय करें. (I91062, b/296912651)

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

  • Compose नेविगेशन में NavHost का इस्तेमाल करने पर, जेस्चर के बिना सिस्टम के 'वापस जाएं' बटन का इस्तेमाल करने पर, ट्रांज़िशन सही से न दिखने की समस्या को ठीक किया गया है. (Iceeae, b/325998468)

वर्शन 2.8.0-alpha03

21 फ़रवरी, 2024

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

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

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

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

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

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

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

वर्शन 2.8.0-alpha02

7 फ़रवरी, 2024

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

नई सुविधाएं

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

वर्शन 2.8.0-alpha01

24 जनवरी, 2024

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.7.7

वर्शन 2.7.7

7 फ़रवरी, 2024

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

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

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

बाहरी योगदान

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

वर्शन 2.7.6

वर्शन 2.7.6

13 दिसंबर, 2023

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

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

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

वर्शन 2.7.5

वर्शन 2.7.5

1 नवंबर, 2023

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

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

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

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

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

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

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

वर्शन 2.7.4

वर्शन 2.7.4

4 अक्टूबर, 2023

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

नई सुविधाएं

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

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

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

वर्शन 2.7.3

वर्शन 2.7.3

20 सितंबर, 2023

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

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

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

वर्शन 2.7.2

वर्शन 2.7.2

6 सितंबर, 2023

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

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

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

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

  • नेविगेशन कंपोज़, अब Compose 1.5.1 पर निर्भर करता है.

वर्शन 2.7.1

वर्शन 2.7.1

23 अगस्त, 2023

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

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

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

वर्शन 2.7.0

वर्शन 2.7.0

9 अगस्त, 2023

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

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

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

AnimatedContent अब पहले से हिल रहा है, इसलिए हम कोड को Accompanist नेविगेशन ऐनिमेशन से वापस नेविगेशन Compose में ले जा सके.

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

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

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

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

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

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

वर्शन 2.7.0-rc01

26 जुलाई, 2023

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

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

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

आम समस्याएं

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

वर्शन 2.7.0-beta02

28 जून, 2023

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

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

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

वर्शन 2.7.0-beta01

7 जून, 2023

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

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

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

वर्शन 2.7.0-alpha01

24 मई, 2023

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

Acompanist के ऐनिमेशन

AnimatedContent अब पहले से हिल रहा है, इसलिए हम कोड को Accompanist नेविगेशन ऐनिमेशन से वापस नेविगेशन Compose में ले जा सके.

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

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

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

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

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

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

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

  • नेविगेशन ग्राफ़ का आईडी AppBarConfiguration को पास करते समय (जैसे, Menu के ज़रिए), NavigationUI अब ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क करने के बजाय, सिर्फ़ उस नेविगेशन ग्राफ़ के स्टार्ट डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर मानता है. किसी डेस्टिनेशन का आईडी पास करने का तरीका पहले जैसा ही रहेगा. यह सुविधा, AppBarConfiguration पर मौजूद नए isTopLevelDestination फ़ंक्शन की मदद से, आपके कोड में भी उपलब्ध है.
  • टॉप ऐप्लिकेशन बार के साथ काम करने के लिए, NavigationUI में मौजूद setupWithNavController इंटिग्रेशन अब आपके android:label में मिले ReferenceType आर्ग्युमेंट के लिए R.string वैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स कर देंगे. ऐसा, अपने-आप जनरेट हुए रिसॉर्स इंटिजर को आउटपुट करने के बजाय किया जाएगा.
  • 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)
  • Action/MimeType के आधार पर डीपलिंक नेविगेशन अब काम नहीं करेगा. ऐसा तब होगा, जब नेविगेशन ऑपरेशन में कोई ऐसा NavArgument मौजूद न हो जिसे नॉल-वैल्यू नहीं दी जा सकती. यह NavArgument, Action/MimeType से मैच करने वाले NavDestination के लिए ज़रूरी होता है. (Ibfa17, b/271777424)
  • जब NavController, पिछले ग्राफ़ के रास्ते और डेस्टिनेशन वाले ग्राफ़ को सेट करता है, तो अब यह अपने मौजूदा ग्राफ़ नोड और बैक स्टैक डेस्टिनेशन को नए इंस्टेंस से सही तरीके से बदल देता है. इससे, नेविगेशन कंपोज़ में स्टेटस सेव किए बिना onLaunchSingleTop का इस्तेमाल करने पर होने वाली क्रैश की समस्या ठीक हो जाती है. इससे, रूट ग्राफ़ बिल्ड और गलत बैक स्टैक से जुड़े डेस्टिनेशन पर नेविगेट करने से जुड़ी गड़बड़ी भी ठीक हो जाती है. (I5bc58, b/275258161, b/275407804)

वर्शन 2.6.0-alpha08

22 मार्च, 2023

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

नई सुविधाएं

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

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

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

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

वर्शन 2.6.0-alpha07

8 मार्च, 2023

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

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

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

वर्शन 2.6.0-alpha06

22 फ़रवरी, 2023

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

नई सुविधाएं

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

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

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

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

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

आम समस्याएं

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

वर्शन 2.6.0-alpha05

8 फ़रवरी, 2023

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.6.0-alpha04

9 नवंबर, 2022

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.6.0-alpha03

24 अक्टूबर, 2022

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

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

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

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

वर्शन 2.6.0-alpha02

5 अक्टूबर, 2022

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

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

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

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

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

वर्शन 2.6.0-alpha01

7 सितंबर, 2022

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.5

वर्शन 2.5.3

24 अक्टूबर, 2022

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

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

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

वर्शन 2.5.2

7 सितंबर, 2022

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

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

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

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

वर्शन 2.5.1

27 जुलाई, 2022

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

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

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

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

वर्शन 2.5.0

29 जून, 2022

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

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

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

Navigation SafeArgs

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

अन्य बदलाव

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

वर्शन 2.5.0-rc02

15 जून, 2022

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

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

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

वर्शन 2.5.0-rc01

11 मई, 2022

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

नई सुविधाएं

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

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

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

वर्शन 2.5.0-beta01

20 अप्रैल, 2022

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

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

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

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

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

वर्शन 2.5.0-alpha04

6 अप्रैल, 2022

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

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

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

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

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

वर्शन 2.5.0-alpha03

23 फ़रवरी, 2022

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

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

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

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

नई सुविधाएं

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

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

Safe Args

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

वर्शन 2.4.2

वर्शन 2.4.2

6 अप्रैल, 2022

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

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

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

वर्शन 2.4.1

वर्शन 2.4.1

9 फ़रवरी, 2022

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

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

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

वर्शन 2.4.0

वर्शन 2.4.0

26 जनवरी, 2022

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

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

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

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI के उन तरीकों को अपडेट किया गया है जिनमें BottomNavigationView का इस्तेमाल किया जाता था. अब इनमें Material 1.4.0 में पेश किए गए NavigationBarView सुपरक्लास का इस्तेमाल किया जाएगा. इससे इन तरीकों का इस्तेमाल NavigationRailView के साथ किया जा सकता है.

  • एक्सएमएल के ज़रिए <action> एलिमेंट को इनफ्लेट करते समय, ऐनिमेशन एट्रिब्यूट, app:enterAnim="?attr/transitionEnter" सिंटैक्स का इस्तेमाल करके आपकी थीम से खींचे गए एट्रिब्यूट का इस्तेमाल कर सकते हैं.

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

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    

नेविगेशन रूट और Kotlin डीएसएल

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

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

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

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

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

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

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

नेविगेशन कंपोज

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

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

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

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

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

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

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

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

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

स्थिति को सेव और वापस लाने के लिए, बुनियादी एपीआई कई प्लैटफ़ॉर्म पर दिखाए जाते हैं:

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

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

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

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

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

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

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

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

आम समस्याएं

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

वर्शन 2.4.0-rc01

15 दिसंबर, 2021

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

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

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

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

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

नेविगेशन कंपोज़ से जुड़ी गड़बड़ियां ठीक की गईं

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

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

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

वर्शन 2.4.0-beta02

3 नवंबर, 2021

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

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

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

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

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

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

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

वर्शन 2.4.0-beta01

27 अक्टूबर, 2021

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.4.0-alpha10

29 सितंबर, 2021

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

नई सुविधाएं

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

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

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

वर्शन 2.4.0-alpha09

15 सितंबर, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

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

वर्शन 2.4.0-alpha08

1 सितंबर, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.4.0-alpha07

18 अगस्त, 2021

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

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

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

वर्शन 2.4.0-alpha06

4 अगस्त, 2021

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

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

  • AbstractListDetailFragment पर requireSlidingPaneLayout() और requireDetailPaneNavHostFragment() तरीकों का नाम बदलकर, getSlidingPaneLayout() और getDetailPaneNavHostFragment() कर दिया गया है. (I34a08)

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

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

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

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

वर्शन 2.4.0-alpha05

21 जुलाई, 2021

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

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

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

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

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

वर्शन 2.4.0-alpha04

1 जुलाई, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.4.0-alpha03

16 जून, 2021

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

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

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

आम समस्या

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

वर्शन 2.4.0-alpha02

2 जून, 2021

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

नई सुविधाएं

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

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • NavigationUI के जिन तरीकों में BottomNavigationView का इस्तेमाल किया जाता था उन्हें अपडेट कर दिया गया है. अब इनमें Material 1.4.0, NavigationBarView में जोड़े गए सुपरक्लास का इस्तेमाल किया जाएगा. इससे इन तरीकों का इस्तेमाल NavigationRailView के साथ किया जा सकता है. (Ib0b36, b/182938895)

  • एक्सएमएल के ज़रिए किसी <action> एलिमेंट को इनफ़्लेट करते समय, ऐनिमेशन एट्रिब्यूट आपकी थीम से लिए गए एट्रिब्यूट का इस्तेमाल कर सकते हैं. इसके लिए, वे app:enterAnim="?attr/transitionEnter" सिंटैक्स का इस्तेमाल कर सकते हैं. (I07bc1, b/178291654)

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

  • आईडी का इस्तेमाल करने वाले Kotlin डीएसएल बिल्डर बंद कर दिए गए हैं. इन्हें, रास्तों (I85b42, b/188816479) (I9f58f, b/188816479) का इस्तेमाल करने वाले बिल्डर से बदल दिया जाना चाहिए

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

  • DialogFragmentNavigator अब NavigatorState.pop() एपीआई का इस्तेमाल करके, NavController को यह बताता है कि सिस्टम के बैक बटन को दबाकर या डायलॉग बॉक्स के बाहर क्लिक करके, डायलॉग बॉक्स को कब खारिज किया गया. इससे यह पक्का होता है कि NavController की स्थिति, नेविगेटर की स्थिति के साथ हमेशा सिंक रहती है. (I2ead9)
  • onDestinationChanged कॉलबैक की मदद से OnDestinationChangedListeners की सूची में बदलाव करने पर, नेविगेशन अब ConcurrentModificationException नहीं दिखाता. (Ib1707, b/188860458)

  • Kotlin में निर्देश प्रॉपर्टी जनरेट करने की कोशिश करते समय, अब सेफ़ आर्ग्युमेंट क्रैश नहीं होता. (Id2416, b/188564435)

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

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

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

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

वर्शन 2.4.0-alpha01

18 मई, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Safe Args

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

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

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

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

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

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

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

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

बाहरी योगदान

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

वर्शन 1.0.0-alpha10

7 अप्रैल, 2021

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

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

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

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

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

वर्शन 1.0.0-alpha09

10 मार्च, 2021

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

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

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

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

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

वर्शन 1.0.0-alpha08

24 फ़रवरी, 2021

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

नई सुविधाएं

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

वर्शन 1.0.0-alpha07

10 फ़रवरी, 2021

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

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

वर्शन 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 वर्शन में ये बदलाव शामिल हैं.

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

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

वर्शन 1.0.0-alpha01

28 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

वर्शन 2.3.5

वर्शन 2.3.5

7 अप्रैल, 2021

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

नई सुविधाएं

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

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

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

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

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

बाहरी योगदान

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

वर्शन 2.3.4

वर्शन 2.3.4

10 मार्च, 2021

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

नई सुविधाएं

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

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

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

बाहरी योगदान

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

वर्शन 2.3.3

वर्शन 2.3.3

27 जनवरी, 2021

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

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

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

वर्शन 2.3.2

वर्शन 2.3.2

2 दिसंबर, 2020

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

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

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

वर्शन 2.3.1

वर्शन 2.3.1

14 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

24 जून, 2020

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

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

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

आम समस्याएं

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

वर्शन 2.3.0-rc01

10 जून, 2020

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

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

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

वर्शन 2.3.0-beta01

20 मई, 2020

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

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

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

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

वर्शन 2.3.0-alpha06

29 अप्रैल, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0-alpha05

15 अप्रैल, 2020

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

नई सुविधाएं

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

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

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

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

वर्शन 2.3.0-alpha04

18 मार्च, 2020

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.3.0-alpha03

4 मार्च, 2020

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

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

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

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

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

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

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

वर्शन 2.3.0-alpha02

19 फ़रवरी, 2020

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.3.0-alpha01

5 फ़रवरी, 2020

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

नई सुविधाएं

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

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

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

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

वर्शन 2.2.2

वर्शन 2.2.2

15 अप्रैल, 2020

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

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

  • आपकी गतिविधि में एक से ज़्यादा NavHostFragment इंस्टेंस होने पर, ग्राफ़ के शुरुआती डेस्टिनेशन से डीप लिंक करने पर, IllegalStateException की गड़बड़ी ठीक की गई. (b/147378752)
  • NavigationUI अब खाली लेबल (यानी, android:label=”” वाला डेस्टिनेशन) को अनदेखा नहीं करता है और अब शीर्षक को सही तरीके से खाली स्ट्रिंग पर सेट करता है. इसे पहले Navigation 2.3.0-alpha04 में रिलीज़ किया गया था. (b/148679860)
  • navigation-common-ktx ProGuard के नियम अब सभी NavArgs इंस्टेंस के बजाय, सिर्फ़ इस्तेमाल की गई NavArgs क्लास को सही तरीके से सेव करते हैं. इसे पहले Navigation 2.3.0-alpha03 में रिलीज़ किया गया था. (b/150213558

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

वर्शन 2.2.1

वर्शन 2.2.1

5 फ़रवरी, 2020

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

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

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

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

वर्शन 2.2.0

वर्शन 2.2.0

22 जनवरी, 2020

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

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

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

वर्शन 2.2.0-rc04

18 दिसंबर, 2019

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

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

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

वर्शन 2.2.0-rc03

4 दिसंबर, 2019

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

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

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

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

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

वर्शन 2.2.0-rc02

7 नवंबर, 2019

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

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

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

वर्शन 2.2.0-rc01

23 अक्टूबर, 2019

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

वर्शन 2.2.0-beta01

9 अक्टूबर, 2019

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.2.0-alpha03

18 सितंबर, 2019

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

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

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

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

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

वर्शन 2.2.0-alpha02

5 सितंबर, 2019

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

नई सुविधाएं

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

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

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

वर्शन 2.2.0-alpha01

7 अगस्त, 2019

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

नई सुविधाएं

  • SavedStateViewModelFactory अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमाल by navGraphViewModels() या NavController.getViewModelStoreOwner() से दिखाए गए ViewModelStoreOwner के साथ ViewModelProvider कंस्ट्रक्टर का इस्तेमाल करते समय किया जाता है. (b/135716331)

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

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

5 सितंबर, 2019

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

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

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

वर्शन 2.1.0-rc01

7 अगस्त, 2019

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

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

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

वर्शन 2.1.0-beta02

19 जुलाई, 2019

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

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

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

वर्शन 2.1.0-beta01

17 जुलाई, 2019

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

नई सुविधाएं

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

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

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

वर्शन 2.1.0-alpha06

2 जुलाई, 2019

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.1.0-alpha05

5 जून, 2019

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

एपीआई में किए गए बदलाव

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

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

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

वर्शन 2.1.0-alpha04

16 मई, 2019

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

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

  • सिस्टम, सिस्टम के 'वापस जाएं' बटन इवेंट को इंटरसेप्ट करते समय, NavHostFragment app:defaultNavHost का सही तरीके से पालन करता है. इससे नेविगेशन 2.1.0-alpha03 में रिग्रेशन को ठीक किया जाता है. b/132077777
  • DialogFragmentNavigator अब popBackStack() और navigateUp() ऑपरेशन को सही तरीके से मैनेज करता है. b/132576764
  • नेस्ट किए गए ग्राफ़ के बीच बार-बार नेविगेट करने पर, IllegalStateException: unknown destination during restore से जुड़ी समस्या को ठीक किया गया. b/131733658

वर्शन 2.1.0-alpha03

7 मई, 2019

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

आम समस्याएं

  • app:defaultNavHost="false" b/132077777 का इस्तेमाल करने के बावजूद, NavHostFragment, सिस्टम के 'वापस जाएं' बटन को इंटरसेप्ट करता रहता है

नई सुविधाएं

  • अब आपके पास <dialog> डेस्टिनेशन बनाने का विकल्प है. डेस्टिनेशन को navigate करने पर, आपको DialogFragment दिखेगा. NavHostFragment, डिफ़ॉल्ट रूप से डायलॉग डेस्टिनेशन के साथ काम करता है. b/80267254
  • 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 रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.

नई सुविधाएं

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

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

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

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

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

वर्शन 2.1.0-alpha01

19 मार्च, 2019

यह नेविगेशन 2.1.0 का पहला अल्फ़ा वर्शन है.

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

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

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

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

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

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

वर्शन 2.0.0

वर्शन 2.0.0

14 मार्च, 2019

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

वर्शन 2.0.0-rc02

6 मार्च, 2019

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

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

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

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

नेविगेशन के AndroidX से पहले के वर्शन के लिए, इन निर्भरताओं को शामिल करें:

dependencies {
    def nav_version = "1.0.0"

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

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

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

वर्शन 1.0.0

वर्शन 1.0.0

14 मार्च, 2019

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

वर्शन 1.0.0-rc02

26 फ़रवरी, 2019

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

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

  • एक समस्या को ठीक किया गया है. इसमें, रूट ग्राफ़ में आईडी b/126251695 न होने पर, popBackStack() को अनदेखा कर दिया जाता था
  • navigateUp() अब FLAG_ACTIVITY_NEW_TASK के बिना डीप लिंक को हैंडल करने के बाद, आपके ऐप्लिकेशन के टास्क पर वापस जाने की सुविधा को सही तरीके से मैनेज करता है b/126082008
  • ActivityNavigator.applyPopAnimationsToPendingTransition पॉप-अप बंद होने पर सही ऐनिमेशन लागू न होने की समस्या को ठीक किया गया b/126237567
  • Safe Args की मदद से जनरेट किया गया Kotlin कोड, अब R क्लास से जुड़े पैकेज के नाम में in और fun जैसे Kotlin कीवर्ड को सही तरीके से एस्केप करता है. b/126020455

वर्शन 1.0.0-rc01

21 फ़रवरी, 2019

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

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

  • फ़्रैगमेंट और singleTop नेविगेशन ऑपरेशन का इस्तेमाल करते समय आने वाली समस्या ठीक की गई b/124294805

वर्शन 1.0.0-beta02

12 फ़रवरी, 2019

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

नई सुविधाएं

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

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

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

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

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

वर्शन 1.0.0-beta01

4 फ़रवरी, 2019

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

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

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

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

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

वर्शन 1.0.0-alpha11

23 जनवरी, 2019

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

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

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

वर्शन 1.0.0-alpha10

23 जनवरी, 2019

आम समस्याएं

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

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

नई सुविधाएं

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

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

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

बदलाव

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

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

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

वर्शन 1.0.0-alpha09

18 दिसंबर, 2018

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

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

नई सुविधाएं

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

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

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

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

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

वर्शन 1.0.0-alpha07

29 अक्टूबर, 2018

नई सुविधाएं

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

बदलाव

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

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

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

Safe Args

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

वर्शन 1.0.0-alpha06

20 सितंबर, 2018

नई सुविधाएं

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

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

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

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

Safe Args

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

वर्शन 1.0.0-alpha05

10 अगस्त, 2018

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

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

वर्शन 1.0.0-alpha04

19 जुलाई, 2018

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

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

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

Safe Args

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

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

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

वर्शन 1.0.0-alpha03

12 जुलाई, 2018

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

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

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

सुरक्षित आर्ग

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

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

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

वर्शन 1.0.0-alpha02

7 जून, 2018

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha01

8 मई, 2018

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