नेविगेशन
नया अपडेट | स्टेबल रिलीज़ | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
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.1
पर निर्भर करता है. (586fe7) - नेविगेशन अब SavedState
1.2.1
पर निर्भर करता है. (078e4e) - नेविगेशन अब ProfileInstaller
1.3.0
पर निर्भर करता है. (512f0c)
वर्शन 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
का इस्तेमाल करते समयNavBackStackEntry
s को फिर से शुरू की गई स्थिति में नहीं ले जाया गया. (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
एपीआई की सुविधा देता है, ताकिNavigator
sNavBackStackEntries
को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)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब फ़्रैगमेंट
1.5.4
पर निर्भर करता है. (Icd424)
वर्शन 2.6.0-alpha02
5 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha02
रिलीज़ हो गया है. वर्शन 2.6.0-alpha02 में ये कमियां हैं.
व्यवहार में बदलाव
- नेविगेशन ग्राफ़ के आईडी को
AppBarConfiguration
पर पास करते समय (जैसे किMenu
के ज़रिए),NavigationUI
अब उस नेविगेशन ग्राफ़ के शुरुआती डेस्टिनेशन को सिर्फ़ टॉप लेवल डेस्टिनेशन के तौर पर मानता है. यह ग्राफ़ में हर डेस्टिनेशन को गलत तरीके से टॉप लेवल डेस्टिनेशन के तौर पर मार्क करने के बजाय, उस डेस्टिनेशन को मानता है. किसी डेस्टिनेशन का आईडी भेजने की प्रोसेस में कोई बदलाव नहीं होता. यही सुविधाAppBarConfiguration
पर नएisTopLevelDestination
फ़ंक्शन के ज़रिए आपके अपने कोड के लिए उपलब्ध है. (Ie936e, b/238496771)
गड़बड़ियां ठीक की गईं
navigation:navigation-fragment
कॉम्पोनेंट अब फ़्रैगमेंट वर्शन1.5.2
पर निर्भर करता है. (I00ba4)- डायलॉग जैसे
FloatingWindow
डेस्टिनेशन पर नेविगेट करने पर, चुना गया मेन्यू आइटम अपडेट नहीं किया जाएगा. (I4cde8, b/240308330)
वर्शन 2.6.0-alpha01
7 सितंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha01
रिलीज़ हो गया है. वर्शन 2.6.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
- सबसे ऊपर मौजूद ऐप्लिकेशन बार के साथ काम करने के लिए,
NavigationUI
में मौजूदsetupWithNavController
इंटिग्रेशन, अब आपकेandroid:label
में मिलेReferenceType
आर्ग्युमेंट कीR.string
वैल्यू को, अपने-आप जनरेट होने वाले संसाधन पूर्णांक के आउटपुट के बजाय, अपनी स्ट्रिंग वैल्यू में पार्स करेंगे. (I5f803, b/167959935) NavDeepLink
अब कैटगरी के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे, दोहराए गए क्वेरी पैरामीटर इस्तेमाल करने की अनुमति मिलती है, जिन्हें आर्ग्युमेंट के अरे टाइप में मैप किया जाएगा.NavType
में अब एक डिफ़ॉल्ट तरीका भी शामिल है, जिसे पार्स की गई दो वैल्यू को जोड़ने के लिए बदला जा सकता है. (Id68c3, b/209977108)- जब नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में,
app:data
औरapp:dataPattern
एट्रिब्यूट में प्लेसहोल्डर के तौर पर, सटीक स्ट्रिंग${applicationId}
का इस्तेमाल किया जाता है, तो मुद्रा के बढ़ने पर प्लेसहोल्डर मेंpackageName
की जानकारी अपने-आप भर जाएगी. (इयाबदे, 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.2
नेविगेशन अब फ़्रैगमेंट1.5.2
पर निर्भर करता है. (aosp/2178734)
वर्शन 2.5.1
27 जुलाई, 2022
androidx.navigation:navigation-*:2.5.1
रिलीज़ हो गया है. वर्शन 2.5.1 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
Bundle
में सेव किए गए कस्टम आर्ग्युमेंट टाइप का इस्तेमाल करते समय,Navigation Safe Args
जनरेट की गई क्लास में काम न करने की चेतावनियां देने की वजह नहीं बनेगा. (Id86ed, b/237725966)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन लाइब्रेरी अब लाइफ़साइकल
2.5.1
पर निर्भर करती है. (Ib4451) - नेविगेशन लाइब्रेरी अब गतिविधि
1.5.1
पर निर्भर करती है. (I3efe8) - नेविगेशन लाइब्रेरी अब फ़्रैगमेंट
1.5.1
पर निर्भर करती है. (I56177)
वर्शन 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 में ये कमियां हैं.
नई सुविधाएं
NavBackStackEntry
अब ViewModel CreationExtras के साथ इंटिग्रेट हो जाता है, जिसे लाइफ़साइकल2.5.0-alpha01
के हिस्से के तौर पर पेश किया गया है. (Ib9fe2, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी मदद से,
ViewModel
को ऐक्सेस किया जा सकता है फ़्रैगमेंट केonCreate()
सेby navGraphViewModels()
के ज़रिएIllegalStateException
के साथ इस्तेमाल नहीं किया जा सकेगा. (I8a14d) NavDeepLink
s को अब ग़ैर-ज़रूरी तौर पर दो बार डिकोड करने की ज़रूरत नहीं है. इसका मतलब है कि सही आर्ग्युमेंट को अब आपके फ़ाइनल डेस्टिनेशन पर भेज दिया गया है. (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)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन के लिए लिखना अब इन पर निर्भर करता है गतिविधि लिखना 1.3.1. (I05829)
- नेविगेशन के लिए लिखना अब इन पर निर्भर करता है
लाइफ़साइकल व्यूमॉडल कंपोज़
2.4.0-beta01
. (Ib86a3)
वर्शन 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 ArgsUnable 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
वर्शन 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 में ये कमिट हैं.
डिपेंडेंसी से जुड़े अपडेट
composable
डेस्टिनेशन के लिएviewModel()
सहायता देने के लिए, नेविगेशन कंपोज़िशन अब लाइफ़साइकल व्यूमॉडल कंपोज़ 1.0.0-alpha01 पर निर्भर करती है. (I7a374)NavHost
अबOnBackPressedDispatcher
पाने के लिए, Activity-Compose 1.3.0-alpha01 सेLocalOnBackPressedDispatcherOwner
जोNavController
पर सेट है. (I65b12)
वर्शन 1.0.0-alpha06
28 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
रिलीज़ हो गया है. वर्शन 1.0.0-alpha06 में ये कमियां हैं.
एपीआई में किए गए बदलाव
NavController
पर एक्सटेंशन काgetBackStackEntry(route: String)
तरीका जोड़ा गया, जो उससे जुड़ाNavBackStackEntry
दिखाता है. (If8931)
वर्शन 1.0.0-alpha05
13 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
रिलीज़ हो गया है. वर्शन 1.0.0-alpha05 में ये कमियां हैं.
Compose 1.0.0-alpha10 के हिसाब से अपडेट किया गया.
वर्शन 1.0.0-alpha04
16 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
रिलीज़ हो गया है. वर्शन 1.0.0-alpha04 में ये कमियां हैं.
- इसे
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
के सभी इस्तेमाल को CustomView1.1.0
में जोड़े गए ज़्यादा सामान्यOpenable
इंटरफ़ेस से बदल दिया गया है. साथ ही,DrawerLayout
ने इसे DrawerLayout1.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)
डिपेंडेंसी से जुड़े अपडेट
NavigationUI
आर्टफ़ैक्ट अब CustomView1.1.0-rc01
और DrawerLayout1.1.0-rc01
पर निर्भर है. (aosp/1309696)
वर्शन 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)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब फ़्रैगमेंट
1.2.4
पर निर्भर करता है. (aosp/1277325) - डाइनैमिक नेविगेशन, अब Play Core
1.7.2
पर निर्भर करता है. (aosp/1282257)
वर्शन 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
अब CustomView1.1.0-alpha02
में पेश किए गएOpenable
इंटरफ़ेस का इस्तेमाल करता है (जोDrawerLayout
, DrawerLayout1.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.1
से: नेविगेशन2.2.1
अब लाइफ़साइकल व्यूमॉडल सेव की गई स्टेट2.2.0
और फ़्रैगमेंट1.2.1
पर निर्भर करता है.
वर्शन 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
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब फ़्रैगमेंट
1.2.4
पर निर्भर करता है. (aosp/1277325)
वर्शन 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.1
अब लाइफ़साइकल व्यूमॉडल सेव की गई स्टेट2.2.0
और फ़्रैगमेंट1.2.1
पर निर्भर करता है.
वर्शन 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/122802849NavDestination
में एक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/127631752FragmentNavigator.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/126082008ActivityNavigator.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/120042732NavController
अबpopBackStack()
कार्रवाइयों को सही तरीके से हैंडल करता है जब बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट या नेस्ट किए गएNavHostFragment
का इस्तेमाल करके. b/122770335NavigationUI
अब अप बटन के कॉन्टेंट की जानकारी को सही तरीके से सेट करता है. 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/120104424AppBarConfiguration
अब आपको फ़ॉलबैक सेट करने की सुविधा देता हैOnNavigateUpListener
इंस्टेंस जिसेnavController.navigateUp()
के लौटने पर कॉल किया जाएगाfalse
. b/79993862 b/120690961
नुकसान पहुंचाने वाले बदलाव
argType="reference"
के साथ<argument>
का इस्तेमाल करने पर नेविगेशन का इस्तेमाल नहीं किया जा सकता रॉ रिसॉर्स आईडी देने के बजाय, रेफ़रंस को पार्स करता है. b/111736515onNavDestinationSelected()
अब डिफ़ॉल्ट रूप से, आपके नेविगेशन ग्राफ़ की शुरुआती मंज़िल पर वापस पॉप-अप होता है, इससे वे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/118670572OnDestinationChangedListener
अबBundle
आर्ग्युमेंट को भी पास करता है aosp/837142app:clearTask
औरapp:launchDocument
एट्रिब्यूट और उनसे जुड़े एट्रिब्यूट तरीके हटा दिए गए हैं. अपने ग्राफ़ के रूट के साथapp:popUpTo
का इस्तेमाल करें, ताकि पिछली गतिविधियों से सभी डेस्टिनेशन हटाएं. b/119628354ActivityNavigator.Extras
अबBuilder
पैटर्न का इस्तेमाल करता है और इसकी क्षमता जोड़ता है कोईIntent.FLAG_ACTIVITY_
फ़्लैग सेट करें aosp/828140NavController.onHandleDeepLink
का नाम बदलकरhandleDeepLink
कर दिया गया है aosp/836063- ऐसी कई क्लास और तरीके जिनका इस्तेमाल सब-क्लास करने के लिए नहीं किया जाता है, जैसे कि
NavOptions
,NavInflater
,NavDeepLinkBuilder
, औरAppBarConfiguration
,final
बना दिए गए हैं aosp/835681 NavHostFragment.setGraph()
का इस्तेमाल न किया जा सकने वाला तरीका हटा दिया गया है aosp/835684NavigationUI.navigateUp(DrawerLayout, NavController)
का अब इस्तेमाल नहीं किया जा सकने वाला तरीका को निकाल दिया गया है. aosp/835684- फ़्रैगमेंट बनाने की सुविधा को
FragmentNavigator
में ले जाया गया. इससे, ये काम करना आसान हो गया हैFragmentFactory
में फ़्रैगमेंट बनाना. b/119054429 NavGraphNavigator
का कंस्ट्रक्टर अबContext
नहीं लेता है aosp/835340- NavigatorProvider अब
की जगह एक क्लास है.
NavigatorProvider
को, इन्होंने लौटायाgetNavigatorProvider()
ने इसकी सुविधाओं में बदलाव नहीं किया है. aosp/830660 NavDestination.navigate()
को हटा दिया गया है.Navigator
परnavigate()
को कॉल करें आज़माएं. aosp/830663Navigator
की ज़रूरी रीफ़ैक्टरिंग,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
नई सुविधाएं
- फ़्रैगमेंट और गतिविधि डेस्टिनेशन के लिए, शेयर किए गए एलिमेंट के ट्रांज़िशन अब b/79665225 पर काम करते हैं. ज़्यादा जानकारी के लिए, नेविगेशन आर्किटेक्चर कॉम्पोनेंट के साथ नेविगेशन लागू करना लेख पढ़ें
NavigationView
में किसी आइटम को चुनने पर, सबसे नीचे वाली शीट b/112158843 बंद हो जाएगी
एपीआई में किए गए बदलाव
- ब्रेकिंग बदलाव: नेविगेटर
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/79656847NavDeepLinkBuilder के इस्तेमाल के दौरान,
StackOverflowError
को ठीक किया गया. b/109653065नेस्ट किए गए ग्राफ़ पर वापस जाते समय,
IllegalArgumentException
को ठीक किया गया. b/80453447launchSingleTop
का इस्तेमाल करते समय ओवरलैप होने वाले फ़्रैगमेंट से जुड़ी समस्या ठीक की गई. b/79407969नेविगेशन, अब नेस्ट किए गए ग्राफ़ के लिए सही सिंथेटिक बैक स्टैक बनाता है. b/79734195
नेविगेशन यूज़र इंटरफ़ेस (यूआई) अब नेस्ट किए गए ग्राफ़ का
MenuItem
के तौर पर इस्तेमाल करने पर, सही आइटम को हाइलाइट करेगा. बी/109675998
एपीआई में किए गए बदलाव
NavOptions
में, कार्रवाइयों और उससे जुड़े एपीआई के लिएclearTask
एट्रिब्यूट को हटा दिया गया है. b/80338878NavOptions
में, कार्रवाइयों और उससे जुड़े एपीआई के लिएlaunchDocument
एट्रिब्यूट को हटा दिया गया है. b/109806636
वर्शन 1.0.0-alpha01
8 मई, 2018
नेविगेशन विकल्प से, इन-ऐप्लिकेशन ऐप्लिकेशन बनाने के लिए फ़्रेमवर्क मिलता है
नेविगेशन. यह शुरुआती रिलीज़ 1.0.0-alpha01
है.