नेविगेशन

नेविगेशन एक फ़्रेमवर्क है, जिसमें 'गंतव्य' के बीच नेविगेट करना होते हैं जो एक जैसा एपीआई, चाहे डेस्टिनेशन को फ़्रैगमेंट, गतिविधियों या अन्य कॉम्पोनेंट.
नया अपडेट स्टेबल रिलीज़ रिलीज़ कैंडिडेट बीटा रिलीज़ ऐल्फ़ा रिलीज़
4 सितंबर, 2024 2.8.0 - - -

डिपेंडेंसी तय करना

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

वर्शन 2.8.0

4 सितंबर, 2024

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

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

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

  • नेविगेशन, अब 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)
        }
    }

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

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

  • नेविगेशन कंपोज़िशन, कंपोज़-ऐनिमेशन के नए 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" />

अन्य बदलाव

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

वर्शन 2.8.0-beta07

7 अगस्त, 2024

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

आम समस्याएं

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

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

  • डुप्लीकेट या शेयर किए गए डेस्टिनेशन पर नेविगेट करते समय, नेविगेशन, ग्राफ़ में मौजूदा जगह से सबसे पास होने वाले डेस्टिनेशन पर जाने को प्राथमिकता देगा. (Ic89a4, b/352006850)
  • सुरक्षित आर्ग में नेविगेशन के लिए, अब एक नया NavType.EnumType जोड़ा गया है. इसका मतलब है कि Enum टाइप के लिए, अब पसंद के मुताबिक बनाए गए NavType की ज़रूरत नहीं है. ध्यान दें कि Enum का SerialName, डिफ़ॉल्ट रूप से पूरी तरह क्वालिफ़ाइड नाम होना चाहिए. (I66d22, b/346475493)
  • सुरक्षित आर्ग्युमेंट में नेविगेशन की सुविधा जोड़ी गई है. इसमें 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 टेस्ट एपीआई का इस्तेमाल, अब 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 के साथ नेविगेट करने पर, आउटपुट आर्ग्युमेंट, आपकी 'क्रम से लगाएं' क्लास पर तय की गई डिफ़ॉल्ट वैल्यू होगी. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तो आउटपुट वैल्यू के तौर पर emptyCollection() की रिटर्न वैल्यू होगी. (I84158, Id630f, b/342672856)

वर्शन 2.8.0-beta02

29 मई, 2024

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

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

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

वर्शन 2.8.0-beta01

14 मई, 2024

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

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

  • कस्टम आर्ग्युमेंट टाइप के लिए, SavedStateHandle.toRoute() अब typeMap पैरामीटर लेता है. (Ie39fb, b/339026523)
  • Kotlin के सीरियल किए जा सकने वाले ऑब्जेक्ट से 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 में ये कमिट मौजूद हैं.

नेविगेशन कंपोज़ में सुरक्षित आर्ग

  • नेविगेशन कंपोज़ और 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)
      }
  }

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

नई सुविधाएं

  • navigation-fragment-compose आर्टफ़ैक्ट अब ComposableFragment में कंपोज़ेबल में LocalFragment कंपोज़िशन उपलब्ध कराता है. (If35e5)
  • NavType में अब इंटर, स्ट्रिंग, बूलियन, फ़्लोट, और लॉन्ग की सूचियों के लिए सहायता पहले से मौजूद है. (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 के सीरियल नंबर को जारी रखने की प्रोसेस पर आधारित अप्रोच का इस्तेमाल करके, नेविगेशन कंपोज़ में सुरक्षित आर्ग के लिए सहायता उपलब्ध कराई जाती है. ये एपीआई तैयार नहीं हैं. साथ ही, इन्हें ExperimentalSafeArgsApi एनोटेशन के साथ मार्क किया गया है. जब आने वाले समय में रिलीज़ होने वाले पूरे एपीआई का प्लैटफ़ॉर्म तैयार हो जाएगा, तब इस जानकारी को हटा दिया जाएगा. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, I554db

वर्शन 2.8.0-alpha06

3 अप्रैल, 2024

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

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

  • Kotlin सीरियलाइज़ेशन पर आधारित अप्रोच का इस्तेमाल करके, नेविगेशन कंपोज़ में सुरक्षित आर्ग के लिए सहायता चालू हो गई है. ये एपीआई तैयार नहीं हैं. साथ ही, इन्हें ExperimentalSafeArgsApi एनोटेशन के साथ मार्क किया गया है. जब आने वाले समय में रिलीज़ होने वाले पूरे एपीआई का प्लैटफ़ॉर्म तैयार हो जाएगा, तब इस जानकारी को हटा दिया जाएगा.

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

  • NavHost ने अब Alignment.TopStart का इस्तेमाल, डिफ़ॉल्ट contentalignment आर्ग्युमेंट के तौर पर किया है. इससे यह 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)
  • navigate या popBackStack जैसे रूट के साथ काम करने वाले NavController फ़ंक्शन, अब 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)

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

  • उस समस्या को ठीक किया गया है जिसकी वजह से, कंपोज़ नेविगेशन में 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 में ये कमियां हैं.

नई सुविधाएं

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

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

  • नेविगेशन के लिए लिखना अब लिखने के वर्शन 1.5.1 के हिसाब से तय होता है.

वर्शन 2.7.1

वर्शन 2.7.1

23 अगस्त, 2023

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

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

  • कंपोज़ की मदद से नेविगेशन में आने वाली समस्याओं को ठीक किया गया, जहां 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 से अब तक हुए अहम बदलाव

Acompanist के ऐनिमेशन

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

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

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

आम समस्याएं

  • नेविगेशन 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 ऐल्फ़ा (0.31.2-alpha) का इस्तेमाल हो रहा है, तो आपको एपीआई में कोई अन्य बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)

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

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

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

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

वर्शन 2.6.0

वर्शन 2.6.0

7 जून, 2023

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

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

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

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

नेविगेशन यूज़र इंटरफ़ेस (यूआई) में 2.5.0 के बाद से हुए अहम बदलाव

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

वर्शन 2.6.0-rc02

24 मई, 2023

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

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

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

वर्शन 2.6.0-rc01

10 मई, 2023

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

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

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

वर्शन 2.6.0-beta01

19 अप्रैल, 2023

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

नई सुविधाएं

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

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

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

वर्शन 2.6.0-alpha09

5 अप्रैल, 2023

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

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

  • अमान्य रूट की जांच को इस तरह से ठीक किया गया है कि अगर किसी NavDestination में शून्य नहीं हो सकने वाले NavArgument शामिल हैं, तो इस डेस्टिनेशन के रूट में ऐसे आर्ग के लिए प्लेसहोल्डर होने चाहिए जिनका नाम शून्य न हो सकने वाले NavArgument जैसा हो. (Ic62bf, b/274697949)
  • अगर नेविगेशन ऑपरेशन में NavDestination के लिए ज़रूरी, शून्य न हो सकने वाला NavArgument मौजूद नहीं होता है, तो Action/MimeType पर आधारित डीपलिंक नेविगेशन काम नहीं करेगा, जिससे Action/MimeType मैच होता है. (Ibfa17, b/271777424)
  • जब NavController किसी ग्राफ़ को पिछले ग्राफ़ की तरह ही रूट और डेस्टिनेशन के साथ सेट करता है, तो अब वह अपने मौजूदा ग्राफ़ नोड और बैक स्टैक डेस्टिनेशन को नए इंस्टेंस से सही तरीके से बदल देता है. यह नेविगेशन कंपोज़ में स्थिति सेव किए बिना 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)
  • जब बैक स्टैक, सिस्टम बैक या popBackStack() से पॉप-अप होता है, तो FragmentNavigator अब एंट्री को सही तरीके से पॉप करेगा. साथ ही, यह भी जान पाएगा कि लेन-देन में फ़्रैगमेंट के लिए इफ़ेक्ट का इस्तेमाल हुआ है या नहीं. (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)
  • उस समस्या को ठीक कर दिया गया है जिसकी वजह से clearBackStack() को NavController से कॉल करने पर, बैक स्टैक से जुड़े फ़्रैगमेंट मैनेजर खाते में सेव की गई स्थिति नहीं हटती. (Ic1cce, b/271190202)
  • 2.6.0-alpha06 में रिग्रेशन ठीक किया गया, जिसकी वजह से टैब के बीच सिस्टम वापस इस्तेमाल करते समय BottomNavigationView में गलत MenuItem को हाइलाइट किया गया था. (I634f6, b/270447657)
  • 2.6.0-alpha06 में रिग्रेशन का सुधार किया गया, जिसकी वजह से Animation का इस्तेमाल करते समय NavBackStackEntrys को फिर से शुरू की गई स्थिति में नहीं ले जाया गया. (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 अब DialogFragment Lifecycle के DESTROYED में जाने से पहले, 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 एपीआई का इस्तेमाल करते समय, नेविगेटर की स्थिति अब काम नहीं करेगी. साथ ही, एंट्री पहले से ही मैनेज की जा रही है. (इडबफ़ा, 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 को बदल सकती हैं. इससे, क्रम तय करने और डीसीरियलाइज़ेशन (parseValue के ज़रिए), दोनों को NavType क्लास में पूरी तरह से समझाया जा सकता है. StringType, दिए गए String पर Uri.encode को कॉल करने के लिए, अब इस तरीके को बदल देता है. (Ie5213, b/247637434)
  • NavigationUI अब चुने गए MenuItem से नेविगेट नहीं होने पर लॉग उपलब्ध कराता है. (I2af5a, b/247730357)

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

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

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

  • डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा, अब विस्तृत Play Feature Delivery लाइब्रेरी के हिसाब से काम करेगी. (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 की जानकारी अपने-आप भर जाएगी. (इयाबदे, 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 दे सकता है.

नेविगेशन SafeArgs

  • Navigation Safe Args ने 7.0.4 पर भरोसा करने के लिए, Android Gradle Plugin डिपेंडेंसी को अपग्रेड कर दिया है. यह 7.0 से पहले, AGP वर्शन के साथ काम नहीं करता.
  • appId के बजाय, नेमस्पेस बिल्ड.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 और नेमस्पेस का इस्तेमाल करने पर या तो applicationId मौजूद न होने पर या applicationId और नेमस्पेस में अंतर होने पर, Navigation SafeArgs क्रैश नहीं होगा. (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 अब बिना वैल्यू वाले एक क्वेरी पैरामीटर से Uris को पार्स कर सकता है. (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 में ये कमियां हैं.

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

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

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

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

वर्शन 2.5.0-alpha02

9 फ़रवरी, 2022

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

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

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

वर्शन 2.5.0-alpha01

26 जनवरी, 2022

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

नई सुविधाएं

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

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

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

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

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

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

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

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

नेविगेशन रूट और Kotlin DSL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

आम समस्याएं

  • नेविगेशन 2.5.0-alpha01 में समस्या हल की गई: बनाए गए ViewModel को ऐक्सेस करना फ़्रैगमेंट के onCreate() से by navGraphViewModels() के ज़रिए 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)
  • उस समस्या को ठीक किया गया है जिसकी वजह से डायलॉग खारिज होने के बाद, ViewModel को डायलॉग के NavBackStackEntry से वापस नहीं पाया जा सका. (I6b96d, b/206465487)
  • नेविगेशन कंपोज़ की NavHost के साथ activity डेस्टिनेशन का इस्तेमाल करते समय आने वाली समस्या ठीक की गई, जिसकी वजह से कभी न खत्म होने वाली गड़बड़ी ठीक हो जाती थी. (I8f64c)
  • नेविगेशन कंपोज़ में, कॉन्फ़िगरेशन में बदलाव होने या किसी प्रोसेस के बंद होने के बाद, पुरानी गतिविधि का रेफ़रंस देने वाली कंपनी के लीक होने की समस्या को ठीक किया गया. (I4efcb, b/204905432)

सुरक्षित Args की गड़बड़ियां ठीक की गई हैं

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

वर्शन 2.4.0-beta02

3 नवंबर, 2021

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

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

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

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

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

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

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

वर्शन 2.4.0-beta01

27 अक्टूबर, 2021

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

नई सुविधाएं

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

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

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

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

  • ट्रांज़िशन होने पर, ViewModels अब खत्म नहीं होंगे एक जैसी स्क्रीन के बीच आगे-पीछे नेविगेट करने की वजह से रुकावट आई (Id52d8, b/200817333)
  • NavDeepLink आर्ग्युमेंट अब शून्य हो सकते हैं डीप लिंक जोड़ते समय एक डिफ़ॉल्ट वैल्यू होना ज़रूरी है NavDestination. (I5aad4, b/201320030)
  • अब अलग-अलग लाइफ़साइकल के साथ NavBackStackEntries, पहले से मौजूद नहीं हैं एक समान माना जाता है. इसका मतलब है कि NavHost सभी यूआरएल को सही तरीके से रीकंपोज़ करेगा सिंगल टॉप के साथ नेविगेशन करते समय और दोबारा चुनते समय डेस्टिनेशन सबसे नीचे मौजूद मेन्यू आइटम. (I1b351, b/196997433)
  • AbstractListDetailFragment से जुड़ी समस्या ठीक की गई जिसकी वजह से layout_width और layout_weight एट्रिब्यूट जुड़े सूची पैनल पर, onCreateListPaneView() के ज़रिए वापस किया गया: गलत तरीके से संभाला या अनदेखा किया जाता है. (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 में ये कमिट हैं.

नई सुविधाएं

  • अब clearBackStack() तरीके का इस्तेमाल किया जा सकता है popBackStack() के साथ सेव की गई किसी भी स्थिति को मिटाने के लिए या popUpToSaveState. (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)
  • समस्या को ठीक किया गया, OnDestinationChangedListener इंस्टेंस और currentBackStackEntryFlow को कब सूचना नहीं मिली launchSingleTop का इस्तेमाल करके. (Iaaebc)

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

वर्शन 2.4.0-alpha08

1 सितंबर, 2021

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

नई सुविधाएं

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

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

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

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

  • अंदर getBackStackEntry और previousBackStackEntry का इस्तेमाल किया जा रहा है remember() के साथ मिलकर, composable() अब पिछली गतिविधियों पर किसी भी डेस्टिनेशन के न होने का अपवाद. (I75138, b/194313238)
  • वापस बदलते समय, नेविगेशन कंपोज़ की सुविधा अब सही तरीके से फिर से काम करती है और launchSingleTop=true का इस्तेमाल करें. (Iebd69, b/186392337)
  • अब ArrayIndexOutOfBoundsException नहीं होगा जब 13 या 29 डेस्टिनेशन वाले ग्राफ़ के साथ setGraph पर कॉल किया जाता है. (I1a9f1, b/195171984)
  • SafeArgs जावा जनरेटर से अब लिंट नहीं होना चाहिए 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 अब के Lifecycle.State में हुए बदलावों पर नज़र रखता है NavBackStackEntry का मतलब है कि अब फ़्रैगमेंट में NavHost का इस्तेमाल करने पर उन्हें खाली स्क्रीन दिखने के बजाय, लाइफ़साइकल बदलने पर सही तरीके से दोबारा तैयार किया जाना चाहिए. (I4eb85, b/195864489)
  • उस समस्या को ठीक किया गया है जिसकी वजह से DialogFragment अपनी गतिविधि को फिर से बनाने के बाद, NavController स्थिति (यानी, किसी कॉन्फ़िगरेशन में बदलाव होने के बाद). (Icd72b)
  • पॉप-अप विंडो में पॉप-अप होने की समस्या को ठीक किया गया है डायलॉग डेस्टिनेशन से NavController के इस गड़बड़ी की वजह से, सिस्टम के बैक बटन को हैंडल करना 'वापस जाएं' बटन को रोकने के लिए NavController भले ही इसमें पॉप करने के लिए कोई बैक स्टैक मौजूद न हो. (If3b34)
  • सेफ़-आर्ग की सुविधा से, अब अपने-आप 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)
  • बिना Uri के डीप लिंक जोड़ने और किसी रास्ते या डीप लिंक के ज़रिए नेविगेट करने पर होने वाले NullPointerException को ठीक किया गया. (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)

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

  • NoSuchElementException को तब ठीक किया गया, जब LifecycleObserver से popBackStack() को कॉल किया जा रहा है के कारण NavBackStackEntry से अटैच है NavController की स्थिति के लिए फिर से अपडेट होता है. (I64621)
  • AbstractListDetailFragment अब इसकी अनुमति देता है SlidingPaneLayout को यहां से पूरी तरह निकाला जाएगा जब AbstractListDetailFragment का इस्तेमाल न किया जाता हो, तो आपका APK. (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 डेस्टिनेशन के ऊपर फ़्लोटिंग, कंपोज़ेबल 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 एपीआई का इस्तेमाल करके, किसी डेस्टिनेशन को एसिंक्रोनस रूप से पुश या पॉप कर सकते हैं. ध्यान दें कि इस API का इस्तेमाल अभी तक शामिल किए गए किसी भी नेविगेटर ने नहीं किया है. (Ic4d7c, b/172112072)

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

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

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

  • <include-dynamic> से जुड़ी समस्या ठीक की गई, जहां ग्राफ़ को दिए गए तर्क सही ढंग से पास नहीं होंगे को डाइनैमिक रूप से शामिल ग्राफ़ के साथ जोड़ा जा सकता है. (I3e115)
  • किसी मंज़िल के लिए नेविगेट करते समय, NullPointerException से जुड़ी गड़बड़ी ठीक की गई @null की डिफ़ॉल्ट वैल्यू वाले string[] आर्ग्युमेंट का इस्तेमाल किया जा रहा है. (I1fbe8)
  • @Navigator.Name के लिए ProGuard के नियम जोड़ें. इससे समस्याएं हल की जा सकती हैं जब आप R8 3.1 फ़ुल मोड का इस्तेमाल कर रहे हों. (I2add9, b/191654433)
  • इन ऐप्लिकेशन की मदद से, ऐप्लिकेशन बनाते समय SafeArgs अब काम नहीं करेगा 1.5.0 से पहले के Kotlin वर्शन. (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)
  • IllegalStateException को तब ठीक किया गया, जब पहले पॉप-अप होने के बाद popBackStack() पर कॉल किया जा रहा है NavController का रूट ग्राफ़ होगा. (I2a330, b/190265699)
  • अब by navArgs() के लिए ProGuard के नियम ठीक हैं navigation-common या किसी भी आर्टफ़ैक्ट का इस्तेमाल करते समय लागू करें जो उस पर निर्भर करते हैं. (I68800, b/190082521)
  • कॉल करने वाला OnDestinationChangedListener पहली बार कॉलबैक मिलने पर navigate() सही तरीके से डेस्टिनेशन के साथ दूसरी कॉलबैक पाएं पर नेविगेट किया गया. (Ie5f9e, b/190228815)
  • डाइनैमिक सुविधा के साथ इस्तेमाल करते समय, Safe Args अब क्रैश नहीं होता मॉड्यूल और एजीपी 7.0+. (I69518, b/189966576)

आम समस्या

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

वर्शन 2.4.0-alpha02

2 जून, 2021

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

नई सुविधाएं

  • रूट अब ऐक्टिविटी, फ़्रैगमेंट, और डायलॉग डेस्टिनेशन के साथ-साथ डाइनैमिक नेविगेशन कोटलिन डीएसएल में भी काम करते हैं. (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 }
    
  • BottomNavigationView के इस्तेमाल होने वाले नेविगेशन यूज़र इंटरफ़ेस (यूआई) के तरीकों को अपडेट कर दिया गया है, ताकि वे मटीरियल 1.4.0, NavigationBarView में उपलब्ध कराई गई सुपर क्लास का इस्तेमाल कर सकें. ऐसा करने पर, NavigationRailView के साथ इन तरीकों का इस्तेमाल किया जा सकता है. (Ib0b36, b/182938895)

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

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

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

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

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

  • जनरेट करने की कोशिश करते समय, Safe Args अब क्रैश नहीं होता है Kotlin में डायरेक्शन प्रॉपर्टी. (Id2416, b/188564435)

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

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

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

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

वर्शन 2.4.0-alpha01

18 मई, 2021

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

नई सुविधाएं

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

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

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

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

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

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

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

  • Kotlin DSL पर popUpTo kotlin प्रॉपर्टी को बंद कर दिया गया है popUpToId. (I59c73, b/172823546)
  • getStartDestination() API के इस्तेमाल पर रोक लगा दी गई है कुल 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

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

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

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

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

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

यह सुविधा किन डिवाइसों के साथ काम करती है

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

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

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

बाहरी योगदान

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

वर्शन 1.0.0-alpha10

7 अप्रैल, 2021

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

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

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

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

  • अब NavHost काम कर रहा है OnBackPressedDispatcherOwner न मिलने पर भी, NavHost की झलक देखते समय ऐसा ही होता है. (I7d8b4)
  • नेविगेशन कंपोज़िशन अब नेविगेशन 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)

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

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

  • इसे 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 का इस्तेमाल किया जा सकता है और LaunchSingleTop ऑपरेशन (If96c3, b/171468994)
  • एक नेविगेशन फ़ंक्शन जोड़ा गया, जो यह आईडी, नेविगेशन कंपोज़ में नेस्ट किए गए ग्राफ़ बनाने में आपकी मदद करता है डीएसएल. (I1661d)
  • startDestination अब आपकी सूची में मौजूद रूट से पहले NavHost (Ie620e) के लिए पैरामीटर
  • अब रूट को स्टार्ट के तौर पर इस्तेमाल करके ग्राफ़ बनाया जा सकता है गंतव्य पर वापस जाएं. (Iceb75)

वर्शन 1.0.0-alpha01

28 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

वर्शन 2.3.5

वर्शन 2.3.5

7 अप्रैल, 2021

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

नई सुविधाएं

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

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

  • OnBackPressedCallbacks ने डिस्पैचर को इस लाइफ़साइकल के मालिक के तौर पर NavBackStackEntry अब ठीक से इंटरसेप्शन करता है गतिविधि की लाइफ़साइकल के बाद, 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 अब सही तरीकों के लिए, एनोटेशन को छिपाने की सुविधा देता है लागू नहीं करते हैं. (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 में ये कमियां शामिल हैं.

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

  • NavBackStackEntry पॉप-अप करने पर अब कोई क्रैश नहीं होगा इससे पहले कि Lifecycle को CREATED में ले जाया जाए. (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) अब फ़्रैगमेंट हैरारकी और फ़्रैगमेंट के व्यू हैरारकी की मौजूदा जांच के साथ-साथ, Dialogफ़्रैगमेंट के रूट डेकोरेशन व्यू की भी जांच करता है. इसकी मदद से, FragmentScenario और Navigation.setViewNavController() के साथ नेविगेशन का इस्तेमाल करने वाले डायलॉग फ़्रैगमेंट की जांच की जा सकती है. (I69e0d)

वर्शन 2.3.1

वर्शन 2.3.1

14 अक्टूबर, 2020

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

नई सुविधाएं

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

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

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

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

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

वर्शन 2.3.0

वर्शन 2.3.0

24 जून, 2020

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

2.2.0 से अब तक के बड़े बदलाव

  • फ़ीचर मॉड्यूल इंटिग्रेशन: navigation-dynamic-features-runtime और navigation-dynamic-features-fragment आर्टफ़ैक्ट की मदद से, फ़ीचर मॉड्यूल में बताए गए डेस्टिनेशन पर नेविगेट किया जा सकता है. साथ ही, ज़रूरत के मुताबिक, सुविधा वाले मॉड्यूल के इंस्टॉलेशन की प्रक्रिया अपने-आप मैनेज हो जाती है. ज़्यादा जानकारी के लिए, सुविधा वाले मॉड्यूल की मदद से नेविगेट करना देखें.
  • नेविगेशन टेस्टिंग: navigation-testing आर्टफ़ैक्ट से TestNavHostController मिलता है, जिससे मौजूदा डेस्टिनेशन सेट किया जा सकता है. साथ ही, नेविगेशन कार्रवाइयों के बाद, पिछली गतिविधियों की पुष्टि की जा सकती है. ज़्यादा जानकारी के लिए टेस्ट नेविगेशन देखें.
  • कोई नतीजा देना: नेविगेशन बैक स्टैक पर हर एक डेस्टिनेशन से जुड़ा NavBackStackEntry अब आपको एक SavedStateHandle तक पहुंचने की अनुमति देता है जो सेव की गई किसी विशेष स्थिति से छोटी मात्रा में जुड़ी होनी चाहिए. ज़्यादा जानकारी के लिए, पिछले डेस्टिनेशन पर नतीजे लौटाना देखें.
  • Openable के लिए NavigationUI सहायता: NavigationUI में DrawerLayout के सभी इस्तेमाल को CustomView 1.1.0 में जोड़े गए ज़्यादा सामान्य Openable इंटरफ़ेस से बदल दिया गया है. साथ ही, DrawerLayout ने इसे DrawerLayout 1.1.0 में लागू कर दिया है.
  • डीप लिंक में कार्रवाई और माइम टाइप की सुविधा: डीप लिंकिंग को पहले से उपलब्ध 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 क्लास पर निर्भर रहने के बजाय, AppBarConfiguration अब CustomView 1.1.0-alpha02 में पेश किए गए Openable इंटरफ़ेस का इस्तेमाल करता है (जो DrawerLayout, DrawerLayout 1.1.0-alpha04 के हिसाब से लागू होता है. इससे आपको NavigationUI के साथ Openable को अपनी पसंद के मुताबिक लागू करने की सुविधा मिलती है. (b/129030452)

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

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

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

  • नेविगेशन ने कोर 1.2.0 पर अपनी डिपेंडेंसी को पहले जैसा कर दिया है. साथ ही, यह अब कोर 1.1.0 पर निर्भर है, ताकि जब नेविगेशन कोर 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=”” वाला डेस्टिनेशन) को अनदेखा नहीं करता है और अब शीर्षक को सही तरीके से खाली स्ट्रिंग पर सेट करता है. इसे पहले नेविगेशन 2.3.0-alpha04 में रिलीज़ किया गया था. (b/148679860)
  • navigation-common-ktx ProGuard नियम अब सिर्फ़ NavArgs क्लास को सही तरीके से सेव रखते हैं, न कि सभी NavArgs इंस्टेंस का. इसे पहले नेविगेशन 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-runtime-ktx के जैसे मेनिफ़ेस्ट पैकेज का नाम शेयर करने के बजाय, navigation-common-ktx मॉड्यूल का अब एक यूनीक मेनिफ़ेस्ट पैकेज नाम है. (aosp/1141947)

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

वर्शन 2.2.0

वर्शन 2.2.0

22 जनवरी, 2020

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

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

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

वर्शन 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)
  • कॉन्फ़िगरेशन में बदलाव होने के बाद, FragmentContainerView के साथ इस्तेमाल किए जाने पर NavHostFragment, अब ग्राफ़ को सही तरीके से पहले जैसा करता है. (b/143752103)

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

  • जहां भी ज़रूरी हो, नेविगेशन अब लाइफ़साइकल 2.2.0-rc03, Lifecycle 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 रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.

नई सुविधाएं

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

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

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

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

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

वर्शन 2.1.0

वर्शन 2.1.0

5 सितंबर, 2019

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

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

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

वर्शन 2.1.0-rc01

7 अगस्त, 2019

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

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

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

वर्शन 2.1.0-beta02

19 जुलाई, 2019

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

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

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

वर्शन 2.1.0-beta01

17 जुलाई, 2019

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

नई सुविधाएं

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

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

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

वर्शन 2.1.0-alpha06

2 जुलाई, 2019

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 2.1.0-alpha05

5 जून, 2019

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

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

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

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

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

वर्शन 2.1.0-alpha04

16 मई, 2019

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

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

  • सिस्टम, सिस्टम के 'वापस जाएं' बटन इवेंट को इंटरसेप्ट करते समय, NavHostFragment app:defaultNavHost का सही तरीके से पालन करता है. इससे नेविगेशन 2.1.0-alpha03 में रिग्रेशन को ठीक किया जाता है. बी/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 का इस्तेमाल करने के बावजूद NavHostफ़्रैगमेंट, सिस्टम के 'वापस जाएं' बटन को इंटरसेप्ट करता है

नई सुविधाएं

  • अब आपके पास <dialog> डेस्टिनेशन बनाने का विकल्प है. डेस्टिनेशन को navigate करने पर, आपको DialogFragment दिखेगा. NavHostFragment में डिफ़ॉल्ट रूप से, डायलॉग डेस्टिनेशन काम करते हैं. b/80267254
  • navigate को रिसॉर्स आईडी या NavDirections इंस्टेंस से कॉल करने के अलावा, अब Uri के ज़रिए भी नेविगेट किया जा सकता है. इसमें वही <deepLink> इस्तेमाल होता है जिसे आपने सही डेस्टिनेशन पर जाने के लिए, डेस्टिनेशन में जोड़ा है. b/110412864

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

  • नेविगेशन यूज़र इंटरफ़ेस (यूआई) से मिलने वाले डिफ़ॉल्ट ऐनिमेशन की स्पीड को 400 मि॰से॰ से बढ़ाकर 220 मि॰से॰ कर दिया गया है. इससे, गतिविधियों और फ़्रैगमेंट की डिफ़ॉल्ट ऐनिमेशन स्पीड के हिसाब से वीडियो बनाए जा सकेंगे. बी/130055522

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

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

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

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

वर्शन 2.1.0-alpha02

3 अप्रैल, 2019

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

नई सुविधाएं

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

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

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

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

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

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

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

आपके प्रोजेक्ट में इनकी 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
}

सुरक्षित तर्क के लिए, आपकी टॉप लेवल 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 स्टेबल रिलीज़ के लिए दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में कई गड़बड़ियां ठीक की गई हैं.

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

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

वर्शन 1.0.0-rc01

21 फ़रवरी, 2019

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

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

  • फ़्रैगमेंट और 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
  • किसी फ़ाइल को वापस लाने के दौरान, Safe Args से जनरेट की गई NavArgs क्लास में कोई क्रैश नहीं होगा सेव की गई इंस्टेंस स्थिति से Parcelable[] आर्ग्युमेंट. b/123963545
  • Safe Args अब जनरेट की गई ग़ैर-ज़रूरी Kotlin क्लास को ठीक से हटा देता है. b/124120883

वर्शन 1.0.0-beta01

4 फ़रवरी, 2019

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

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

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

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

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

वर्शन 1.0.0-alpha11

23 जनवरी, 2019

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

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

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

वर्शन 1.0.0-alpha10

23 जनवरी, 2019

आम समस्याएं

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

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

नई सुविधाएं

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha08

6 दिसंबर, 2018

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

नई सुविधाएं

  • NavigationUI तरीकों के साथ इस्तेमाल किए जाने पर, डेस्टिनेशन लेबल अब अपने-आप काम करेंगे अपने android:label में {argName} इंस्टेंस को सही तर्क से बदलें b/80267266
  • नेविगेशन अब सपोर्ट लाइब्रेरी 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 अब की जगह एक क्लास है. NavigatorProvider को, इन्होंने लौटाया getNavigatorProvider() ने इसकी सुविधाओं में बदलाव नहीं किया है. aosp/830660
  • NavDestination.navigate() को हटा दिया गया है. Navigator पर navigate() को कॉल करें आज़माएं. aosp/830663
  • Navigator की ज़रूरी रीफ़ैक्टरिंग, OnNavigatorNavigatedListener की ज़रूरत खत्म हो गई है और इसके बजाय, navigate से वह NavDestination वापस लौटेगा जिस पर नेविगेट किया गया था.
  • Navigator इंस्टेंस अब NavController पर पॉप इवेंट नहीं भेज सकते. इन बातों पर ध्यान दें OnBackPressedCallback का इस्तेमाल करके 'वापस जाएं' बटन दबना बंद करें और navController.popBackStack() को कॉल करें. aosp/833716

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

  • डेस्टिनेशन में <navigation> एलिमेंट होने पर, popUpTo अब लगातार काम करता है b/116831650
  • ऐसी कई गड़बड़ियां ठीक की गईं, जिनकी वजह से IllegalArgumentException आई नेस्ट किए गए ग्राफ़ का इस्तेमाल करते समय b/118713731 b/113611083 b/113346925 b/113305559
  • <activity> डेस्टिनेशन के लिए dataPattern एट्रिब्यूट की वैल्यू अब अपने-आप भर जाएगी toString() को कॉल करके गैर-स्ट्रिंग आर्ग्युमेंट से तर्क जोड़े जा सकते हैं b/120161365

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

  • Safe Args के साथ सीरियल वाले ऑब्जेक्ट काम कर सकते हैं. इनमें 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

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

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

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

  • सुरक्षित आर्ग की अब 'Android Gradle प्लग इन 3.2.1' पर तय निर्भर करता है. b/113167627
  • इनर क्लास के लिए अब निर्देश जनरेट किए जा सकते हैं. बी/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 पर कॉल किया जाता है

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

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

वर्शन 1.0.0-alpha05

10 अगस्त, 2018

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

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

वर्शन 1.0.0-alpha04

19 जुलाई, 2018

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

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

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

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

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

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

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

वर्शन 1.0.0-alpha03

12 जुलाई, 2018

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

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

  • टूलबार के लिए NavigationUI.setupWithNavController से जोड़ने का तरीका b/109868820 जोड़ा गया है
  • ClosesingToolbarLayout के लिए एक NavigationUI.setupWithNavController से जुड़ा तरीका जोड़ा गया b/110887183
  • अगर बैक स्टैक खाली है या उससे जुड़ा डेस्टिनेशन आईडी, बैक स्टैक b/110893637 में मौजूद नहीं है, तो filebackStack() बार में गलत नतीजे देता है
  • फ़्रैगमेंट मैनेजर की स्थिति सेव होने के बाद, फ़्रैगमेंट Navigator, नेविगेशन कार्रवाइयों को अनदेखा कर देता है. साथ ही, "onSaveInstanceState" के बाद यह कार्रवाई नहीं की जा सकती b/110987825

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

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

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

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

वर्शन 1.0.0-alpha02

7 जून, 2018

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

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

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

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

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

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

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

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

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

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

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

  • नेविगेशन यूज़र इंटरफ़ेस (यूआई) अब नेस्ट किए गए ग्राफ़ का MenuItem के तौर पर इस्तेमाल करने पर, सही आइटम को हाइलाइट करेगा. बी/109675998

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

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

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

वर्शन 1.0.0-alpha01

8 मई, 2018

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