नेविगेशन
नया अपडेट | रिलीज़ किया गया जांचा और परखा हुआ वर्शन | रिलीज़ कैंडिडेट | बीटा रिलीज़ | ऐल्फ़ा रिलीज़ |
---|---|---|---|---|
30 अक्टूबर, 2024 | 2.8.3 | - | - | 2.9.0-ऐल्फ़ा02 |
डिपेंडेंसी का एलान करना
नेविगेशन पर डिपेंडेंसी जोड़ने के लिए, आपको अपने प्रोजेक्ट में Google Maven रिपॉज़िटरी जोड़नी होगी. ज़्यादा जानकारी के लिए, Google की Maven रिपॉज़िटरी पढ़ें.
अपने ऐप्लिकेशन या मॉड्यूल के लिए, build.gradle
फ़ाइल में उन आर्टफ़ैक्ट के लिए डिपेंडेंसी जोड़ें जिनकी आपको ज़रूरत है:
ग्रूवी
dependencies { def nav_version = "2.8.0" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" }
Kotlin
dependencies { val nav_version = "2.8.0" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") }
Safe Args
Safe Args जोड़ने के लिए
अपने प्रोजेक्ट की टॉप लेवल build.gradle
फ़ाइल में, यहां दिया गया classpath
शामिल करें:
ग्रूवी
buildscript { repositories { google() } dependencies { def nav_version = "2.8.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
आपको दो उपलब्ध प्लगिन में से किसी एक का इस्तेमाल भी करना होगा.
Java या Java और Kotlin मॉड्यूल के लिए सही Java लैंग्वेज कोड जनरेट करने के लिए, जोड़ें
इस पंक्ति को आपके ऐप्लिकेशन या मॉड्यूल की build.gradle
फ़ाइल पर ले जाएं:
ग्रूवी
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
इसके अलावा, सिर्फ़ Kotlin मॉड्यूल के लिए सही Kotlin कोड जनरेट करने के लिए, यह जोड़ें:
ग्रूवी
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
आपके प्रॉडक्ट में android.useAndroidX=true
होना ज़रूरी है
gradle.properties
फ़ाइल के अनुसार
AndroidX पर माइग्रेट करना.
Kotlin एक्सटेंशन इस्तेमाल करने के बारे में जानकारी के लिए, ktx दस्तावेज़ देखें.
डिपेंडेंसी के बारे में ज़्यादा जानकारी के लिए, बिल्ड डिपेंडेंसी जोड़ना लेख पढ़ें.
सुझाव
आपके सुझाव, शिकायत या राय से हमें Jetpack को बेहतर बनाने में मदद मिलती है. अगर आपको कोई नई समस्या मिलती है या इस लाइब्रेरी को बेहतर बनाने के लिए आपके पास कोई सुझाव है, तो हमें बताएं. नई लाइब्रेरी बनाने से पहले, कृपया इस लाइब्रेरी में मौजूद मौजूदा समस्याओं पर एक नज़र डालें. स्टार बटन पर क्लिक करके, किसी मौजूदा समस्या के लिए अपना वोट जोड़ा जा सकता है.
ज़्यादा जानकारी के लिए, समस्या ट्रैकर का दस्तावेज़ देखें.
वर्शन 2.9
वर्शन 2.9.0-alpha02
30 अक्टूबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha02
रिलीज़ हो गया है. वर्शन 2.9.0-alpha02 में ये कमिट मौजूद हैं.
बाहरी योगदान
NavController.handleDeepLink(request: NavDeepLinkRequest)
का नया सामान्य तरीका. धन्यवाद, कॉन्स्टेंटिन त्स्खोर्बेव! (I3e228)
वर्शन 2.9.0-alpha01
16 अक्टूबर, 2024
androidx.navigation:navigation-*:2.9.0-alpha01
रिलीज़ हो गया है. वर्शन 2.9.0-alpha01 में ये कमिट मौजूद हैं.
नई सुविधाएं
- कस्टम नेविगेटर अब अपने डेस्टिनेशन को
SupportingPane
इंटरफ़ेस लागू करने के तौर पर मार्क कर सकते हैं. इससेNavController
को पता चलता है कि ये डेस्टिनेशन, दूसरे डेस्टिनेशन के साथ दिखाए जाएंगे. इस इंटरफ़ेस का इस्तेमाल करने पर, एक ही समय पर एक से ज़्यादा डेस्टिनेशनRESUMED
हो सकते हैं. उदाहरण के लिए, (Id5559) - नेविगेशन
2.8.3
में:navigation-common
,navigation-runtime
, औरnavigation-compose
मॉड्यूल के लिए, नई लिंट जांच जोड़ी गई हैं. इससे, ऐसे सभी सुरक्षित रास्तों की पहचान करने में मदद मिलेगी जिन्हें@Serializable
के साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच,NavGraphBuilder
औरNavDeepLinkBuilder
एक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - नेविगेशन
2.8.3
में:navigation-common
,navigation-runtime
, औरnavigation-compose
मॉड्यूल के लिए नई लिंट जांच जोड़ी गई है. इससे, Enum आर्ग्युमेंट वाले ऐसे किसी भी सुरक्षित रास्ते की पहचान करने में मदद मिलेगी जिसे@Keep
के साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच,NavGraphBuilder
औरNavDeepLinkBuilder
एक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
व्यवहार में बदलाव
- अगर पहले से
DESTROYED
के तौर पर सेट किए गएNavController
का इस्तेमाल किया जाता है, तो अबIllegalStateException
दिखेगा. (I520da, b/369616172)
गड़बड़ियां ठीक की गईं
- अगर छोटे किए गए बिल्ड में Enum क्लास हमेशा के लिए मिट जाती है, तो
@Keep
एनोटेशन का इस्तेमाल करने का सुझाव देने के लिए, Enum क्लास अपडेट करने का अपवाद नहीं मिला. (I90e79, b/358137294)
आम समस्याएं
Navigation 2.8.*
में जोड़े गए नए lint नियमों में एक समस्या है. इस वजह से, Android Gradle प्लग इन 8.4 और उसके बाद के वर्शन के साथ lint को चलाने पर,Obsolete custom lint check
गड़बड़ी का मैसेज मिलता है. (b/368070326, b/371463741)
वर्शन 2.8
वर्शन 2.8.3
16 अक्टूबर, 2024
androidx.navigation:navigation-*:2.8.3
रिलीज़ हो गया है. वर्शन 2.8.3 में ये कमिट शामिल हैं.
नई सुविधाएं
navigation-common
,navigation-runtime
, औरnavigation-compose
मॉड्यूल के लिए, नई लिंट जांच जोड़ी गई हैं. इससे, ऐसे सभी सुरक्षित रास्तों की पहचान करने में मदद मिलेगी जिन्हें@Serializable
के साथ सही तरीके से एनोटेट नहीं किया गया है. यह जांच,NavGraphBuilder
औरNavDeepLinkBuilder
एक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)navigation-common
,navigation-runtime
, औरnavigation-compose
मॉड्यूल के लिए नई लिंट जांच जोड़ी गई. इससे Enum आर्ग्युमेंट के साथ ऐसे रास्तों की पहचान करने में मदद मिलेगी जो@Keep
के साथ सही तरीके से नहीं दिखते. यह जांच, सभीNavGraphBuilder
औरNavDeepLinkBuilder
एक्सटेंशन फ़ंक्शन पर लागू होती है. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
गड़बड़ियां ठीक की गईं
Navigation 2.8.*
में जोड़े गए नए लिंट नियमों की वजह से, Android Gradle प्लग इन 8.4 और उसके बाद के वर्शन के साथ लिंट चलाने परObsolete custom lint check
गड़बड़ी का मैसेज दिखने की समस्या को ठीक किया गया. (I1be3d, b/368070326, b/371463741)
आम समस्याएं
- Lint 16 (AGP 8.7) या उसके बाद के वर्शन के साथ लिंट चलाने की कोशिश करने पर, नेविगेशन लिंट, 'अब काम नहीं करने वाली कस्टम लिंट जांच' गड़बड़ी का मैसेज दिखाएगा. (b/371926651)
वर्शन 2.8.2
2 अक्टूबर, 2024
androidx.navigation:navigation-*:2.8.2
रिलीज़ हो गया है. वर्शन 2.8.2 में ये कमिट शामिल हैं.
नई सुविधाएं
- नेविगेशन टाइप सेफ़्टी की सुविधा अब उन सीरीअलाइज़ की जा सकने वाली क्लास के साथ काम करती है जिनमें
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
, औरList<Double>?
शामिल हैं. इसके लिए, किसी कस्टमNavType
की ज़रूरत नहीं होती. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
गड़बड़ियां ठीक की गईं
- गड़बड़ी के मैसेज को बेहतर बनाया गया है. जब नेविगेशन किसी रूट के आर्ग्युमेंट को
NavType
पर मैप नहीं कर पाता है, तो गड़बड़ी के नए मैसेज में आर्ग्युमेंट का नाम, आर्ग्युमेंट का पूरी तरह क्वालिफ़ाइड नाम, और रूट का पूरा नाम शामिल होगा. (Id8416, b/346264232)
वर्शन 2.8.1
18 सितंबर, 2024
androidx.navigation:navigation-*:2.8.1
रिलीज़ हो गया है. वर्शन 2.8.1 में ये बदलाव शामिल हैं.
नई सुविधाएं
- टाइप-सेफ़ एपीआई का इस्तेमाल करके
popBackStack
करने की कोशिश करते समय,popBackStack
फ़ंक्शन का इस्तेमाल करने के लिए, एक नया लिंट रूल जोड़ा गया है. (Ief161, b/358095343)
गड़बड़ियां ठीक की गईं
- नेविगेशन के लिए अब ज़रूरी है कि
NavGraph
केstartDestination
में पास किए गए रास्ते में, सभी ज़रूरी आर्ग्युमेंट की वैल्यू शामिल हों. इनमें ऐसे आर्ग्युमेंट भी शामिल हैं जिनकी वैल्यू नहीं दी जा सकती और जिनकी कोई डिफ़ॉल्ट वैल्यू नहीं है. (I18e74, b/362594265) - नेविगेशन सेफ़ आर्ग्युमेंट में, ऐसी स्ट्रिंग के लिए सहायता जोड़ी गई है जिनमें "null" वैल्यू नहीं हो सकतीं. इससे "null" वैल्यू को वैसे ही पार्स करके बंडल में सेव किया जाएगा. यह मौजूदा व्यवहार से अलग है, जहां "null" वैल्यू को null ऑब्जेक्ट में पार्स किया जाता है. यह बदलाव सिर्फ़ उन स्ट्रिंग टाइप पर लागू होता है जिनमें वैल्यू न होने पर गड़बड़ी का मैसेज नहीं दिखता. वैल्यू न डालने पर भी काम करने वाली स्ट्रिंग में कोई बदलाव नहीं होता. (I08b4a, b/348936238)
NavDestination
को अब डीपलिंक नहीं किया जा सकता. हालांकि, डेस्टिनेशन में साफ़ तौर पर जोड़े गए डीप लिंक से ऐसा किया जा सकता है. इसका मतलब यह भी है कि आप सिर्फ़ उस डेस्टिनेशन के रूट पर नेविगेट कर सकते हैं जिसमें नेविगेट करने वाला फ़ंक्शन ओवरलोड हो. यह वह फ़ंक्शन होता है जो स्ट्रिंग रूट लेता है. इससे, उस समस्या को ठीक किया गया है जिसकी वजह से, संभावित रूप से सुरक्षित डेस्टिनेशन पर डीप लिंक किया जा सकता था. (Ie30e6)
डिपेंडेंसी अपडेट
- नेविगेशन सेफ़ आर्ग्युमेंट अब Kotlin 2.X के बजाय, Kotlin 1.9.24 पर निर्भर करता है. इससे यह पक्का होता है कि डेवलपर को अपडेट करने के लिए मजबूर न किया जाए. (a4129a)
- नेविगेशन कंपोज करने की सुविधा अब कंपोज करें
1.7.2
पर निर्भर करती है.
वर्शन 2.8.0
4 सितंबर, 2024
androidx.navigation:navigation-*:2.8.0
रिलीज़ हो गया है. वर्शन 2.8.0 में ये शर्तें शामिल हैं.
2.7.0 के बाद से हुए अहम बदलाव
नेविगेशन Kotlin डीएसएल टाइप-सेफ़्टी
- नेविगेशन, अब Kotlin DSL (नेविगेशन कंपोज़ में इस्तेमाल किया जाता है) के लिए टाइप-सिक्योरिटी की सुविधा देता है. यह Kotlin सीरियलाइज़ेशन का इस्तेमाल करता है, ताकि आप टाइप सेफ़ ऑब्जेक्ट और डेटा क्लास के ज़रिए, नेविगेशन ग्राफ़ में डेस्टिनेशन तय कर सकें:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
ज़्यादा जानकारी के लिए, नेविगेशन कंपोज मीट टाइप सेफ़्टी ब्लॉग पोस्ट देखें.
नेविगेशन कंपोज़िशन का अनुमानित बैक
- नेविगेशन कंपोज़, अब compose-animation के नए
SeekableTransitionState
एपीआई की मदद से, ऐप्लिकेशन में वापस जाने की सुविधा देता है. इससे, 'पूरा हो गया' जेस्चर की मदद से लेन-देन को पूरा करने या रद्द करने का फ़ैसला लेने से पहले, अपने कस्टम ट्रांज़िशन के साथ पिछले डेस्टिनेशन को देखने के लिए, 'वापस जाएं' जेस्चर का इस्तेमाल किया जा सकता है.
नेविगेशन फ़्रैगमेंट का कॉम्पोज़ेबल
- एक नया
navigation-fragment-compose
आर्टफ़ैक्ट जोड़ा गया है. इसमेंNavHostFragment
के विकल्प के तौर परComposableNavHostFragment
शामिल है. इसकी मदद से, नेविगेशन एक्सएमएल फ़ाइलों में कॉम्पोज़ेबल डेस्टिनेशन जोड़े जा सकते हैं. हरcomposable
डेस्टिनेशन को टॉप-लेवल के तौर पर बताया जाना चाहिए. इसमें कोई आर्ग्युमेंट@Composable
तरीका शामिल नहीं होना चाहिए. हर डेस्टिनेशन के लिए,android:name
एट्रिब्यूट के तौर पर उस नाम का इस्तेमाल किया जाना चाहिए जो पूरी तरह क्वालिफ़ाइड नाम हो. इनमें से किसी एक डेस्टिनेशन पर जाने पर, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बनाया जाता है.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
अन्य बदलाव
- नेविगेशन कंपोज, अब Compose 1.7.0 पर निर्भर करता है.
- नेविगेशन में अब एक नई
CollectionNavType<T>
क्लास उपलब्ध है. यहNavType<T>
की सब-क्लास है. इसका इस्तेमाल, सूची, ऐरे, मैप जैसे कलेक्शन पर आधारित आर्ग्युमेंट के लिए किया जाता है. सभी डिफ़ॉल्टNavType
ऐरे (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
, औरStringArrayType
) अब इस नई क्लास से इनहेरिट होते हैं. NavType
में अब इंटर, स्ट्रिंग, बूलियन, फ़्लोट, और लॉन्ग की सूचियों के लिए सहायता पहले से मौजूद है.
वर्शन 2.8.0-rc01
21 अगस्त, 2024
androidx.navigation:navigation-*:2.8.0-rc01
रिलीज़ हो गया है. वर्शन 2.8.0-rc01 में ये बातें शामिल हैं.
गड़बड़ियां ठीक की गईं
- टाइप सेफ़ आर्ग्युमेंट के तौर पर टॉप लेवल Enum क्लास को पास करते समय, नेविगेशन क्रैश होने की समस्या को ठीक करना. (I0ba76, b/358137294)
- नेविगेशन 2.8 अब एसडीके 34 के साथ सही तरीके से काम करता है. यह 2.9 रिलीज़ होने तक, एसडीके 35 पर स्विच नहीं होगा. यह रिलीज़, AndroidX की अन्य लाइब्रेरी के साथ होगी. (b/358798728)
वर्शन 2.8.0-beta07
7 अगस्त, 2024
androidx.navigation:navigation-*:2.8.0-beta07
रिलीज़ हो गया है. वर्शन 2.8.0-beta07 में ये कमिट शामिल हैं.
आम समस्याएं
- b/358137294 की वजह से, किसी दूसरी क्लास में नेस्ट किए गए Enums ही बॉक्स के बाहर काम करते हैं. टॉप लेवल Enums की सुविधा अगली रिलीज़ में उपलब्ध होगी.
गड़बड़ियां ठीक की गईं
- डुप्लीकेट या शेयर की गई जगहों पर नेविगेट करते समय, नेविगेशन की सुविधा, ग्राफ़ में मौजूद मौजूदा जगह से सबसे ज़्यादा मैच करने वाली जगह पर जाने को प्राथमिकता देगी. (Ic89a4, b/352006850)
- safe args में नेविगेशन के लिए, अब एक नया
NavType.EnumType
जोड़ा गया है. इसका मतलब है किEnum
टाइप के लिए, अब कस्टमNavType
की ज़रूरत नहीं है. ध्यान दें किEnum
काSerialName
, डिफ़ॉल्ट तौर पर पूरी तरह क्वालिफ़ाइड नाम होना चाहिए. (I66d22, b/346475493) - सुरक्षित आर्ग्युमेंट में नेविगेशन की सुविधा जोड़ी गई है. इसमें
Int?
,Long?
,Float?
,Boolean?
, औरEnum<*>?
जैसे शून्य वाले आर्ग्युमेंट टाइप के लिए सहायता पहले से मौजूद है. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - अगर
NavGraph
को पास किया गयाstartDestination
रूट,startDestination.route
से पूरी तरह मेल खाता है, तोNavGraph
काstartDestination
अब डिफ़ॉल्ट आर्ग्युमेंट वैल्यू का इस्तेमाल करेगा. (I13762, b/354046047)
वर्शन 2.8.0-beta06
24 जुलाई, 2024
androidx.navigation:navigation-*:2.8.0-beta06
रिलीज़ हो गया है. वर्शन 2.8.0-beta06 में ये प्रतिबद्धताएं शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें,
WrongStartDestinationType
की लिंट जांच में, पास किए गए क्लास टाइप पर, साथी ऑब्जेक्ट की जांच नहीं की गई थी. इस वजह से, लिंट को गड़बड़ी का पता नहीं चल पा रहा था. (I92b09)
वर्शन 2.8.0-beta05
10 जुलाई, 2024
androidx.navigation:navigation-*:2.8.0-beta05
रिलीज़ हो गया है. वर्शन 2.8.0-beta05 में ये कमिट शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए
NavGraphs
के एक हीstartDestination
रास्ते को शेयर करने पर,singleTop
नेविगेशन क्रैश होने की समस्या को ठीक करना. (I17b94, b/294408596)
वर्शन 2.8.0-beta04
26 जून, 2024
androidx.navigation:navigation-*:2.8.0-beta04
रिलीज़ हो गया है. वर्शन 2.8.0-beta04 में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन अब पाथ आर्ग्युमेंट में खाली स्ट्रिंग के साथ नेविगेट करने की सुविधा देता है. (Ic5dbd, b/339481310)
@Serializable(with =...)
के ज़रिए सीधे क्लास फ़ील्ड पर बताए गए कस्टम सीरियलाइज़र के लिए, गड़बड़ी का मैसेज बेहतर बनाएं. इससे यह साफ़ तौर पर पता चलेगा कि फ़िलहाल यह सुविधा काम नहीं करती. (I052b0, b/341319151)SavedStateHandleFactory
test api का इस्तेमाल अब Android के अलावा अन्य टेस्ट में किया जा सकता है. हालांकि, इसके लिए Robolectric को बंडल के साथ आर्ग्युमेंट पार्स करने की सुविधा की ज़रूरत होगी. (I76cdc, b/340966212)- Compose में टाइप-सुरक्षित नेविगेशन का इस्तेमाल करके, प्रोसेस बंद होने के बाद ऐप्लिकेशन को फिर से शुरू करने पर होने वाले क्रैश को ठीक किया गया. (Ia8f38, b/341801005)
- नेविगेशन कंपोज में एक समस्या को ठीक किया गया है. इस समस्या की वजह से, अनुमानित बैक जेस्चर को रद्द करने के बाद, उपयोगकर्ता जिस
NavBackStackEntry
पर वापस जाता है वह कभी भीRESUMED
लाइफ़साइकल स्टेटस पर वापस नहीं आता. इससे यह भी पक्का होता है कि लौटने वाला डेस्टिनेशन, फ़्लिंग के बाद जगह पर स्नैप करने के बजाय, सही तरीके से ऐनिमेट होता है. (I97a0c, b/346608857) - नेविगेशन कंपोज के साथ अनुमानित तरीके से वापस जाने की सुविधा का इस्तेमाल करने पर, पॉप-अप होने वाले डेस्टिनेशन का z-क्रम अब सही होगा. साथ ही, आने वाले डेस्टिनेशन के ऊपर सही तरीके से ऐनिमेशन होगा. (I2077b, b/345993681)
वर्शन 2.8.0-beta03
12 जून, 2024
androidx.navigation:navigation-*:2.8.0-beta03
रिलीज़ हो गया है. वर्शन 2.8.0-beta03 में ये कमिट शामिल हैं.
एपीआई में बदलाव
CollectionNavType
में एक नया एब्सट्रैक्टemptyCollection()
तरीका है. आर्ग्युमेंट के तौर पर पास किए गए खाली कलेक्शन को मैनेज करने के लिए, इसे बदलें. (Ie4d84, b/341723133)
गड़बड़ियां ठीक की गईं
NavType.serializeAsValue
औरserializeAsValues
में दस्तावेज़ जोड़ा गया, ताकि यह हाइलाइट किया जा सके कि फ़ाइनल आउटपुट, Uri में एन्कोड होने चाहिए. (Ida6bd, b/344943214)CollectionNavType
आर्ग्युमेंट के तौर पर कोई वैल्यू न डालने पर,toRoute<T>
को कॉल करने पर क्रैश होने की समस्या को ठीक किया गया. अगरCollectionNavType
को शून्य के तौर पर इस्तेमाल किया जाता है, तो आउटपुट आर्ग्युमेंट, Serializable क्लास में बताई गई डिफ़ॉल्ट वैल्यू होगी. अगर कोई डिफ़ॉल्ट वैल्यू नहीं है, तोemptyCollection()
की रिटर्न वैल्यू होगी. (I84158, Id630f, b/342672856)
वर्शन 2.8.0-beta02
29 मई, 2024
androidx.navigation:navigation-*:2.8.0-beta02
रिलीज़ हो गया है. वर्शन 2.8.0-beta02 में ये प्रतिबद्धताएं शामिल हैं.
गड़बड़ियां ठीक की गईं
NavBackStackEntry.toRoute
का इस्तेमाल करते समय,NavType
के लिए वैल्यू न डालने परClassCastException
क्रैश होने की समस्या को ठीक किया गया. (I1c29b, b/342239473)- नेविगेशन बैक स्टैक की स्थिति को पहले जैसा करने में आने वाली समस्याओं को ठीक कर दिया गया है. ये ऐसी समस्याएं वापस लाने की कोशिश करती हैं जो मौजूदा डेस्टिनेशन के आईडी से ऐक्सेस नहीं की जा सकतीं. रूट आईडी पर आधारित होते हैं. इसलिए, रूट की मदद से बनाए गए डेस्टिनेशन पर भी असर पड़ा. इससे,
clearBackStack()
को कॉल करने की वजह से होने वाली क्रैश की समस्या भी ठीक हो जाती है. (I423c3, b/339908057)
वर्शन 2.8.0-beta01
14 मई, 2024
androidx.navigation:navigation-*:2.8.0-beta01
रिलीज़ हो गया है. वर्शन 2.8.0-beta01 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
SavedStateHandle.toRoute()
अब कस्टम ऑर्ग्युमेंट टाइप के लिए,typeMap
पैरामीटर लेता है. (Ie39fb, b/339026523)- Kotlin के Serializable ऑब्जेक्ट से
SavedStateHandle
बनाने के लिए,navigation-testing
में एक टेस्ट एपीआई जोड़ा गया. (Id4867, b/339080702)
गड़बड़ियां ठीक की गईं
- नेविगेशन Kotlin DSL फ़ंक्शन के लिए, ऐसे पैरामीटर दस्तावेज़ जोड़ दिए गए हैं जो मौजूद नहीं हैं. (I26a36)
वर्शन 2.8.0-alpha08
1 मई, 2024
androidx.navigation:navigation-*:2.8.0-alpha08
रिलीज़ हो गया है. वर्शन 2.8.0-alpha08 में ये कमिट शामिल हैं.
नेविगेशन कंपोज़ में Safe Args
- Kotlin Serialization पर आधारित Navigation Compose और Navigation Kotlin DSL के उपयोगकर्ताओं के लिए, कंपाइल के समय टाइप सेफ़्टी की सुविधा देने का काम पूरा हो गया है. साथ ही, पहले एक्सपेरिमेंट के तौर पर उपलब्ध एपीआई अब स्टेबल हो गए हैं. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
यह सुविधा Kotlin Serialization का इस्तेमाल करती है, ताकि आप टाइप सेफ़ ऑब्जेक्ट और डेटा क्लास की मदद से, अपने नेविगेशन ग्राफ़ में डेस्टिनेशन तय कर सकें:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
ज़्यादा जानकारी के लिए, नेविगेशन कंपोज मीट टाइप सेफ़्टी ब्लॉग पोस्ट देखें.
नई सुविधाएं
navigation-fragment-compose
आर्टफ़ैक्ट अबComposableFragment
में कंपोज़ेबल मेंLocalFragment
कंपोज़िशन उपलब्ध कराता है. (If35e5)NavType
में अब Int, String, Boolean, Float, और Long की सूचियों के लिए, पहले से मौजूद सुविधाएं हैं. (I4b6dd, Ia914c, b/188693139)
वर्शन 2.8.0-alpha07
17 अप्रैल, 2024
androidx.navigation:navigation-*:2.8.0-alpha07
रिलीज़ हो गया है. वर्शन 2.8.0-alpha07 में ये कमिट शामिल हैं.
नई सुविधाएं
एक नया
navigation-fragment-compose
आर्टफ़ैक्ट जोड़ता है, जिसमेंNavHostFragment
के लिएComposableNavHostFragment
विकल्प शामिल होता है. इसकी मदद से, नेविगेशन एक्सएमएल फ़ाइलों मेंcomposable
डेस्टिनेशन जोड़े जा सकते हैं. हरcomposable
डेस्टिनेशन को टॉप-लेवल के तौर पर दिखाया जाना चाहिए. इसमें कोई आर्ग्युमेंट@Composable
नहीं होना चाहिए. इसका पूरा नाम, हर डेस्टिनेशन परandroid:name
एट्रिब्यूट के तौर पर इस्तेमाल किया जाना चाहिए. इनमें से किसी भी डेस्टिनेशन पर जाने पर, कंपोज़ेबल कॉन्टेंट दिखाने के लिए एक फ़्रैगमेंट बन जाता है. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
एपीआई में हुए बदलाव
- Kotlin में सीरियलाइज़ेशन के आधार पर, नेविगेशन कंपोज में Safe Args की सुविधा का इस्तेमाल जारी है. ये एपीआई पूरे नहीं हैं और इन्हें
ExperimentalSafeArgsApi
एनोटेशन के साथ मार्क किया गया है. आने वाले समय में, पूरी API सुविधा रिलीज़ होने के बाद, यह एनोटेशन हटा दिया जाएगा. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
वर्शन 2.8.0-alpha06
3 अप्रैल, 2024
androidx.navigation:navigation-*:2.8.0-alpha06
रिलीज़ हो गया है. वर्शन 2.8.0-alpha06 में ये कमिट शामिल हैं.
एपीआई में हुए बदलाव
- Kotlin Serialization पर आधारित तरीके का इस्तेमाल करके, Navigation Compose में Safe Args के लिए सहायता शुरू हो गई है. ये एपीआई पूरे नहीं हैं और इन्हें
ExperimentalSafeArgsApi
एनोटेशन के साथ मार्क किया गया है. जब आने वाले समय में रिलीज़ होने वाले पूरे एपीआई का प्लैटफ़ॉर्म तैयार हो जाएगा, तब इस जानकारी को हटा दिया जाएगा. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
गड़बड़ियां ठीक की गईं
NavHost
ने अबAlignment.TopStart
का इस्तेमाल, डिफ़ॉल्ट content बाएं कोने में मौजूद आर्ग्युमेंट के तौर पर किया है. इससे यहAnimatedContent
के लिए डिफ़ॉल्ट तौर पर काम करता है. साथ ही, सेंटर ट्रांज़िशन से अनचाहे स्केल के कुछ उदाहरणों को ठीक करता है. (I09e72, b/330111602)- नेविगेशन कंपोज का इस्तेमाल करते समय, अनुमानित बैक जेस्चर को फ़्लिक करने पर,
NavHost
अब तुरंत खत्म होने के बजाय, कस्टम ट्रांज़िशन को सही तरीके से पूरा करेगा. (I99017, b/327292110)
वर्शन 2.8.0-alpha05
20 मार्च, 2024
androidx.navigation:navigation-*:2.8.0-alpha05
रिलीज़ हो गया है. वर्शन 2.8.0-alpha05 में ये कमिट शामिल हैं.
नई सुविधाएं
- अब
defaultValue
पर निर्भर किए बिना, सीधेstartDestination
रूट मेंNavGraph
केstartDestination
को आर्ग्युमेंट दिए जा सकते हैं. यह नेस्ट किए गएNavGraph
startDestinations
पर भी लागू होता है. (I0e0b5, b/109505019, b/188693139)
एपीआई में हुए बदलाव
- सूची, अरे, मैप जैसे कलेक्शन-आधारित आर्ग्युमेंट के लिए, नई ऐब्स्ट्रैक्ट
CollectionNavType<T>
क्लास जोड़ी गई. यहNavType<T>
की एक सब-क्लास है. (Ic6d63, b/188693139) - सभी डिफ़ॉल्ट
NavType
ऐरे (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
, औरStringArrayType
) अबCollectionNavType
टाइप के हैं (Idcf79, b/188693139) NavType
अब एक नया ओपनvalueEquals
एपीआई उपलब्ध कराता है. इससे यह पता चलता है कि एक ही टाइप की दो वैल्यू एक-दूसरे के बराबर हैं या नहीं. (I6cb97, b/327229511)
गड़बड़ियां ठीक की गईं
- डीप लिंक में क्वेरी पैरामीटर अब तर्क के नाम (जैसे कि
{argName}
) के आस-पास कर्ली ब्रैकेट के तौर पर वैल्यू को, स्ट्रिंग पर आधारितNavTypes
के लिए मान्य वैल्यू के तौर पर इस्तेमाल करने की अनुमति देता है. इससे उस समस्या को ठीक किया जाता है जहां इस तरह की वैल्यू को सभी टाइप के लिए अमान्य (या वैल्यू मौजूद न होने) माना जाता है. (I18302, b/327274038) NavController
फ़ंक्शन,navigate
याpopBackStack
जैसे रास्तों के साथ काम करते हैं. अब ये फ़ंक्शन, अरेNavTypes
के आर्ग्युमेंट से भरे रास्तों से सही तरीके से मैच कर सकते हैं. (Iea805, b/327229511)
वर्शन 2.8.0-alpha04
6 मार्च, 2024
androidx.navigation:navigation-*:2.8.0-alpha04
रिलीज़ हो गया है. वर्शन 2.8.0-alpha04 में ये कमिट शामिल हैं.
नई सुविधाएं
- अब नेविगेशन कंपोज़ में, अपने ट्रांज़िशन के लिए
SizeTranform
तय किया जा सकता है. इसके लिए, उन्हेंcomposable
और/याnavigation
फ़ंक्शन के लिए शुरू करने के हिस्से के तौर पर तय करें. (I91062, b/296912651)
गड़बड़ियां ठीक की गईं
- Compose नेविगेशन में
NavHost
का इस्तेमाल करने पर, जेस्चर के बिना सिस्टम के 'वापस जाएं' बटन का इस्तेमाल करने पर, ट्रांज़िशन सही से न दिखने की समस्या को ठीक किया गया है. (Iceeae, b/325998468)
वर्शन 2.8.0-alpha03
21 फ़रवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha03
रिलीज़ हो गया है. 2.8.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavBackStackEntry.savedStateHandle
को अब@MainThread
के तौर पर मार्क कर दिया गया है, क्योंकि यह ऐसे कोड का इस्तेमाल करता है जो मुख्य थ्रेड पर किसी भी तरह से होना ज़रूरी है. (Ibb988, b/299523245)
गड़बड़ियां ठीक की गईं
- नेविगेशन में होने वाली उस समस्या को ठीक कर दिया गया है जिसकी वजह से
NavGraph
ViewModels बहुत जल्दDESTROYED
हो गए, क्योंकि इससे जुड़ी एंट्री काViewModel
, सेव किए गए स्टेटस का हिस्सा नहीं था. (Ib6bb7, b/317581849)
डिपेंडेंसी अपडेट
- नेविगेशन कंपोज करने की सुविधा अब Compose 1.7.0-alpha03 पर निर्भर करती है.
वर्शन 2.8.0-alpha02
7 फ़रवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha02
रिलीज़ हो गया है. 2.8.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन कंपोज, अब compose-animation के नए
SeekableTransitionState
एपीआई की मदद से, ऐप्लिकेशन में वापस जाने की सुविधा देता है. इससे, 'पूरा हो गया' जेस्चर की मदद से लेन-देन को पूरा करने या रद्द करने का फ़ैसला लेने से पहले, अपने कस्टम ट्रांज़िशन के साथ पिछले डेस्टिनेशन को देखने के लिए, 'वापस जाएं' जेस्चर का इस्तेमाल किया जा सकता है. (I8b8e9)
वर्शन 2.8.0-alpha01
24 जनवरी, 2024
androidx.navigation:navigation-*:2.8.0-alpha01
रिलीज़ हो गया है. 2.8.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
BackStackState
लीक की समस्या को ठीक किया गया. इस समस्या की वजह से, किसी डेस्टिनेशन पर एक से ज़्यादाsaveState
कॉल करने पर, कई स्टेटस सेव हो जाते थे. हालांकि, सिर्फ़ पहला स्टेटस ही वापस लाया जा सकता था. (I598b0, b/309559751)- ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए,
NavigationUI
हेल्पर का इस्तेमाल करने पर, नॉन-स्ट्रिंग आर्ग्युमेंट सही से न दिखने की समस्या को ठीक किया गया है. (#636, b/316676794)
डिपेंडेंसी अपडेट
- नेविगेशन के लिए लिखने की सुविधा अब लिखें
1.7.0-alpha01
पर निर्भर करती है. इसमें ऐसी समस्या ठीक की गई है जिसकी वजह से बड़े पैमाने पर ऐनिमेशन तैयार हो सकता है. (b/297258205)
बाहरी योगदान
- ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए,
NavigationUI
हेल्पर का इस्तेमाल करते समय, स्ट्रिंग से जुड़े आर्ग्युमेंट के लिए डिसप्ले से जुड़ी समस्या को ठीक करने के लिए, SimonMarquis को धन्यवाद.
वर्शन 2.7.7
वर्शन 2.7.7
7 फ़रवरी, 2024
androidx.navigation:navigation-*:2.7.7
रिलीज़ हो गया है. 2.7.7 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.8.0-alpha01
से बैकपोर्ट किया गया:BackStackState
लीक को ठीक किया गया. इससे, एक हीNavBackStackEntry
पर कईsaveState()
कॉल करने पर, कई स्टेटस सेव हो जाते थे. हालांकि, सिर्फ़ सेव की गई पहली स्थिति को वापस लाया जा सकता था. (I598b0, b/309559751) - नेविगेशन
2.8.0-alpha01
से बैकपोर्ट किया गया: ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए,NavigationUI
हेल्पर का इस्तेमाल करते समय, नॉन-स्ट्रिंग आर्ग्युमेंट सही से न दिखने की समस्या को ठीक किया गया. (#636, b/316676794)
बाहरी योगदान
- ऐप्लिकेशन बार के टाइटल को पॉप्युलेट करने के लिए,
NavigationUI
हेल्पर का इस्तेमाल करते समय, स्ट्रिंग से जुड़े आर्ग्युमेंट के लिए डिसप्ले से जुड़ी समस्या को ठीक करने के लिए, SimonMarquis को धन्यवाद.
वर्शन 2.7.6
वर्शन 2.7.6
13 दिसंबर, 2023
androidx.navigation:navigation-*:2.7.6
रिलीज़ हो गया है. 2.7.6 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavGraph
equals()
फ़ंक्शन अब सिर्फ़ कॉल किए गए ग्राफ़ के बजाय, दूसरे ग्राफ़ के नोड को सही तरीके से ध्यान में रखता है. इससे यह पक्का होगा कि अलग-अलग आईडी वाले नोड वाले ग्राफ़ को अब बराबर नहीं माना जाएगा (I401cb, b/311414915)
वर्शन 2.7.5
वर्शन 2.7.5
1 नवंबर, 2023
androidx.navigation:navigation-*:2.7.5
रिलीज़ हो गया है. 2.7.5 वर्शन में ये बदलाव शामिल हैं.
परफ़ॉर्मेंस में सुधार
- दो ग्राफ़ की तुलना करने की परफ़ॉर्मेंस को बेहतर बनाया गया है. इसमें समय और ऐलोकेशन, दोनों के मामले में सुधार हुआ है. इसका मतलब है कि
setGraph
जैसे कॉल, जो अंदरूनी तौर पर नए ग्राफ़ की तुलना मौजूदा ग्राफ़ से करते हैं, वे ज़्यादा तेज़ होते हैं. इस वजह से, स्किप किए गए फ़्रेम की संख्या कम होती है. यह बदलाव करने के अच्छे विश्लेषण के लिए, माइकल ज़ेड के लिए धन्यवाद. (I6ad62) NavHost
अब अपडेट की गई स्थिति को पढ़ने के लिए, दूसरे पास का इंतज़ार करने के बजाय, कंपोज़िशन के पहले पास पर स्टार्ट डेस्टिनेशन को रेंडर करेगा. (I439a7, b/304852206)
गड़बड़ियां ठीक की गईं
- एक ही ग्राफ़ के साथ
setGraph
को एक से ज़्यादा बार कॉल करने पर, बैक स्टैक पॉप होने की समस्या को ठीक किया गया है. ऐसा सिर्फ़ तब होता है, जब आपके ग्राफ़ में कोई ऐसा डेस्टिनेशन हो जिसमें दो डेस्टिनेशन को लिंक करने वाली कोई कार्रवाई शामिल हो. (Ieaed7) - जिन डायलॉग पर जल्दी-जल्दी नेविगेट किया गया और जिन्हें खारिज कर दिया गया वे अब
NavController.visibleEntries
की सूची में नहीं दिखेंगे. (I67586, b/287969970) - जब कॉन्फ़िगरेशन में बदलाव करने के बाद कोई एंट्री पॉप होती है, तो
saveState
के गलत होने पर एंट्री काViewModel
सही तरीके से मिट जाएगा. (Idf242, b/298164648) - एक समस्या को ठीक किया गया है. इसमें, कॉन्फ़िगरेशन में बदलाव करने या
setGraph
को कॉल करने से पहले, बैक स्टैक पूरी तरह से खाली होने पर,NavController
एक ही डीप लिंक को एक से ज़्यादा बार मैनेज कर सकता था. ऐसा सिर्फ़ तब होता था, जब इनकमिंग इंटेंट मेंFLAG_ACTIVITY_NEW_TASK
फ़्लैग सेट होता था. (I73c7f)
डिपेंडेंसी से जुड़े अपडेट
- फ़्रैगमेंट की मदद से नेविगेट करने की सुविधा अब फ़्रैगमेंट 1.6.2 पर निर्भर करती है. इससे,
clearBackStack
को कॉल करते समय नेस्ट किए गए फ़्रैगमेंट केViewModel
इंस्टेंस को हटाने से जुड़ी समस्या ठीक हो गई है.
वर्शन 2.7.4
वर्शन 2.7.4
4 अक्टूबर, 2023
androidx.navigation:navigation-*:2.7.4
रिलीज़ हो गया है. 2.7.4 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
popUpTo
के लिए, आर्ग्युमेंट वाले रूट का इस्तेमाल करने की सुविधा जोड़ी गई है. इससे,popBackStack
में मिली सुविधा के हिसाब से, किसी खास एंट्री पर वापस जाने की अनुमति मिलती है. (I731f4, b/299255572)
गड़बड़ियां ठीक की गईं
popUpTo
का इस्तेमाल करके किसी नेविगेशन को बीच में रोकने पर,FragmentNavigator
क्रैश होने की समस्या को ठीक किया गया. (I3c848, b/301887045)- सिस्टम के 'बैक' बटन को दबाने पर,
currentDestination
को दिखाए गए फ़्रैगमेंट से मैच करने के लिए सही तरीके से अपडेट न होने की समस्या को ठीक किया गया. (Id0d6c, b/289877514) DialogFragment
लाइफ़साइकल अब ठीक सेRESUMED
स्थिति में चला जाएगा, जब इसके ऊपर मौजूद डायलॉग को खारिज कर दिया जाएगा. (I88f0d, b/301811387)
वर्शन 2.7.3
वर्शन 2.7.3
20 सितंबर, 2023
androidx.navigation:navigation-*:2.7.3
रिलीज़ हो गया है. 2.7.3 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन में होने वाली उस समस्या को ठीक किया गया है जिसकी वजह से
visibleEntries
सूची में गलत एंट्री हुई थीं. (I5caa9, b/288520638) - एक समस्या को ठीक किया गया है. इसकी वजह से, फ़्लोटिंग विंडो डेस्टिनेशन (जैसे,
Dialogs
,Bottomsheets
वगैरह) को कभी भीRESUMED
लाइफ़साइकल कॉलबैक नहीं मिलता था. (I3b866, b/287505132)
वर्शन 2.7.2
वर्शन 2.7.2
6 सितंबर, 2023
androidx.navigation:navigation-*:2.7.2
रिलीज़ हो गया है. 2.7.2 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन अब लाइफ़साइकल
2.6.2
पर निर्भर करता है. इससेrememberSaveable
और Navigation Compose केNavHost
के बीच इंटरैक्शन ठीक हो जाता है. इसकी वजह से, प्रोसेस के बंद होने और फिर से शुरू होने के बाद, डेस्टिनेशन कीrememberSaveable
स्थिति औरViewModel
के मालिकाना हक वाले किसी भीSavedStateHandle
इंस्टेंस को सही तरीके से वापस लाया जा सकता है. (b/298059596, b/289436035) - नेविगेशन कंपोज में एक साथ कई डायलॉग दिखाने पर होने वाली एक समस्या को ठीक किया गया. इसमें, कुछ हद तक छिपे हुए डायलॉग (जैसे, सबसे ऊपर मौजूद डायलॉग नहीं)
STARTED
स्टेटस के बजाय, लाइफ़साइकल स्टेटस में दिखते थे.CREATED
(aosp/2728520, b/289257213) - नेविगेशन कंपोज में एक साथ कई डायलॉग दिखाने पर होने वाली एक समस्या को ठीक किया गया. इस समस्या की वजह से, सबसे ऊपर मौजूद डायलॉग को खारिज करने पर, सबसे ऊपर मौजूद नया डायलॉग
RESUMED
पर सही तरीके से जाने के बजाय, लाइफ़साइकल कीSTARTED
स्थिति में फंस जाता था. (aosp/2629401, b/286371387) - नेविगेशन Safe Args अब अपने टास्क को तुरंत इंस्टैंशिएट नहीं करता, अगर उसे असल में एक्ज़ीक्यूट नहीं किया जा रहा है. (I0e385, b/260322841)
डिपेंडेंसी अपडेट
- नेविगेशन कंपोज़, अब Compose 1.5.1 पर निर्भर करता है.
वर्शन 2.7.1
वर्शन 2.7.1
23 अगस्त, 2023
androidx.navigation:navigation-*:2.7.1
रिलीज़ हो गया है. 2.7.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- Compose की मदद से नेविगेट करने की सुविधा में एक समस्या को ठीक किया गया है. इसमें,
Scaffold
का इस्तेमाल करने पर,Lifecycle.State.DESTROYED
ViewModel
को ऐक्सेस करने के दौरान गड़बड़ी का मैसेज मिल सकता था. (I1dc11, b/268422136)
वर्शन 2.7.0
वर्शन 2.7.0
9 अगस्त, 2023
androidx.navigation:navigation-*:2.7.0
रिलीज़ हो गया है. वर्शन 2.7.0 में ये कमियां शामिल हैं.
2.6.0 के बाद किए गए ज़रूरी बदलाव
Accompanist से मिले ऐनिमेशन
AnimatedContent
अब पहले से हिल रहा है, इसलिए हम कोड को Accompanist नेविगेशन ऐनिमेशन से वापस नेविगेशन Compose में ले जा सके.
इसका मतलब है कि AnimatedNavHost
में मौजूद कस्टम ट्रांज़िशन सेट करने की सभी सुविधाएं, NavHost
में भी सीधे तौर पर काम करती हैं.
Accompanist के नेविगेशन ऐनिमेशन में कोई और बदलाव नहीं किया जाएगा. हम जल्द ही इसे आधिकारिक तौर पर बंद कर देंगे. साथ ही, नेविगेशन कंपोज में वापस माइग्रेट करने का तरीका भी बताएंगे. हालांकि, यह माइग्रेशन गाइड के उलट होगा. अगर आपने पहले से ही Accompanist के नए alpha वर्शन (0.31.2-alpha
) का इस्तेमाल शुरू कर दिया है, तो एपीआई में कोई और बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज़ में NavHost अब, गतिविधि के बंद होने और फिर से चालू होने के बाद भी, सिस्टम से वापस आने वाले कॉल को सही तरीके से इंटरसेप्ट करता है. (Icb6de, b/279118447)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब
1.1.0
से1.5.0
लिखें पर निर्भर करता है.
वर्शन 2.7.0-rc01
26 जुलाई, 2023
androidx.navigation:navigation-*:2.7.0-rc01
रिलीज़ हो गया है. वर्शन 2.7.0-rc01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें,
NavHost
के हिस्से के तौर पर बनाए गएEnterTransition
औरExitTransition
लैम्ब्डा, कॉम्पोज़िशन सेNavHost
हटाने के बाद भी मेमोरी में बने रह सकते थे. (I893d0)
आम समस्याएं
- Navigation 2.6.x में एक समस्या है. इसमें, popUpTo का इस्तेमाल करके नेविगेट करने पर,
IllegalArgumentException
हो सकता है. हो सकता है कि अपने ग्राफ़ को फिर से व्यवस्थित करके, इस अपवाद से बचा जा सके. इसके लिए, यहां दिए गए सुझावों का पालन करें. (b/287133013)
वर्शन 2.7.0-beta02
28 जून, 2023
androidx.navigation:navigation-*:2.7.0-beta02
रिलीज़ हो गया है. 2.7.0-beta02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज़िशन में अब कस्टम ट्रांज़िशन के लिए सही z-क्रम मौजूद है, जो
popUpTo
विकल्प के साथ नेविगेट करने का इस्तेमाल करता है.(/Ib1c3a, b/285153947)
वर्शन 2.7.0-beta01
7 जून, 2023
androidx.navigation:navigation-*:2.7.0-beta01
रिलीज़ हो गया है. वर्शन 2.7.0-beta01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज में मौजूद
NavHost
, अब सिस्टम के बैक कॉल को सही तरीके से इंटरसेप्ट करता है. ऐसा तब भी होता है, जबActivity
कोSTOPPED
औरRESUMED
में बदल दिया गया हो. (Icb6de, b/279118447)
वर्शन 2.7.0-alpha01
24 मई, 2023
androidx.navigation:navigation-*:2.7.0-alpha01
रिलीज़ हो गया है. 2.7.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
Acompanist के ऐनिमेशन
AnimatedContent
अब पहले से हिल रहा है, इसलिए हम कोड को Accompanist नेविगेशन ऐनिमेशन से वापस नेविगेशन Compose में ले जा सके.
इसका मतलब है कि AnimatedNavHost
में मौजूद, पसंद के मुताबिक ट्रांज़िशन सेट करने की पूरी सहायता सीधे तौर पर NavHost
में काम करती है.
Accompanist नेविगेशन ऐनिमेशन में कोई और बदलाव नहीं किया जाएगा और हम जल्द ही औपचारिक तौर पर इसका इस्तेमाल बंद करने वाले हैं. साथ ही, हम नेविगेशन कंपोज़ पर वापस माइग्रेट करने के दिशा-निर्देश के साथ-साथ, माइग्रेशन गाइड से बिलकुल उलट होंगे. अगर आप पहले से ही नए Accompanist ऐल्फ़ा (0.31.2-alpha
) का इस्तेमाल कर रहे हैं, तो एपीआई में कोई अन्य बदलाव करने की ज़रूरत नहीं होगी. (b/197140101)
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.6.0-rc02
: फ़्रैगमेंट में नेविगेशन से जुड़ी एक समस्या को ठीक किया गया है. इसमेंpopUpTo
का इस्तेमाल करके नेविगेट करने और फ़्रैगमेंट का व्यू फिर से बनाए बिना, उसे बैक स्टैक से पॉप करने पर, सिस्टम बैक काम करना बंद कर देता था. (Ieb8d4, b/281726455)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब Compose
1.5.0-beta01
पर निर्भर करता है.
वर्शन 2.6.0
वर्शन 2.6.0
7 जून, 2023
androidx.navigation:navigation-*:2.6.0
रिलीज़ हो गया है. 2.6.0 वर्शन में ये बदलाव शामिल हैं.
2.5.0 के बाद, नेविगेशन में हुए अहम बदलाव
NavBackStackEntry
काarguments
औरOnDestinationChangedListener
को पास किया गयाarguments
, अब सिर्फ़ उन बदलाव न किए जा सकने वाले आर्ग्युमेंट की कॉपी है जो डेस्टिनेशन पर नेविगेट करने के दौरान बनाए गए थे. इसका मतलब है कि उन बंडल में किए गए किसी भी बदलाव का असर,arguments
या अन्यOnDestinationChangedListener
इंस्टेंस के बाद के ऐक्सेस पर नहीं पड़ेगा.NavDeepLink
अब कैटगरी के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे, दोहराए गए क्वेरी पैरामीटर इस्तेमाल करने की अनुमति मिलती है, जिन्हें आर्ग्युमेंट के अरे टाइप में मैप किया जाएगा.NavType
में अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे दो पार्स की गई वैल्यू को जोड़ने के लिए बदला जा सकता है.NavType
की कस्टम सबक्लास, अब किसी वैल्यू को स्ट्रिंग में सीरियलाइज़ करने के लिएserializeAsValue
को बदल सकती हैं. इससे,NavType
क्लास में सीरियलाइज़ेशन और डीसीरियलाइज़ेशन, दोनों को पूरी तरह से शामिल किया जा सकता है. डीसीरियलाइज़ेशन,parseValue
के ज़रिए किया जाता है.StringType
, दिए गएString
परUri.encode
को कॉल करने के लिए, अब इस तरीके को बदल देता है.
नेविगेशन कंपोज़ में 2.5.0 के बाद से हुए अहम बदलाव
NavHost
की मदद से किसी कंपोज़ेबल की झलक देखते समय, अब उसमें डिफ़ॉल्ट रूप से NavGraph कीstartDestination
दिखेगी.NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
, औरNavController.clearBackStack(route)
पर अब कुछ हद तक या पूरी तरह से भरे गए आर्ग्युमेंट वाले रूट इस्तेमाल किए जा सकते हैं. ध्यान दें कि आर्ग्युमेंट और एंट्री के आर्ग्युमेंट का एग्ज़ैक्ट मैच होना चाहिए.navDeepLink
Kotlin DSL का इस्तेमाल करके, खालीNavDeepLink
बनाने की कोशिश करने पर, अब आपको लिंट चेतावनी मिलेगी. इससे पता चलता है कि डीप लिंक के मान्य होने के लिए, उसमें यूआरआई, ऐक्शन, और/या mimetype होना ज़रूरी है.
2.5.0 के बाद, फ़्रैगमेंट के साथ नेविगेशन में हुए अहम बदलाव
NavHostFragment
अब सिस्टम के बैक बटन को खुद इंटरसेप्ट नहीं करता. इससे,FragmentManager
को सिस्टम बैक को मैनेज करने की अनुमति मिलती है. इससे फ़्रैगमेंट1.7.0-alpha01
और उसके बाद के वर्शन, Android U डिवाइसों पर इन-ऐप्लिकेशन, अनुमानित बैक ऐनिमेशन दिखा सकते हैं.- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय,
FragmentManager
के बैक स्टैक में फ़्रैगमेंट जोड़ने वालाFragmentTransaction
मैन्युअल तरीके से करने पर, अबIllegalArgumentException
दिखेगा. आपको हमेशाnavigate()
एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए. - नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में,
app:data
औरapp:dataPattern
एट्रिब्यूट में प्लेसहोल्डर के तौर पर एग्ज़ैक्ट स्ट्रिंग${applicationId}
का इस्तेमाल करने पर, प्लेसहोल्डर अपने-आप कॉन्टेक्स्ट केpackageName
से भर जाएगा. FragmentNavigator
अबNavBackStackEntries
को नेविगेट और पॉप अप करते समय ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntry
Lifecycle
अब अपने आखिरीLifecycle.State
पर जाने से पहले, फ़्रैगमेंट में आने और उससे बाहर निकलने के खास इफ़ेक्ट के पूरा होने का इंतज़ार करेगा.DialogFragmentNavigator
अबNavBackStackEntries
पर नेविगेट करने और पॉप-अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntry
Lifecycle
अबDESTROYED
पर जाने से पहले,DialogFragment
Lifecycle
केDESTROYED
पर जाने का इंतज़ार करेगा.NavHostFragment
कोFragmentManager
से अटैच करने के बाद,NavHostFragment
कोonCreate()
के बाद ही वापस पाया जा सकता था. हालांकि, अबNavHostFragment
कोFragmentManager
से अटैच करने के तुरंत बाद,NavController
को वापस पाया जा सकता है.- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब Play की ज़्यादा जानकारी वाली फ़ीचर डिलीवरी लाइब्रेरी पर निर्भर करती है.
- नेविगेशन Safe Args अब Android Gradle प्लग इन के वर्शन 7.3.0 पर निर्भर करता है. इसका मतलब है कि यह अब सिर्फ़ 7.3.0 और उसके बाद के वर्शन के साथ काम करता है.
2.5.0 के बाद, NavigationUI में हुए अहम बदलाव
- नेविगेशन ग्राफ़ का आईडी
AppBarConfiguration
को पास करते समय (जैसे,Menu
के ज़रिए),NavigationUI
अब ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क करने के बजाय, सिर्फ़ उस नेविगेशन ग्राफ़ के स्टार्ट डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर मानता है. किसी डेस्टिनेशन का आईडी पास करने का तरीका पहले जैसा ही रहेगा. यह सुविधा,AppBarConfiguration
पर मौजूद नएisTopLevelDestination
फ़ंक्शन की मदद से, आपके कोड में भी उपलब्ध है. - टॉप ऐप्लिकेशन बार के साथ काम करने के लिए,
NavigationUI
में मौजूदsetupWithNavController
इंटिग्रेशन अब आपकेandroid:label
में मिलेReferenceType
आर्ग्युमेंट के लिएR.string
वैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स कर देंगे. ऐसा, अपने-आप जनरेट हुए रिसॉर्स इंटिजर को आउटपुट करने के बजाय किया जाएगा. NavigationUI
अब चुने गएMenuItem
से नेविगेट नहीं होने पर लॉग उपलब्ध कराता है.
वर्शन 2.6.0-rc02
24 मई, 2023
androidx.navigation:navigation-*:2.6.0-rc02
रिलीज़ हो गया है. 2.6.0-rc02 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट में नेविगेशन से जुड़ी एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
popUpTo
का इस्तेमाल करके नेविगेट करने और फ़्रैगमेंट का व्यू फिर से बनाए बिना, बैक स्टैक से फ़्रैगमेंट को पॉप करने पर, सिस्टम बैक काम करना बंद कर देता था. (Ieb8d4, b/281726455)
वर्शन 2.6.0-rc01
10 मई, 2023
androidx.navigation:navigation-*:2.6.0-rc01
रिलीज़ हो गया है. 2.6.0-rc01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन में एक समस्या को ठीक किया गया. इसमें,
onResume()
लाइफ़साइकल कॉलबैक मेंpopUpTo
के साथ नेविगेट करके फ़्रैगमेंट को हटाने पर,IllegalStateException
होता था. (I21884, b/279644470)
वर्शन 2.6.0-beta01
19 अप्रैल, 2023
androidx.navigation:navigation-*:2.6.0-beta01
रिलीज़ हो गया है. 2.6.0-beta01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
NavBackStackEntry
अब पसंद के मुताबिकtoString
लागू करने की सुविधा देता है. (Iff00b)
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय,
FragmentManager
के बैक स्टैक में फ़्रैगमेंट जोड़ने वालेFragmentTransaction
को मैन्युअल तरीके से करने की कोशिश करने पर, अबIllegalArgumentException
दिखेगा. आपको हमेशाnavigate()
एपीआई के ज़रिए फ़्रैगमेंट जोड़ने चाहिए. (I6d38e) - जब एक ही फ़्रेम में कोई
navigate
एंट्री जोड़ता है और कोईpopBackStack
उसे हटाता है, तो बैक स्टैक में सबसे ऊपर मौजूद एंट्री अब लगातारRESUMED
Lifecycle.State
पर वापस आ जाएगी. (Id8067, b/276495952)
वर्शन 2.6.0-alpha09
5 अप्रैल, 2023
androidx.navigation:navigation-*:2.6.0-alpha09
रिलीज़ हो गया है. 2.6.0-alpha09 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- अमान्य रूट की जांच करने की सुविधा को ठीक किया गया है. अब अगर किसी
NavDestination
में नॉल-नेगेटिवNavArgument
शामिल है, तो इस डेस्टिनेशन के रूट में, नॉल-नेगेटिवNavArgument
के नाम वाले आर्ग्युमेंट के लिए प्लेसहोल्डर होने चाहिए. (Ic62bf, b/274697949) Action/MimeType
के आधार पर डीपलिंक नेविगेशन अब काम नहीं करेगा. ऐसा तब होगा, जब नेविगेशन ऑपरेशन में कोई ऐसाNavArgument
मौजूद न हो जिसे नॉल-वैल्यू नहीं दी जा सकती. यहNavArgument
,Action/MimeType
से मैच करने वालेNavDestination
के लिए ज़रूरी होता है. (Ibfa17, b/271777424)- जब
NavController
, पिछले ग्राफ़ के रास्ते और डेस्टिनेशन वाले ग्राफ़ को सेट करता है, तो अब यह अपने मौजूदा ग्राफ़ नोड और बैक स्टैक डेस्टिनेशन को नए इंस्टेंस से सही तरीके से बदल देता है. इससे, नेविगेशन कंपोज़ में स्टेटस सेव किए बिनाonLaunchSingleTop
का इस्तेमाल करने पर होने वाली क्रैश की समस्या ठीक हो जाती है. इससे, रूट ग्राफ़ बिल्ड और गलत बैक स्टैक से जुड़े डेस्टिनेशन पर नेविगेट करने से जुड़ी गड़बड़ी भी ठीक हो जाती है. (I5bc58, b/275258161, b/275407804)
वर्शन 2.6.0-alpha08
22 मार्च, 2023
androidx.navigation:navigation-*:2.6.0-alpha08
रिलीज़ हो गया है. 2.6.0-alpha08 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब
NavHostFragment
आपकोonCreate()
के बाद के बजाय,NavHostFragment
केFragmentManager
से अटैच होते हीNavController
को वापस लाने की अनुमति देता है. (Ic6382, b/220186282)
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए ऐसे ग्राफ़ को पॉप-अप करते समय
NullPointerException
से जुड़ी समस्या को ठीक किया गया है जिसमें नॉन-शून्य आर्ग्युमेंट शामिल है. (6b3581, b/249988437) popUpTo
का इस्तेमाल करके नेविगेट करने के बाद, सिस्टम के 'वापस जाएं' बटन का इस्तेमाल करने पर,NavController
की स्थिति सही एंट्री पर पॉप अप हो जाएगी. (I3a8ec, b/270447657)FragmentNavigator
अब सिस्टम बैक याpopBackStack()
के ज़रिए बैक स्टैक को पॉप करने पर, एंट्री को सही तरीके से पॉप करेगा. साथ ही, इससे कोई फ़र्क़ नहीं पड़ेगा कि ट्रांज़ैक्शन में फ़्रैगमेंट के लिए इफ़ेक्ट का इस्तेमाल किया गया है या नहीं. (I81bdf)- नेविगेशन का इस्तेमाल किए बिना,
FragmentNavigator
केFragmentManager
में फ़्रैगमेंट जोड़ने पर, अब क्रैश नहीं होगा. (b17204, b/274167493)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब लाइफ़साइकल
2.6.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)- एक समस्या को ठीक किया गया है. इस समस्या की वजह से,
NavController
सेclearBackStack()
को कॉल करने पर, मिटाए गए बैक स्टैक से जुड़े फ़्रैगमेंट मैनेजर में सेव की गई स्थिति नहीं मिटती थी. (Ic1cce, b/271190202) - 2.6.0-alpha06 में रिग्रेशन ठीक किया गया, जिसकी वजह से टैब के बीच सिस्टम वापस इस्तेमाल करते समय
BottomNavigationView
में गलतMenuItem
को हाइलाइट किया गया था. (I634f6, b/270447657) - 2.6.0-alpha06 में मौजूद गड़बड़ी को ठीक किया गया है. इसकी वजह से,
Animation
का इस्तेमाल करने परNavBackStackEntry
को 'फिर से शुरू किया गया' स्थिति में नहीं भेजा जा रहा था. (Ib3589, b/269646882)
वर्शन 2.6.0-alpha06
22 फ़रवरी, 2023
androidx.navigation:navigation-*:2.6.0-alpha06
रिलीज़ हो गया है. 2.6.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
NavHost
के साथ किसी कॉम्पोज़ेबल की झलक देखने पर, अब यह डिफ़ॉल्ट रूप से NavGraph काstartDestination
दिखाएगा. (I2b89f)
एपीआई में हुए बदलाव
- सभी
NavController
navigate
ओवरलोड को अब@MainThread
के साथ एनोटेट किया गया है, ताकि यह पक्का किया जा सके कि उन्हें मुख्य थ्रेड पर कॉल किया जाए. (I2c0b0, b/263427111)
गड़बड़ियां ठीक की गईं
- डाइनैमिक फ़्रैगमेंट नेविगेशन का इस्तेमाल करते समय, क्रैश होने की समस्या को ठीक किया गया. (I3ee29, b/268360479)
- सिस्टम के 'वापस जाएं' बटन का इस्तेमाल करके किसी दूसरे फ़्रैगमेंट पर जाने पर, बॉटम बार में चुने गए आइटम को सही से अपडेट न होने की गड़बड़ी को ठीक किया गया (If559f, b/269044426)
आम समस्याएं
- फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करने पर,
Animation
एपीआई का इस्तेमाल करते समयNavBackStackEntry
की लाइफ़साइकलRESUMED
तक नहीं पहुंच पाती. (b/269646882) - फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करने और
BottomNavigation
का इस्तेमाल करके नेविगेट करने पर, अगर कई एंट्री वाले बैक स्टैक को वापस लाने की कोशिश की जाती है, तोBottomMenuItem
सही तरीके से अपडेट नहीं होता. (b/270447657) - फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करने पर, स्थिति को वापस लाने के बाद,
NavBackStackEntry
Lifecycle
कोDESTROYED
नहीं मिलता, जब उसका फ़्रैगमेंटDESTROYED
होता है . (b/270610768)
वर्शन 2.6.0-alpha05
8 फ़रवरी, 2023
androidx.navigation:navigation-*:2.6.0-alpha05
रिलीज़ हो गया है. 2.6.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
अब सभी रूट में, आर्ग्युमेंट को कुछ हद तक या पूरी तरह से भरा जा सकता है. ध्यान दें कि आर्ग्युमेंट, एंट्री के आर्ग्युमेंट से पूरी तरह मेल खाने चाहिए. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
अबNavBackStackEntries
पर नेविगेट करने और पॉप-अप करते समय, ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntry
Lifecycle
अब अपने आखिरीLifecycle.State
पर जाने से पहले, फ़्रैगमेंट में आने और उससे बाहर निकलने के खास इफ़ेक्ट के पूरा होने का इंतज़ार करेगा. (I3cb19, b/238686802)DialogFragmentNavigator
अबNavBackStackEntries
को नेविगेट और पॉप अप करते समय ट्रांज़िशन एपीआई का इस्तेमाल करता है. इसका मतलब है किNavBackStackEntry
Lifecycle
अबDESTROYED
पर जाने से पहले,DialogFragment
Lifecycle
केDESTROYED
पर जाने का इंतज़ार करेगा. (I53ee5, b/261213893)
एपीआई में हुए बदलाव
NavigatorState
अबprepareForTransition
एपीआई की सुविधा देता है, ताकिNavigator
sNavBackStackEntries
कोLifecycle.State
से इंटरमीडिएट में ले जाया जा सके. (I42c21, b/238686802)- अब
backstack
प्रॉपर्टी की मदद से,NavGraphNavigator
याComposeNavigator
से जुड़े बैक स्टैक को ऐक्सेस किया जा सकता है.ComposeNavigator
अबonTransitionComplete()
कॉलबैक को भी दिखाता है, ताकि किसीNavBackStackEntry
को 'पूरा हुआ' के तौर पर मार्क किया जा सके जिसने नेविगेट याpopBackStack
ऑपरेशन को पूरा किया है. (I02062, I718db, b/257519195)
गड़बड़ियां ठीक की गईं
push/popWithTransition
एपीआई का इस्तेमाल करने पर, नेविगेटर की स्थिति अब काम नहीं करेगी. साथ ही, एंट्री को पहले से ही मैनेज किया जा रहा होगा. (Iadbfa, b/261213893)- नेस्ट किए गए
NavGraph
के साथlaunchSingleTop
का इस्तेमाल करने पर, ओरिजनल डेस्टिनेशन से लेकर उसकेstartDestination
तक के सभी डेस्टिनेशन, बैकस्टैक में सबसे ऊपर ही सही तरीके से जोड़े जाएंगे. (Id4bea, b/253256629) launchSingleTop
फ़्लैग को 'सही' पर सेट करके, उसी डेस्टिनेशन पर नेविगेट करने पर, नेविगेशन अबDialogFragment
इंस्टेंस को सही तरीके से बदल देगा. (I45b5a, b/149572817)- अब 19 वर्णों वाले आर्ग्युमेंट का इस्तेमाल करने पर, नेविगेशन के SafeArgs से कंपाइलेशन से जुड़ी गड़बड़ी नहीं होगी. (Id60bc, b/257110095)
वर्शन 2.6.0-alpha04
9 नवंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha04
रिलीज़ हो गया है. 2.6.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
NavType
की कस्टम सबक्लास, अब किसी वैल्यू को स्ट्रिंग में सीरियलाइज़ करने के लिएserializeAsValue
को बदल सकती हैं. इससे,NavType
क्लास में सीरियलाइज़ेशन और डीसीरियलाइज़ेशन (parseValue
के ज़रिए) दोनों को पूरी तरह से शामिल किया जा सकता है.StringType
, दिए गएString
परUri.encode
को कॉल करने के लिए, अब इस तरीके को बदल देता है. (Ie5213, b/247637434)- चुने गए
MenuItem
से नेविगेट न कर पाने पर,NavigationUI
अब लॉग उपलब्ध कराता है. (I2af5a, b/247730357)
गड़बड़ियां ठीक की गईं
- नेविगेशन डीप लिंक अब ग्राफ़ शुरू होने के बजाय, धीरे-धीरे पार्स किए जाते हैं. इससे ऐप्लिकेशन के शुरू होने पर उसकी परफ़ॉर्मेंस बेहतर हो सकती है. (Iab0ab)
- डिफ़ॉल्ट रूप से शून्य वाले आर्ग्युमेंट वाले डेस्टिनेशन पर डीप लिंक करने के बाद, ऊपर जाने पर क्रैश होने की समस्या को ठीक किया गया. (I51c24, b/243183636)
डिपेंडेंसी अपडेट
- डाइनैमिक फ़ीचर मॉड्यूल के लिए नेविगेशन की सुविधा अब Play की ज़्यादा जानकारी वाली फ़ीचर डिलीवरी लाइब्रेरी पर निर्भर करती है. (Ib4ddc)
- नेविगेशन के लिए Safe Args की सुविधा अब Android Gradle प्लग इन के 7.3.0 वर्शन पर निर्भर करती है. इसका मतलब है कि यह अब सिर्फ़ 7.3.0 और उसके बाद के वर्शन के साथ काम करता है. (I47e49)
वर्शन 2.6.0-alpha03
24 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha03
रिलीज़ हो गया है. 2.6.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.3
से: अगरCrossfade
के लिए कोई डेस्टिनेशन उपलब्ध नहीं है, तोNavHost
सेNoSuchElementException
नहीं दिखेगा. अब यह कॉम्पोज़िशन को स्किप कर देगा. (Ieb46e, b/253299416) - नेविगेशन
2.5.3
से: 'लिखें' विंडो की सेव की गई स्थिति (उदाहरण के लिए,rememberSaveable
का इस्तेमाल) को बैक स्टैक से हटाने पर, उसे मिटाने और हटाने से जुड़ी समस्या को ठीक किया गया है. (I64949)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब फ़्रैगमेंट
1.5.4
पर निर्भर करता है. (Icd424)
वर्शन 2.6.0-alpha02
5 अक्टूबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha02
रिलीज़ हो गया है. 2.6.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- किसी नेविगेशन ग्राफ़ का आईडी
AppBarConfiguration
को पास करते समय (जैसे,Menu
के ज़रिए),NavigationUI
अब उस नेविगेशन ग्राफ़ के स्टार्ट डेस्टिनेशन को ही टॉप लेवल डेस्टिनेशन के तौर पर मानता है. इसके बजाय, ग्राफ़ में मौजूद हर डेस्टिनेशन को टॉप लेवल डेस्टिनेशन के तौर पर गलत तरीके से मार्क नहीं करता. किसी डेस्टिनेशन का आईडी भेजने की प्रोसेस में कोई बदलाव नहीं होता. यह सुविधा,AppBarConfiguration
पर मौजूद नएisTopLevelDestination
फ़ंक्शन की मदद से, आपके कोड में भी उपलब्ध है. (Ie936e, b/238496771)
गड़बड़ियां ठीक की गईं
navigation:navigation-fragment
कॉम्पोनेंट अब फ़्रैगमेंट वर्शन1.5.2
पर निर्भर करता है. (I00ba4)- डायलॉग जैसे
FloatingWindow
डेस्टिनेशन पर नेविगेट करने पर, चुना गया मेन्यू आइटम अपडेट नहीं किया जाएगा. (I4cde8, b/240308330)
वर्शन 2.6.0-alpha01
7 सितंबर, 2022
androidx.navigation:navigation-*:2.6.0-alpha01
रिलीज़ हो गया है. 2.6.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- टॉप ऐप्लिकेशन बार के साथ काम करने के लिए,
NavigationUI
में मौजूदsetupWithNavController
इंटिग्रेशन अब आपकेandroid:label
में मिलेReferenceType
आर्ग्युमेंट के लिएR.string
वैल्यू को उनकी स्ट्रिंग वैल्यू में पार्स कर देंगे. ऐसा, अपने-आप जनरेट हुए रिसॉर्स इंटिजर को आउटपुट करने के बजाय किया जाएगा. (I5f803, b/167959935) NavDeepLink
अब कैटगरी के लिए डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे, दोहराए गए क्वेरी पैरामीटर इस्तेमाल करने की अनुमति मिलती है, जिन्हें आर्ग्युमेंट के अरे टाइप में मैप किया जाएगा.NavType
में अब एक डिफ़ॉल्ट तरीका भी शामिल है. इसे दो पार्स की गई वैल्यू को जोड़ने के लिए बदला जा सकता है. (Id68c3, b/209977108)- नेविगेशन एक्सएमएल फ़ाइल के ऐक्टिविटी एलिमेंट में,
app:data
औरapp:dataPattern
एट्रिब्यूट में प्लेसहोल्डर के तौर पर एग्ज़ैक्ट स्ट्रिंग${applicationId}
का इस्तेमाल करने पर, प्लेसहोल्डर अपने-आप कॉन्टेक्स्ट केpackageName
से भर जाएगा. (Iaabde, b/234223561) navDeepLink
Kotlin DSL का इस्तेमाल करके, खालीNavDeepLink
बनाने की कोशिश करने पर, अब आपको लिंट चेतावनी मिलेगी. इससे पता चलता है कि डीप लिंक के मान्य होने के लिए, उसमें यूआरआई, ऐक्शन, और/या 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
दे सकता है.
Navigation SafeArgs
Navigation Safe Args
नेAndroid Gradle Plugin
डिपेंडेंसी को7.0.4
पर भरोसा करने के लिए अपग्रेड किया है. साथ ही,7.0
से पहले के AGP वर्शन के साथ काम करने की सुविधा को हटा दिया है.- appId के बजाय, नेमस्पेस create.gradle एट्रिब्यूट का इस्तेमाल करने के लिए, इसे जोड़ा गया.
अन्य बदलाव
visibleEntries
एपीआई अब एक्सपेरिमेंटल नहीं है. यह उन सभी एंट्री को वापस लाने की सुविधा देता है जिनका डेस्टिनेशन फ़िलहालNavController
के हिसाब से दिख रहा है.
वर्शन 2.5.0-rc02
15 जून, 2022
androidx.navigation:navigation-*:2.5.0-rc02
रिलीज़ हो गया है. वर्शन 2.5.0-rc02 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज
NavHost
का इस्तेमाल करते समय, सबसे नीचे मौजूद डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से क्रैश होने की समस्या को ठीक किया गया. (I3979a, b/234054916) applicationIdSuffix
और नेमस्पेस का इस्तेमाल करते समय,Navigation SafeArgs
अब क्रैश नहीं होगा. ऐसा तब होगा, जबapplicationId
मौजूद न हो याapplicationId
और नेमस्पेस अलग-अलग हों. (I754b1, b/233119646)NavArgument
में अब आर्ग्युमेंट की इंटरनल वैल्यू दिखाने के लिए, कस्टमtoString()
फ़ंक्शन है. (I900a8)
वर्शन 2.5.0-rc01
11 मई, 2022
androidx.navigation:navigation-*:2.5.0-rc01
रिलीज़ हो गया है. वर्शन 2.5.0-rc01 में ये कमिट हैं.
नई सुविधाएं
navigation.xml
फ़ाइल में<activity>
एलिमेंट के अंदर<deeplink>
एलिमेंट डालने से रोकने के लिए, एक नया लिंट नियम जोड़ा गया है.(Ic15a5, b/178403185)
गड़बड़ियां ठीक की गईं
NavHost
औरDialogHost
में मौजूद कॉम्पोज़ेबल स्कोप, अब सही क्रम में डिस्पोज किए जाते हैं. इसका मतलब है कि आंतरिक कॉम्पोज़ेबल, बाहरी कॉम्पोज़ेबल से पहले डिस्पोज किए जाते हैं. (I157e6)- नेविगेशन के लिए SafeArgs, अब
ArgumentsGenerationTask
मेंPathSensitivity.RELATIVE
का इस्तेमाल करता है, ताकि कैश मेमोरी को दूसरी जगह पर ले जाया जा सके. इसका मतलब है कि अब कैश एंट्री को सीआई बिल्ड से लोकल बिल्ड में फिर से इस्तेमाल किया जा सकता है. (I5f67c, b/173420454) UnrememberedGetBackStackEntryDetector
लिंट नियम को अपडेट किया गया है, ताकि यह पक्का किया जा सके किgetBackStackEntry()
कॉल के आस-पास मौजूदremember
कॉल,NavBackStackEntry
ऑब्जेक्ट में भी पास हो, जो कि एक कुंजी के तौर पर काम करता है.(Ib7081, b/227382831)
वर्शन 2.5.0-beta01
20 अप्रैल, 2022
androidx.navigation:navigation-*:2.5.0-beta01
रिलीज़ हो गया है. वर्शन 2.5.0-beta01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
DialogNavigator
,dismiss()
कॉल करते समय अबpopWithTransition
का इस्तेमाल करता है. इससे,dialog
डेस्टिनेशन मेंViewModel
का इस्तेमाल करते समय, रेस कंडीशन ठीक हो जाती है. इससे, सिस्टम के 'वापस जाएं' बटन का इस्तेमाल करके या डायलॉग बॉक्स से बाहर निकलने के लिए, डायलॉग बॉक्स के बाहर टैप करके, डायलॉग बॉक्स को खारिज करने परIllegalStateException
दिखने की समस्या ठीक हो जाती है. (Id7376, b/226552301)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन अब लाइफ़साइकल
2.5.0-beta01
पर निर्भर करता है. साथ ही, एक से ज़्यादा बैक स्टैक का इस्तेमाल करते समय, नॉन-प्राइमरी बॉटम नेविगेशन टैब में, एकNavHost
को दूसरेNavHost
में नेस्ट करते समयIllegalStateException
को ठीक करता है.
वर्शन 2.5.0-alpha04
6 अप्रैल, 2022
androidx.navigation:navigation-*:2.5.0-alpha04
रिलीज़ हो गया है. 2.5.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
visibleEntries
अब एक्सपेरिमेंट के तौर पर उपलब्ध नहीं है. (I4829f, b/225394514)
गड़बड़ियां ठीक की गईं
- कौन-कौनसी एंट्री तैयार करनी हैं, यह तय करने के लिए NavHost,
NavController
केvisibleEntries
पर निर्भर करता है. इसका मतलब है कि नेस्ट किए गए NavHost का इस्तेमाल करते समय, अब अंदरूनीNavHost
को सही तरीके से ऐनिमेट किया जाना चाहिए. (I4ba2b, b/225394514) NavController
की ओर से दिया गयाvisibleEntries
StateFlow
, अब लाइफ़साइकल की मौजूदा स्थिति के बजाय, एंट्री की लाइफ़साइकल की ज़्यादा से ज़्यादा स्थिति पर आधारित है. इसका मतलब यह है कि भले हीnavController
का होस्ट लाइफ़साइकल STARTED से नीचे जाता है, लेकिन दिखने वाली पूरी सूची में कोई बदलाव नहीं होगा. (I9e2a8, b/225394514)SavedStateViewFactory
अबCreationExtras
का इस्तेमाल कर सकता है, भले ही उसेSavedStateRegistryOwner
से शुरू किया गया हो. अगर अतिरिक्त आर्ग्युमेंट दिए जाते हैं, तो शुरू किए गए आर्ग्युमेंट को अनदेखा कर दिया जाता है. (I6c43b, b/224844583)NavDeepLink
अब बिना किसी वैल्यू वाले एक क्वेरी पैरामीटर के साथ यूआरआई को पार्स कर सकता है. (I0efe8, b/148905489)- खाली स्ट्रिंग को अब डीप लिंक में मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
- नेमस्पेस का इस्तेमाल करने पर,
Navigation Safe Args
अब क्रैश नहीं होगा और कोईAndroidManifest.xml
मौजूद नहीं होगा. (I17ccf, b/227229815)
वर्शन 2.5.0-alpha03
23 फ़रवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha03
रिलीज़ हो गया है. वर्शन 2.5.0-alpha03 में ये कमियां हैं.
एपीआई में बदलाव
- अब
ViewModel
बनाने के लिए,CreationExtras
मेंby navGraphViewModels
को पास किया जा सकता है. (I29217, b/217618359)
गड़बड़ियां ठीक की गईं
NavDeepLinks
अब रूट/डीप लिंक यूआरआई में एम्बेड किए गए, कोड में बदले गए नए लाइन वर्णों के साथ भी काम करता है. (I513d1, b/217815060)- ViewModels बनाने के लिए,
NavBackStackEntries
के साथ इस्तेमाल करने परCreationExtras
सही तरीके से काम करेगा. (I69161, b/217617710) - नेविगेशन के लिए Safe Args, अब AndroidManifest में पैकेज के बजाय,
build.gradle
में तय किए गए नेमस्पेस का इस्तेमाल कर सकते हैं. (I659ef, b/217414933)
वर्शन 2.5.0-alpha02
9 फ़रवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha02
रिलीज़ हो गया है. वर्शन 2.5.0-alpha02 में ये कमियां हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.4.1
से: नेस्ट किए गए ग्राफ़ के साथ व्यूबाइंडिंग का इस्तेमाल करने पर,NavHostFragment
अबOnBackPressedDispatcher
को सही तरीके से सेट करेगा. (Ifbb51, b/214577959) - नेविगेशन
2.4.1
से: नेस्ट किए गए कईNavGraph
के ज़रिए डीप लिंक करने पर, बैक स्टैक में अब बीच में आने वाले स्टार्ट डेस्टिनेशन सही तरीके से शामिल होंगे. (I504c0, b/214383060)
वर्शन 2.5.0-alpha01
26 जनवरी, 2022
androidx.navigation:navigation-*:2.5.0-alpha01
रिलीज़ हो गया है. वर्शन 2.5.0-alpha01 में ये कमियां हैं.
नई सुविधाएं
NavBackStackEntry
अब ViewModel CreationExtras के साथ इंटिग्रेट हो गया है. इसे लाइफ़साइकल2.5.0-alpha01
के हिस्से के तौर पर लॉन्च किया गया था. (Ib9fe2, b/207012490)
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसकी वजह से फ़्रैगमेंट के
onCreate()
से,by navGraphViewModels()
के ज़रिए बनाए गएViewModel
को ऐक्सेस करने पर,IllegalStateException
दिखता था. (I8a14d) NavDeepLink
s अब ज़रूरत के बिना, आर्ग्युमेंट को दो बार डिकोड नहीं करेगा. इसका मतलब है कि सही आर्ग्युमेंट अब आपके फ़ाइनल डेस्टिनेशन पर भेजे जाएंगे. (I31b0a, b/210711399)
Safe Args
- सेफ़ आर्ग्युमेंट अब Android Gradle प्लग इन के 7.0.4 वर्शन पर निर्भर करता है. इसका मतलब है कि नेविगेशन सेफ़ आर्ग्युमेंट, अब Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेंगे. हालांकि, यह अब Android Gradle प्लग इन के 7.1.0 और उसके बाद के वर्शन के साथ काम करेगा. (I41c88, b/213086135, b/207670704)
वर्शन 2.4.2
वर्शन 2.4.2
6 अप्रैल, 2022
androidx.navigation:navigation-*:2.4.2
रिलीज़ हो गया है. वर्शन 2.4.2 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन
2.5.0-alpha03
से वापस ले जाया गया:NavDeepLinks
अब रूट/डीप लिंक यूआरआई में एम्बेड किए गए, कोड में बदले गए नए लाइन वर्णों के साथ ठीक से काम करता है. (I513d1, b/217815060) - नेविगेशन
2.5.0-alpha03
से बैकपोर्ट किया गया: नेविगेशन के लिए SafeArgs, अब AndroidManifest में पैकेज के बजायbuild.gradle
में तय किए गए नेमस्पेस का इस्तेमाल करता है. (I659ef, b/217414933) - नेविगेशन
2.5.0-alpha04
से वापस लाया गया: नाम स्थान का इस्तेमाल करने परNavigation Safe Args
अब क्रैश नहीं होगा और कोईAndroidManifest.xml
मौजूद नहीं है. (I17ccf, b/227229815) - नेविगेशन
2.5.0-alpha04
से बैकपोर्ट किया गया: अब डीप लिंक में खाली स्ट्रिंग को मान्य आर्ग्युमेंट माना जाता है. (I70a0d, b/217399862)
वर्शन 2.4.1
वर्शन 2.4.1
9 फ़रवरी, 2022
androidx.navigation:navigation-*:2.4.1
रिलीज़ हो गया है. 2.4.1 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- नेस्ट किए गए ग्राफ़ के साथ व्यूबाइंडिंग का इस्तेमाल करने पर,
NavHostFragment
अबOnBackPressedDispatcher
को सही तरीके से सेट करेगा. (Ifbb51, b/214577959) - नेस्ट किए गए एक से ज़्यादा
NavGraph
के ज़रिए डीप लिंक करने पर, बैक स्टैक अब इंटरमीडिएट स्टार्ट डेस्टिनेशन को सही तरीके से शामिल करेगा. (I504c0, b/214383060) - नेविगेशन
2.5.0-alpha01
से बैकपोर्ट किया गया: एक समस्या को ठीक किया गया है. इसमें, फ़्रैगमेंट केonCreate()
सेby navGraphViewModels()
के ज़रिए बनाए गए ViewModel को ऐक्सेस करने पर,IllegalStateException
दिखता था. (I8a14d) - नेविगेशन
2.5.0-alpha01
से बैकपोर्ट किया गया:NavDeepLink
अब ज़रूरत के बिना आर्ग्युमेंट को दो बार डिकोड नहीं करता, इसका मतलब है कि सही तरीके से डिकोड किए गए आर्ग्युमेंट अब आपके फ़ाइनल डेस्टिनेशन पर भेजे जाते हैं. (I31b0a, b/210711399) - नेविगेशन
2.5.0-alpha01
से बैकपोर्ट किया गया: Safe Args अब Android Gradle प्लग इन के 7.0.4 वर्शन पर निर्भर करता है. इसका मतलब है कि नेविगेशन सेफ़ आर्ग्युमेंट, अब Android Studio के 7.0 से पहले के वर्शन के साथ काम नहीं करेगा. हालांकि, यह Android Gradle प्लग इन 7.1.0 और इसके बाद के वर्शन के साथ काम करेगा. (I41c88, b/213086135, b/207670704)
वर्शन 2.4.0
वर्शन 2.4.0
26 जनवरी, 2022
androidx.navigation:navigation-*:2.4.0
रिलीज़ हो गया है. वर्शन 2.4.0 में ये कमियां शामिल हैं.
2.3.0 के बाद किए गए अहम बदलाव
- सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे जेनरिक (जैसे कि
NavType
सब-क्लास) का इस्तेमाल करने वाली क्लास की शून्यता की संभावना बढ़ गई है.-ktx
आर्टफ़ैक्ट का हिस्सा रहे सभी Kotlin एक्सटेंशन फ़ंक्शन, उनके मुख्य आर्टफ़ैक्ट में ले जा दिए गए हैं.-ktx
आर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे. navigation-fragment
आर्टफ़ैक्ट में अब नएAbstractListDetailFragment
की मदद से, दो पैनल वाले लेआउट को पहले से लागू किया गया है. यह फ़्रैगमेंट सूची पैनल (जिसे आपके सब-क्लास उपलब्ध कराता है) को मैनेज करने के लिए,SlidingPaneLayout
का इस्तेमाल करता है. साथ ही, जानकारी वाले पैनल का इस्तेमाल करता है, जो लागू करने के तौर परNavHostFragment
का इस्तेमाल करता है, जैसा कि हमारे लागू करने के उदाहरण में दिखाया गया है.NavController
परcurrentBackStackEntryAsFlow()
तरीका, एकFlow
उपलब्ध कराता है. यहFlow
तब इमिट होता है, जब मौजूदाNavBackStackEntry
में बदलाव होता है. इस फ़्लो का इस्तेमाल,OnDestinationChangedListener
को मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है.- NavController अब एक्सपेरिमेंट के तौर पर उपलब्ध
visibleEntries
प्रॉपर्टी की मदद से, दिखने वाले सभीNavBackStackEntry
इंस्टेंस की सूची कोStateFlow
के तौर पर वापस लाने की सुविधा देता है. - अब पसंद के मुताबिक NavTypes बनाने के लिए,
NavType
क्लास को बड़ा किया जा सकता है. कस्टम टाइप सिर्फ़ तब काम करते हैं, जब नेविगेशन ग्राफ़ को प्रोग्राम के हिसाब से बनाया जाता है. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए. नेविगेशन में अब
findStartDestination()
औरgetHierarchy()
एपीआई मिलते हैं. इनका इस्तेमाल, कस्टम NavigationUI को लागू करने के लिए किया जा सकता है.findStartDestination()
,NavGraph
का एक एक्सटेंशन फ़ंक्शन है. यह ग्राफ़ पर नेविगेट करने पर, शुरुआती जगह की सही जानकारी दिखाएगा. भले ही,startDestination
खुद नेस्ट किया गयाNavGraph
हो.getHierarchy()
,NavDestination
पर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि कोई डेस्टिनेशन, दूसरे डेस्टिनेशन के क्रम में है या नहीं.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI
के उन तरीकों को अपडेट किया गया है जिनमेंBottomNavigationView
का इस्तेमाल किया जाता था. अब इनमें Material1.4.0
में पेश किए गएNavigationBarView
सुपरक्लास का इस्तेमाल किया जाएगा. इससे इन तरीकों का इस्तेमालNavigationRailView
के साथ किया जा सकता है.एक्सएमएल के ज़रिए
<action>
एलिमेंट को इनफ्लेट करते समय, ऐनिमेशन एट्रिब्यूट,app:enterAnim="?attr/transitionEnter"
सिंटैक्स का इस्तेमाल करके आपकी थीम से खींचे गए एट्रिब्यूट का इस्तेमाल कर सकते हैं.Safe Args अब हर
NavArgs
क्लास के लिएfromSavedStateHandle()
तरीका जनरेट करता है. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
नेविगेशन रूट और Kotlin डीएसएल
नेविगेशन के पिछले वर्शन में, हर डेस्टिनेशन के लिए एक ऐसा आईडी होता था जो उस डेस्टिनेशन की पहचान करता था. यह आईडी, उस डेस्टिनेशन को उसके मिलते-जुलते डेस्टिनेशन से अलग करता था. साथ ही, इसकी मदद से सीधे तौर पर या किसी कार्रवाई के ज़रिए उस डेस्टिनेशन पर navigate()
किया जा सकता था. हालांकि, यह तरीका अब भी मान्य और काम का है. खास तौर पर, उन मामलों में जहां नेविगेशन ग्राफ़ को एक्सएमएल में तय किया जा रहा है और अपने-आप जनरेट होने वाले R.id
कॉन्स्टेंट या सेफ़ आर्ग्युमेंट (जो बिल्ड के समय कोड जनरेट करने के लिए उन कॉन्स्टेंट का इस्तेमाल करते हैं) का इस्तेमाल किया जा सकता है. यूनीक इंटिजर के इस सिस्टम में, नेविगेशन Kotlin DSL की मदद से, रनटाइम के दौरान प्रोग्राम के हिसाब से बनाए गए पूरी तरह डाइनैमिक ग्राफ़ के साथ काम करने के लिए, सेमेटिक मतलब और बेहतर तरीके से जानकारी देने की सुविधा नहीं थी.
इस रिलीज़ में, नेविगेशन ग्राफ़ में किसी डेस्टिनेशन की रास्ते से खास तौर पर पहचान करने के लिए एक नया विकल्प जोड़ा गया है. route एक String
है, जो किसी डेस्टिनेशन के यूनीक पाथ की जानकारी देता है. डेस्टिनेशन आईडी का इस्तेमाल करने वाले सभी Kotlin DSL तरीके अब काम नहीं करते. इनकी जगह, एक ऐसे एपीआई का इस्तेमाल किया जाता है जो रास्ता लेता है.
हर रूट को Uri
के 'पाथ' हिस्से के तौर पर माना जाना चाहिए, जो उस डेस्टिनेशन की जानकारी देता है. उदाहरण के लिए, home
, profile/{userId}
, profile/{userId}/friends
वगैरह. जब किसी डेस्टिनेशन की पहचान किसी खास कॉन्टेंट से जुड़ी होती है, तो उन डाइनैमिक आर्ग्युमेंट को रूट का हिस्सा होना चाहिए. इसके लिए, अनजान में भेजे जाने वाले डीप लिंक के नियमों का पालन करना होगा.
NavController
के उन सभी एपीआई में अब एक ओवरलोड है जो सिर्फ़ आईडी लेता था और String
रूट लेता था. इसमें navigate()
, popBackStack()
, popUpTo()
, और getBackStackEntry()
शामिल हैं.
इसमें एपीआई के कुछ असर पड़ा है:
- Kotlin DSL में
popUpTo
Kotlin प्रॉपर्टी कोpopUpToId
के पक्ष में बंद कर दिया गया है. getStartDestination()
एपीआई को बंद कर दिया गया है और अबgetStartDestinationId()
का इस्तेमाल किया जा रहा है.
आईडी से नेविगेट करने के उलट, रास्ते से नेविगेट करने पर अनजान डीप लिंक के जैसे नियम लागू होते हैं. इन नियमों के तहत, नेस्ट किए गए किसी भी ग्राफ़ में सीधे किसी भी डेस्टिनेशन पर नेविगेट किया जा सकता है. इससे यह पक्का होता है कि इन रास्तों का इस्तेमाल मल्टी-मॉड्यूल प्रोजेक्ट में किया जा सकता है. इसके लिए, हर डेस्टिनेशन में साफ़ तौर पर दिखने वाला डीप लिंक जोड़ना ज़रूरी नहीं है.
नेविगेशन कंपोज
navigation-compose
आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन उपलब्ध कराता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable
फ़ंक्शन का इस्तेमाल करता है.
इस रिलीज़ में ये सुविधाएं मिलती हैं:
NavHost
कॉम्पोज़ेबल, जोcomposable
औरdialog
डेस्टिनेशन का इस्तेमाल करके, Kotlin DSL के ज़रिए नेविगेशन ग्राफ़ बनाने की सुविधा देता है. साथ ही, Accompanist Navigation Material जैसे वैकल्पिक नेविगेटर के साथ काम करता है.- डेस्टिनेशन के बीच क्रॉसफ़ेड करने की सुविधा ज़रूरी है. असिस्टेंट के नेविगेशन ऐनिमेशन का इस्तेमाल, एक्सपेरिमेंट के तौर पर उपलब्ध Compose API का इस्तेमाल करके, वीडियो में शामिल होने और उससे बाहर निकलने के ट्रांज़िशन को कंट्रोल करने के लिए किया जा सकता है.
- हर कॉम्पोज़ेबल डेस्टिनेशन के लिए
Lifecycle
का स्कोप तय करना. हर डेस्टिनेशन सिर्फ़ तबRESUMED
स्थिति तक पहुंचता है, जब कोई ट्रांज़िशन पूरा हो जाता है. साथ ही, ट्रांज़िशन शुरू होते ही यह तुरंतSTARTED
पर आ जाता है. इस तरह, आपLifecycle
केRESUMED
होने पर हीnavigate
कॉल ट्रिगर करके,IllegalStateException
और मल्टी-टच की सभी समस्याओं से बच सकते हैं. - डेस्टिनेशन लेवल पर लाइफ़साइकल व्यूमॉडल कंपोज़
2.4.0
केviewModel()
एपीआई या हिलट नेविगेशन कंपोज़1.0.0
केhiltViewModel()
के ज़रिए, एक ऐसा स्कोप उपलब्ध कराया जाता है जो कॉन्फ़िगरेशन में बदलाव होने पर भी बचे रह सकता है और पिछली स्टैक पर (जब आपका कंपोज़ेबल कॉन्टेंट किसी और तरह से नष्ट किया जाता है) और ViewModel केonCleared()
में सिग्नल मिलता है, जो उसNavBackStackEntry
से जुड़े स्टेटस को हमेशा के लिए नष्ट और साफ़ करने के बारे में बताता है.ViewModel
- डेस्टिनेशन लेवल पर
rememberSaveable
स्टेटस को स्कोप करना. इससे यह पक्का होता है कि किसी डेस्टिनेशन पर वापस जाने पर, सभी कॉम्पोज़ेबल स्टेटस अपने-आप सेव और वापस आ जाएं. - प्रोसेस के बंद होने और फिर से शुरू होने के बाद,
NavController
और उसके डेस्टिनेशन की स्थिति को सेव और वापस लाने के लिए पूरी मदद. - सिस्टम के 'वापस जाएं' बटन की मदद से, अपने-आप इंटिग्रेट होने की सुविधा.
आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजा दिखाने के लिए सहायता.
होइस्टिंग स्टेटस की अनुमति देने और
NavController
कोNavHost
के बाहर के कॉम्पोज़ेबल (जैसे, सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट करने के लिए,rememberNavController()
औरcurrentBackStackEntryAsState()
में खास हेल्पर बनाएं.
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
ज़्यादा जानकारी के लिए, नेविगेशन कॉम्पोज़ करने से जुड़ी गाइड देखें.
एक से ज़्यादा बैक स्टैक
NavController, डेस्टिनेशन के बैक स्टैक को मैनेज करने के लिए ज़िम्मेदार होता है. जब किसी डेस्टिनेशन पर navigate()
किया जाता है, तो उसे बैक स्टैक में जोड़ दिया जाता है. साथ ही, popBackStack()
को कॉल करने या सिस्टम के बैक बटन को ट्रिगर करने पर, उसे हटा दिया जाता है. नेविगेशन ग्राफ़ एक्सएमएल में, मौजूदा NavOptions
क्लास और <action>
एलिमेंट के इंटिग्रेशन को बड़ा किया गया है, ताकि पिछली गतिविधियों को सेव और वापस लाने में मदद मिल सके.
इस बदलाव के तहत, onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
, और NavigationView.setupWithNavController()
के NavigationUI
तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और पहले जैसा करते हैं. इससे, कोड में कोई बदलाव किए बिना कई बैक स्टैक इस्तेमाल किए जा सकते हैं. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, कई बैक स्टैक के साथ इंटिग्रेट करने का यह सुझाया गया तरीका है.
स्थिति को सेव और वापस लाने के लिए, बुनियादी एपीआई कई प्लैटफ़ॉर्म पर दिखाए जाते हैं:
नेविगेशन एक्सएमएल में,
<action>
एलिमेंट अबapp:popUpToSaveState
औरapp:restoreState
के बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससे,app:popUpTo
की मदद से पॉप किए गए किसी भी डेस्टिनेशन की स्थिति सेव की जा सकती है. साथ ही,app:destination
के तौर पर पास किए गए डेस्टिनेशन की स्थिति को वापस लाया जा सकता है:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL में,popUpTo
बिल्डर परrestoreState
बूलियन प्रॉपर्टी औरsaveState
बूलियन प्रॉपर्टी जोड़ी जा सकती है:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
NavOptions.Builder
के ज़रिए, मैन्युअल तरीके सेNavOptions
ऑब्जेक्ट बनाने के दौरान,setPopUpTo()
के लिएsetRestoreState()
और नए ओवरलोड का इस्तेमाल किया जा सकता है. ऐसा करने के लिए, एक अतिरिक्तsaveState
पैरामीटर लेना पड़ता है.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
popBackStack()
को प्रोग्रामैटिक तरीके से किए जाने वाले कॉल में, अब एक औरsaveState
पैरामीटर शामिल किया जा सकता है.popBackStack()
याpopUpToSaveState
के साथ सेव की गई किसी भी स्थिति को मिटाने के लिए,clearBackStack()
तरीके का इस्तेमाल किया जा सकता है.
सभी मामलों में, NavController
हर NavBackStackEntry
की स्थिति को सेव और वापस लाएगा. इसमें नेविगेशन डेस्टिनेशन के स्कोप वाले ViewModel
इंस्टेंस भी शामिल हैं. Navigator
एपीआई को अपडेट किया गया है, ताकि हर Navigator
अपनी स्थिति को सेव और वापस ला सके.
व्यवहार में बदलाव
NavDeepLinkBuilder
अबcreatePendingIntent()
से मिलेPendingIntent
मेंPendingIntent.FLAG_IMMUTABLE
जोड़ता है. इससे यह पक्का होता है कि Android 12 को टारगेट करते समय, यह एपीआई उम्मीद के मुताबिक काम करे.- नेविगेशन अब लाइफ़साइकल
2.3.1
पर निर्भर करता है. साथ ही, अबNavBackStackEntry
Lifecycle
को अपडेट करने वाले तरीकों,setGraph()
,popBackStack()
,navigateUp()
, औरnavigate()
को@MainThread
के तौर पर मार्क करता है. इससे नेविगेशन को लाइफ़साइकल2.3.0
में शुरू किए गए मुख्य थ्रेड लागू करने की सुविधा के साथ अलाइन किया जाता है. - डीप लिंक अब इस बात की पुष्टि करते हैं कि
Uri
में सभी ज़रूरी आर्ग्युमेंट मौजूद हैं. आर्ग्युमेंट के लिए डिफ़ॉल्ट वैल्यू नहीं है. NavDeepLink
पार्स किए गए आर्ग्युमेंट अब पाथ सेगमेंट के बीच सेपरेटर के तौर पर, सवाल के निशान की तरह ही पाउंड साइन को भी इस्तेमाल करते हैं. इससे, आर्ग्युमेंट को पाउंड साइन के बीच फैलने से रोका जा सकता है.- ऐक्शन जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड, अब डिफ़ॉल्ट वैल्यू के पैरामीटर के बजाय, डिफ़ॉल्ट वैल्यू के बिना वाले आर्ग्युमेंट को पहले रखता है.
- आर्ग्युमेंट जनरेट करते समय, Safe Args अब पैरामीटर को डिफ़ॉल्ट वैल्यू वाले पैरामीटर से पहले डिफ़ॉल्ट वैल्यू के बिना रखता है.
- Safe-Args अब Android Gradle प्लग इन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको
applicationIdTextResource
का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी.
आम समस्याएं
- नेविगेशन
2.5.0-alpha01
में ठीक किया गया: फ़्रैगमेंट केonCreate()
सेby navGraphViewModels()
के ज़रिए बनाए गएViewModel
को ऐक्सेस करने पर,IllegalStateException
दिखेगा. (b/213504272) - नेविगेशन
2.5.0-alpha01
में ठीक किया गया: Safe Args 2.4.0, Android Gradle प्लग इन 7.1.0 और इसके बाद के वर्शन के साथ काम नहीं करता. (b/213086135) - नेस्ट किए गए कई नेविगेशन ग्राफ़ के साथ डीप लिंक करने पर, पूरा बैकस्टैक सही तरीके से नहीं बनता. (b/214383060)
वर्शन 2.4.0-rc01
15 दिसंबर, 2021
androidx.navigation:navigation-*:2.4.0-rc01
रिलीज़ हो गया है. वर्शन 2.4.0-rc01 में ये कमियां शामिल हैं.
व्यवहार में बदलाव
NavDeepLink
पार्स किए गए आर्ग्युमेंट में, अब पाउंड साइन को उसी तरह से माना जाता है जिस तरह आर्ग्युमेंट के बीच सेपरेटर के तौर पर कोटेशन मार्क का इस्तेमाल किया जाता है. (I21309, b/180042703)
गड़बड़ियां ठीक की गईं
- डीपलिंक अब उन आर्ग्युमेंट को अनदेखा नहीं करेंगे जिनकी वैल्यू, प्लेसहोल्डर के नाम से मेल खाती है. (If8017, b/207389470)
NavController
को वापस लाने के बाद, ट्रांज़िशन का इस्तेमाल करके नेस्ट किए गए डेस्टिनेशन को पॉप करने पर,NavController
अब क्रैश नहीं होगा. (I0f7c9, b/205021623)- अमान्य
startDestination
का इस्तेमाल करने पर गड़बड़ी का मैसेज, अब डिफ़ॉल्ट रूप से शुरुआती डेस्टिनेशन के रास्ते पर दिखेगा. हालांकि, ऐसा तब ही होगा, जब कोई रास्ता उपलब्ध हो. (I86b9d, b/208041894)
नेविगेशन कंपोज़ से जुड़ी गड़बड़ियां ठीक की गईं
- नीचे मौजूद नेविगेशन मेन्यू आइटम का इस्तेमाल करके, शुरुआती डेस्टिनेशन और किसी दूसरे डेस्टिनेशन के बीच तेज़ी से स्विच करने की वजह से होने वाली क्रैश की समस्या को ठीक किया गया. (Ic8976, b/208887901)
- कॉन्फ़िगरेशन में बदलाव होने या प्रोसेस के बंद होने के बाद, डायलॉग डेस्टिनेशन अब स्क्रीन पर सबसे ऊपर सही तरीके से वापस आ जाते हैं. (I4c0dc, b/207386169)
- डायलॉग को खारिज करने पर, डायलॉग के
NavBackStackEntry
सेViewModel
को वापस पाने की कोशिश करने पर होने वाली समस्या को ठीक किया गया है. (I6b96d, b/206465487) - नेविगेशन कंपोज़ के
NavHost
के साथactivity
डेस्टिनेशन का इस्तेमाल करते समय, एक समस्या को ठीक किया गया. इस समस्या की वजह से, कॉम्पोज़ करने की प्रोसेस अनलिमिटेड बार होती. (I8f64c) - नेविगेशन कंपोज़ में, कॉन्फ़िगरेशन में बदलाव होने या किसी प्रोसेस के बंद होने के बाद, पुरानी गतिविधि का रेफ़रंस देने वाली कंपनी के लीक होने की समस्या को ठीक किया गया. (I4efcb, b/204905432)
Safe Args से जुड़ी गड़बड़ियां ठीक की गईं
- प्रोसेस बंद होने के बाद, कस्टम पार्सल किए जा सकने वाले कलेक्शन को वापस लाने की कोशिश करने पर,
SafeArgs
अब क्रैश नहीं होता. (I618e8, b/207315994) - safe args में एक गड़बड़ी को ठीक किया गया है. इसकी वजह से, बूलियन ऐरे में
null
वैल्यू नहीं दी जा सकती थी. (I8c396, b/174787525)
वर्शन 2.4.0-beta02
3 नवंबर, 2021
androidx.navigation:navigation-*:2.4.0-beta02
रिलीज़ हो गया है. वर्शन 2.4.0-beta02 में ये कमिट हैं.
एपीआई में बदलाव
- साफ़ तौर पर और अपने-आप जुड़ने वाले, दोनों तरह के डीप लिंक को मैनेज करने की सुविधा अब किसी दूसरे ग्राफ़ पर नेविगेट करते समय,
saveState
फ़्लैग को अपने-आप जोड़ती है. इससे यह पक्का होता है किNavigationUI.setupWithNavController
जैसे कोड और कई बैक स्टैक का इस्तेमाल करने वाले कोड, उम्मीद के मुताबिक काम करते हैं. (Ic8807)
व्यवहार में बदलाव
- डीप लिंक पैटर्न अब इनफ़्लेशन के दौरान के बजाय, NavDeepLink में धीरे-धीरे कंपाइल किए जाते हैं. इससे, डीप लिंक वाले नेविगेशन ग्राफ़ को इन्फ़्लेशन होने में लगने वाला समय कम हो जाएगा. (b8d257, b/184149935)
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें,
NavHost
को गतिविधि केsetContent()
में सीधे जोड़ने पर,Lifecycle.State.STARTED
पर जाने के बाद, NavBackStackEntries कोLifecycle.State.CREATED
पर पुश किया जा रहा था. (Ia5ac1, b/203536683) - रेस कंडिशन को ठीक किया गया है जिसमें
बैक स्टैक से
DialogFragment
डेस्टिनेशन को पॉप-अप करने से पहले, डायलॉग वास्तव में डायलॉग दिखाया गया था, लेकिन वह असल में डायलॉग को खारिज नहीं करेगा. इससे, उपयोगकर्ता के गलत डायलॉग को मैन्युअल तरीके से खारिज करने पर क्रैश हो जाएगा. (I687e5) NavigationUI
पर मौजूदonNavDestinationSelected
एपीआई सेtrue
दिखने की समस्या को ठीक किया गया है. भले ही, आपने उस नेविगेशन ग्राफ़ परnavigate()
न किया हो. यह अब उसी लॉजिक का इस्तेमाल करता है जिसका इस्तेमालsetupWithNavController
, डेस्टिनेशन केhierarchy
का इस्तेमाल करके, मौजूदा डेस्टिनेशन से जुड़ेMenuItem
को चुनने के लिए करता है. (I2b053)
वर्शन 2.4.0-beta01
27 अक्टूबर, 2021
androidx.navigation:navigation-*:2.4.0-beta01
रिलीज़ हो गया है. 2.4.0-beta01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- अब आईडी के बजाय, किसी रास्ते के साथ
by navGraphViewModel
का इस्तेमाल किया जा सकता है. इससे फ़्रैगमेंट के साथ नेविगेशन Kotlin DSL का बेहतर तरीके से इस्तेमाल किया जा सकता है. (I901e3, b/201446416)
एपीआई में बदलाव
visibleEntries
एपीआई को अब एक्सपेरिमेंट के तौर पर उपलब्ध कराया गया है. (I93f6f)
गड़बड़ियां ठीक की गईं
- एक ही स्क्रीन (Id52d8, b/200817333) के बीच बार-बार नेविगेट करने पर, ट्रांज़िशन में रुकावट आने पर भी ViewModels अब मिट नहींेंगे
NavDestination
में डीप लिंक जोड़ते समय, वैल्यू न डालने पर भी काम करने वालेNavDeepLink
आर्ग्युमेंट के लिए, अब डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं है. (I5aad4, b/201320030)- अलग-अलग लाइफ़साइकल वाले NavBackStackEntries को अब एक जैसे नहीं माना जाता. इसका मतलब है कि singleTop मोड में नेविगेट करते समय और सबसे नीचे मौजूद मेन्यू आइटम को फिर से चुनते समय, NavHost सभी डेस्टिनेशन को सही तरीके से फिर से कॉम्पोज़ करेगा. (I1b351, b/196997433)
AbstractListDetailFragment
से जुड़ी उस समस्या को ठीक किया गया है जिसकी वजह सेonCreateListPaneView()
के सूची पैनल में मौजूदlayout_width
औरlayout_weight
एट्रिब्यूट को गलत तरीके से हैंडल किया गया या अनदेखा किया गया था. (f5fbf3)- डायलॉग डेस्टिनेशन की विज़ुअल स्थिति अब
DialogFragmentNavigator
की स्थिति के साथ सही तरीके से सिंक रहती है. इसका मतलब है किDialogFragment
के लिए एसिंक्रोनसdismiss()
API को मैन्युअल तरीके से कॉल करने पर, खारिज किए गए डायलॉग बॉक्स के ऊपर मौजूद सभी डायलॉग डेस्टिनेशन अब सही तरीके से हट जाएंगे. हालांकि, इससे उन मामलों पर कोई असर नहीं पड़ता जहां डायलॉग बॉक्स को खारिज करने के लिएpopUpTo
याpopBackStack()
का इस्तेमाल किया जाता है. (I77ba2) AbstractAppBarOnDestinationChangedListener
में अबonDestinationChanged()
के लिए, गड़बड़ी के बारे में साफ़ तौर पर जानकारी देने वाला मैसेज दिखता है. (Ie742d)
वर्शन 2.4.0-alpha10
29 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha10
रिलीज़ हो गया है. 2.4.0-alpha10 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- NavController अब
visibleEntries
StateFlow (Ia964e) की मदद से, दिखने वाले सभीNavBackStackEntry
इंस्टेंस की सूची वापस लाने की सुविधा देता है rememberNavController()
अबNavigator
इंस्टेंस का एक वैकल्पिक सेट लेता है. इसे, लौटाए गएNavController
में जोड़ा जाएगा. इससे एक साथ काम करने वाले नेविगेशन मटीरियल जैसे नेविगेटर को बेहतर तरीके से मदद मिल पाएगी. (I4619e)
गड़बड़ियां ठीक की गईं
- गतिविधि को फिर से बनाने पर, डाइनैमिक नेविगेशन अब क्रैश नहीं होगा. (Ifa6a3, b/197942869)
- सिस्टम के 'वापस जाएं' बटन से जुड़ी एक समस्या को ठीक किया गया है. यह समस्या, सिर्फ़
NavHost
वाले कॉम्पोज़ेबल डेस्टिनेशन पर वापस पॉप होने के बाद होती है. (3ed148, b/195668143) - SafeArgs अब पैरामीटर के सही क्रम में,
fromBundle()
औरfromSavedStateHandle()
के लिए आर्ग्युमेंट जनरेट करता है. (I824a8, b/200059831)
वर्शन 2.4.0-alpha09
15 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha09
रिलीज़ हो गया है. वर्शन 2.4.0-alpha09 में ये कमिट हैं.
नई सुविधाएं
- अब
popBackStack()
याpopUpToSaveState
के साथ सेव की गई किसी भी स्थिति को हटाने के लिए,clearBackStack()
तरीके का इस्तेमाल किया जा सकता है. (I80a0f) - अब नेस्ट किए गए नेविगेशन ग्राफ़ के बिल्डर में, आर्ग्युमेंट और/या डीप लिंक की सूची दी जा सकती है. ये आर्ग्युमेंट और लिंक, नतीजे वाले ग्राफ़ में अपने-आप जुड़ जाएंगे. (I8a470, b/182545357)
एपीआई में हुए बदलाव
navArgument
Kotlin DSL फ़ंक्शन अबnavigation-compose
के बजायnavigation-common
का हिस्सा है. इसके लिए इस फ़ंक्शन का इस्तेमाल जारी रखने के लिए, इंपोर्ट को अपडेट करना होगा. (I1d095)
व्यवहार में बदलाव
- आर्ग्युमेंट जनरेट करते समय, Safe Args अब डिफ़ॉल्ट वैल्यू वाले पैरामीटर के पहले, डिफ़ॉल्ट वैल्यू के बिना पैरामीटर डालता है. (I89709, b/198493585)
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज का इस्तेमाल करते समय, NavGraphs सिर्फ़ तब
DESTROYED
होंगे, जब उनके सभी चाइल्डDESTROYED
होंगे. (I86552, b/198741720) - शून्य वाले
NavDeepLink
आर्ग्युमेंट के लिए, अब डिफ़ॉल्ट वैल्यू की ज़रूरत नहीं है. (Ia14ef, b/198689811) - नए ग्राफ़ के साथ
setGraph()
को कॉल करने पर, अब बैक स्टैक को पॉप करने के साथ-साथ, सेव किए गए सभी बैक स्टैक भी मिट जाएंगे. (I97f96) launchSingleTop
का इस्तेमाल करने पर,OnDestinationChangedListener
इंस्टेंस औरcurrentBackStackEntryFlow
को सूचना न मिलने की समस्या को ठीक किया गया है. (Iaaebc)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन कंपोज अब Activity Compose 1.3.1 पर निर्भर करता है. (I05829)
- नेविगेशन कंपोज अब लाइफ़साइकल ViewModel कंपोज
2.4.0-beta01
पर निर्भर करता है. (Ib86a3)
वर्शन 2.4.0-alpha08
1 सितंबर, 2021
androidx.navigation:navigation-*:2.4.0-alpha08
रिलीज़ हो गया है. वर्शन 2.4.0-alpha08 में ये कमियां हैं.
नई सुविधाएं
- अब पसंद के मुताबिक NavTypes बनाने के लिए,
NavType
क्लास को बड़ा किया जा सकता है. कस्टम टाइप सिर्फ़ तब काम करते हैं, जब नेविगेशन ग्राफ़ को प्रोग्राम के हिसाब से बनाया जाता है. जैसे, नेविगेशन ग्राफ़ Kotlin DSL के ज़रिए. (I78440, b/196871885)
व्यवहार में बदलाव
- कार्रवाइयां जनरेट करते समय, Safe Args से जनरेट किया गया Kotlin कोड, अब बिना डिफ़ॉल्ट वैल्यू वाले आर्ग्युमेंट को पैरामीटर के तौर पर, डिफ़ॉल्ट वैल्यू से पहले रखता है. (Idb697, b/188855904)
- डीप लिंक अब इस बात की पुष्टि करते हैं कि
Uri
में सभी ज़रूरी आर्ग्युमेंट (जिनमें डिफ़ॉल्ट वैल्यू नहीं है) मौजूद हैं. (#204, b/185527157)
गड़बड़ियां ठीक की गईं
remember()
के साथ मिलकर, composable() मेंgetBackStackEntry
औरpreviousBackStackEntry
का इस्तेमाल करने पर, अब बैक स्टैक में कोई डेस्टिनेशन न होने पर अपवाद नहीं दिखेगा. (I75138, b/194313238)- नेविगेशन कंपोज़, अब बैकस्टैक के आर्ग्युमेंट बदलने और
launchSingleTop=true
का इस्तेमाल करने पर, सही तरीके से फिर से कंपोज़ करता है. (Iebd69, b/186392337) - 13 या 29 डेस्टिनेशन वाले ग्राफ़ के साथ
setGraph
को कॉल करने पर, अबArrayIndexOutOfBoundsException
नहीं दिखेगा. (I1a9f1, b/195171984) - अब SafeArgs java जनरेटर, Args क्लास जनरेट करते समय, लिंट से जुड़ी चेतावनियां नहीं दिखाएगा. (I1a666, b/185843837)
बाहरी योगदान
- ospixd को धन्यवाद, इस बात की पुष्टि करने के लिए कि डीप लिंक यह पुष्टि करते हैं कि
Uri
में सभी ज़रूरी आर्ग्युमेंट (जिनमें डिफ़ॉल्ट वैल्यू नहीं है) मौजूद हैं. (#204, b/185527157)
वर्शन 2.4.0-alpha07
18 अगस्त, 2021
androidx.navigation:navigation-*:2.4.0-alpha07
रिलीज़ हो गया है. वर्शन 2.4.0-alpha07 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज़ अब कॉन्फ़िगरेशन में बदलाव होने के बाद और कई बैक स्टैक की सुविधा का इस्तेमाल करते समय ग्राफ़ बदलने पर, स्टेटस को सही तरीके से सेव करता है. (If5a3d, b/195141957)
- नेविगेशन कंपोज़ का इस्तेमाल करते समय, एक से ज़्यादा बैक स्टैक के साथ एक ही टैब को फिर से चुनने पर, अब खाली स्क्रीन नहीं दिखेगी. (I860dc, b/194925622)
NavHost
अबNavBackStackEntry
केLifecycle.State
में होने वाले बदलावों को मॉनिटर करता है. इसका मतलब है कि किसी फ़्रैगमेंट मेंNavHost
का इस्तेमाल करने पर, अब लाइफ़साइकल में होने वाले बदलावों के हिसाब से उसे फिर से सही तरीके से कॉम्पोज़ किया जाएगा. इससे, स्क्रीन खाली नहीं दिखेगी. (I4eb85, b/195864489)DialogFragment
को खारिज करने पर, गतिविधि को फिर से बनाने (यानी कॉन्फ़िगरेशन में बदलाव करने) के बाद,NavController
की स्थिति सही से अपडेट नहीं होने की समस्या को ठीक किया गया. (Icd72b)- समस्या को ठीक किया गया है जहां डायलॉग डेस्टिनेशन को पॉप-अप करने से NavController के सिस्टम के बैक बटन की हैंडलिंग अपडेट नहीं होती. इसकी वजह से, NavController, पॉप-अप होने के लिए कोई बैक स्टैक न होने के बावजूद भी 'वापस जाएं' बटन को इंटरसेप्ट करता है. (If3b34)
- Safe-args अब आर्ग्युमेंट के लिए
toSavedStateHandle
कोड अपने-आप जनरेट करता है. इसका इस्तेमाल,ViewModel
कोड की जांच करने के लिए किया जा सकता है. (If1e2d, b/193353880)
वर्शन 2.4.0-alpha06
4 अगस्त, 2021
androidx.navigation:navigation-*:2.4.0-alpha06
रिलीज़ हो गया है. 2.4.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
AbstractListDetailFragment
परrequireSlidingPaneLayout()
औरrequireDetailPaneNavHostFragment()
तरीकों का नाम बदलकर,getSlidingPaneLayout()
औरgetDetailPaneNavHostFragment()
कर दिया गया है. (I34a08)
व्यवहार में बदलाव
- ऐनिमेशन (जैसे,
Crossfade
) की मदद से नेविगेट करते समय, नए डेस्टिनेशन काLifecycle
अब सिर्फ़ ऐनिमेशन पूरा होने परRESUMED
तक पहुंचेगा. (If0543, b/172112072, b/194301889) - नेविगेशन कंपोज़ के
NavHost
से अब ग्राफ़ को पहले कंपोज़ किए गए कॉन्टेंट के हिस्से के तौर पर सेट किया जाता है. (Ieb7be)
गड़बड़ियां ठीक की गईं
- नेविगेशन ग्राफ़ के आखिरी डेस्टिनेशन को पॉप करने पर, अब
ClassCastException
नहीं दिखता. (If0543, b/172112072, b/194301889) NullPointerException
को ठीक किया गया, जोUri
के बिना डीप लिंक जोड़ने और किसी रूट या डीप लिंक के ज़रिए नेविगेट करने पर होता था. (938a0c, b/193805425)- नेविगेशन कंपोज़ में एक समस्या को ठीक किया गया है. इसमें, डीप लिंक किया गया
NavBackStackEntry
,RESUMED
स्टेटस तक नहीं पहुंच पाता था. (I192c5) - उस समस्या को ठीक किया गया है जहां डायलॉग डेस्टिनेशन को पॉप करने से, NavController के सिस्टम के बैक बटन की हैंडलिंग अपडेट नहीं होती. इसकी वजह से, NavController, पॉप-अप होने के लिए कोई बैक स्टैक न होने के बावजूद भी 'वापस जाएं' बटन को इंटरसेप्ट करता है. (aosp/1782668)
वर्शन 2.4.0-alpha05
21 जुलाई, 2021
androidx.navigation:navigation-*:2.4.0-alpha05
रिलीज़ हो गया है. 2.4.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
- नेविगेशन कंपोज़ की
NavHost
सुविधा, अब डेस्टिनेशन के बीच नेविगेट करते समय हमेशा क्रॉसफ़ेड का इस्तेमाल करती है. (I07049, b/172112072) - अब NavHost के ग्राफ़ में बदलाव किए जा सकते हैं. ग्राफ़ में एक ही startDestination और डेस्टिनेशन वाले ग्राफ़ को एक ही माना जाएगा. साथ ही,
NavController
बैक स्टैक को भी नहीं मिटाया जाएगा. (I0b8db, b/175392262)
गड़बड़ियां ठीक की गईं
- NavController की स्थिति में फिर से ट्रांसफ़र किए गए अपडेट की वजह से,
NavBackStackEntry
से अटैच किए गएLifecycleObserver
के अंदर सेpopBackStack()
को कॉल करने पर,NoSuchElementException
को ठीक किया गया. (I64621) AbstractListDetailFragment
का इस्तेमाल न करने पर,AbstractListDetailFragment
को अब आपके APK से पूरी तरह हटाया जा सकता है.SlidingPaneLayout
(I611ad)NavGraph
औरNavDestination
अब बराबर होने के तरीके को बदलते हैं. इसलिए, एक जैसे मान वाले दो ऑब्जेक्ट को बराबर माना जाएगा. (I166eb, b/175392262)
वर्शन 2.4.0-alpha04
1 जुलाई, 2021
androidx.navigation:navigation-*:2.4.0-alpha04
रिलीज़ हो गया है. वर्शन 2.4.0-alpha04 में ये कमियां हैं.
नई सुविधाएं
navigation-fragment
आर्टफ़ैक्ट में अब नएAbstractListDetailFragment
की मदद से, दो पैनल वाले लेआउट को पहले से लागू किया गया है. यह फ़्रैगमेंट, सूची पैनल (जो आपका सबक्लास उपलब्ध कराता है) और ज़्यादा जानकारी वाले पैनल को मैनेज करने के लिए,SlidingPaneLayout
का इस्तेमाल करता है. ज़्यादा जानकारी वाले पैनल को लागू करने के लिए,NavHostFragment
का इस्तेमाल किया जाता है. इस बारे में ज़्यादा जानने के लिए, लागू करने का उदाहरण देखें. (Iac4be, b/191276636)navigation-compose
आर्टफ़ैक्ट काNavHost
, अबcomposable
डेस्टिनेशन के साथ-साथdialog
डेस्टिनेशन के साथ भी काम करता है. ये डायलॉग डेस्टिनेशन, मौजूदाcomposable
डेस्टिनेशन के ऊपर फ़्लोटिंग, ComposableDialog
में दिखेंगे. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
एपीआई में हुए बदलाव
NavigatorState
में मौजूदadd
फ़ंक्शन का नाम बदलकरpush
कर दिया गया है.add()
को किए जाने वाले सभी मौजूदा कॉल को push() में बदलना होगा. (Ie89fc, b/172112072)- कस्टम
Navigator
इंस्टेंस, अबNavigatorState
परpushWithTransaction
औरpopWithTransition
एपीआई का इस्तेमाल करके, किसी डेस्टिनेशन को एसिंक्रोनस रूप से पुश या पॉप कर सकते हैं. ध्यान दें कि इस एपीआई का इस्तेमाल अभी तक शामिल किए गए किसी भी नेविगेटर ने नहीं किया है. (Ic4d7c, b/172112072)
व्यवहार में बदलाव
NavDeepLinkBuilder
अबcreatePendingIntent()
से मिलेPendingIntent
मेंPendingIntent.FLAG_IMMUTABLE
जोड़ता है. इससे यह पक्का होता है कि Android 12 को टारगेट करते समय, यह एपीआई उम्मीद के मुताबिक काम करे. (If8c52)
गड़बड़ियां ठीक की गईं
<include-dynamic>
वाली समस्या को ठीक किया गया है, जहां ग्राफ़ में दिए गए तर्क, डाइनैमिक रूप से शामिल ग्राफ़ में सही तरीके से पास नहीं हो पाते. (I3e115)- किसी डेस्टिनेशन पर नेविगेट करते समय,
NullPointerException
को ठीक किया गया. इसके लिए,string[]
आर्ग्युमेंट का इस्तेमाल किया गया, जिसकी डिफ़ॉल्ट वैल्यू@null
है. (I1fbe8) - R8 3.1 फ़ुल मोड का इस्तेमाल करते समय आने वाली समस्याओं को ठीक करके,
@Navigator.Name
के लिए ProGuard के नियम जोड़ें. (I2add9, b/191654433) 1.5.0
से पहलेKotlin
वर्शन के साथ ऐप्लिकेशन बनाते समय, SafeArgs काम नहीं करेगा. (Icd1ff, b/190739257)
वर्शन 2.4.0-alpha03
16 जून, 2021
androidx.navigation:navigation-*:2.4.0-alpha03
रिलीज़ हो गया है. 2.4.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- शामिल किए गए डाइनैमिक ग्राफ़ पर जाने के लिए, दो
navigate()
कॉल की ज़रूरत पड़ने की समस्या को ठीक किया गया. (I7785c, b/188859835) - नेविगेशन
2.4.0-alpha01
में शुरू किए गए रिग्रेशन को ठीक किया गया है, जहां टॉप लेवल डेस्टिनेशन पर होने परsetupActionBarWithNavController()
, अप ऐरो को सही तरीके से नहीं हटाता. (I5d443, b/189868637) - NavController के रूट ग्राफ़ को पहले पॉप करने के बाद,
popBackStack()
को कॉल करते समयIllegalStateException
को ठीक किया गया. (I2a330, b/190265699) navigation-common
या उस पर निर्भर किसी भी आर्टफ़ैक्ट का इस्तेमाल करने पर,by navArgs()
के लिए ProGuard के नियम अब सही तरीके से लागू होते हैं. (I68800, b/190082521)OnDestinationChangedListener
,navigate()
को पहली बार कॉलबैक मिलने पर, अब उस डेस्टिनेशन के साथ सही तरीके से दूसरा कॉलबैक पाता है जिस पर वह नेविगेट किया गया था. (Ie5f9e, b/190228815)- डाइनैमिक सुविधा वाले मॉड्यूल और AGP 7.0 के बाद के वर्शन के साथ Safe Args का इस्तेमाल करने पर, अब क्रैश नहीं होता. (I69518, b/189966576)
आम समस्या
- Gradle
6.7.0
का इस्तेमाल करने पर, Safe Args की सुविधा काम नहीं करेगी. इसकी वजह यह है कि यह Kotlin के पुराने वर्शन पर निर्भर करती है.Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
Gradle 7.0 का इस्तेमाल करके, इस समस्या को हल किया जा सकता है. (b/190739257)
वर्शन 2.4.0-alpha02
2 जून, 2021
androidx.navigation:navigation-*:2.4.0-alpha02
रिलीज़ हो गया है. वर्शन 2.4.0-alpha02 में ये कमियां हैं.
नई सुविधाएं
- अब रास्ते, ऐक्टिविटी, फ़्रैगमेंट, और डायलॉग डेस्टिनेशन के साथ-साथ, DynamicNavigation Kotlin DSL में भी काम करते हैं. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
ने कुछ समय के लिए एक्सपेरिमेंट के तौर पर एपीआई जोड़े हैं, ताकि आप अपनी स्थिति सेव करने की सुविधा से ऑप्ट आउट कर सकें. ऐप्लिकेशन की स्थिति को हमेशा सेव करना सही है.हालांकि, अब भी ऐसी लाइब्रेरी (यानी कि बनाए गए फ़्रैगमेंट) का इस्तेमाल किया जा रहा है जो ऐप्लिकेशन की स्थिति सेव करते समय काम नहीं करती हैं. इसलिए, ऐप्लिकेशन को धीरे-धीरे ऐसे एपीआई से हटाया जा सकता है जो काम नहीं करते. (Idf93c)नेविगेशन अब
findDestination()
औरgetHierarchy()
एपीआई उपलब्ध कराता है. इनका इस्तेमाल, कस्टम NavigationUI लागू करने में मदद करने के लिए किया जा सकता है.findDestination()
,NavGraph
पर मौजूद एक एक्सटेंशन फ़ंक्शन है, जो ग्राफ़ में किसी डेस्टिनेशन को ढूंढेगा.getHierarchy()
,NavDestination
पर मौजूद एक फ़ंक्शन है. इसका इस्तेमाल यह पुष्टि करने के लिए किया जा सकता है कि कोई डेस्टिनेशन, किसी दूसरे डेस्टिनेशन की हैरारकी में शामिल है या नहीं.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI के जिन तरीकों में
BottomNavigationView
का इस्तेमाल किया जाता था उन्हें अपडेट कर दिया गया है. अब इनमें Material1.4.0
,NavigationBarView
में जोड़े गए सुपरक्लास का इस्तेमाल किया जाएगा. इससे इन तरीकों का इस्तेमालNavigationRailView
के साथ किया जा सकता है. (Ib0b36, b/182938895)एक्सएमएल के ज़रिए किसी
<action>
एलिमेंट को इनफ़्लेट करते समय, ऐनिमेशन एट्रिब्यूट आपकी थीम से लिए गए एट्रिब्यूट का इस्तेमाल कर सकते हैं. इसके लिए, वेapp:enterAnim="?attr/transitionEnter"
सिंटैक्स का इस्तेमाल कर सकते हैं. (I07bc1, b/178291654)
एपीआई में हुए बदलाव
- आईडी का इस्तेमाल करने वाले Kotlin डीएसएल बिल्डर बंद कर दिए गए हैं. इन्हें, रास्तों (I85b42, b/188816479) (I9f58f, b/188816479) का इस्तेमाल करने वाले बिल्डर से बदल दिया जाना चाहिए
गड़बड़ियां ठीक की गईं
DialogFragmentNavigator
अबNavigatorState.pop()
एपीआई का इस्तेमाल करके,NavController
को यह बताता है कि सिस्टम के बैक बटन को दबाकर या डायलॉग बॉक्स के बाहर क्लिक करके, डायलॉग बॉक्स को कब खारिज किया गया. इससे यह पक्का होता है किNavController
की स्थिति, नेविगेटर की स्थिति के साथ हमेशा सिंक रहती है. (I2ead9)onDestinationChanged
कॉलबैक की मदद सेOnDestinationChangedListeners
की सूची में बदलाव करने पर, नेविगेशन अबConcurrentModificationException
नहीं दिखाता. (Ib1707, b/188860458)Kotlin में निर्देश प्रॉपर्टी जनरेट करने की कोशिश करते समय, अब सेफ़ आर्ग्युमेंट क्रैश नहीं होता. (Id2416, b/188564435)
NavDestination पर setId तरीके को अब
@IdRes
के साथ सही तरीके से एनोटेट किया गया है, ताकि यह सिर्फ़ रिसॉर्स आईडी स्वीकार करे. (I69b80)findNode
का int पैरामीटर अबresid
के बजायresId
है. (I7711d)
डिपेंडेंसी अपडेट
- Safe-Args अब Android Gradle प्लग इन 4.2.0 पर निर्भर करता है. इसका मतलब है कि अब आपको
applicationIdTextResource
का इस्तेमाल करने से जुड़ी चेतावनी नहीं मिलेगी. (I6d67b, b/172824579)
वर्शन 2.4.0-alpha01
18 मई, 2021
androidx.navigation:navigation-*:2.4.0-alpha01
रिलीज़ हो गया है. 2.4.0-alpha01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
NavController
परcurrentBackStackEntryAsFlow()
तरीका, एकFlow
उपलब्ध कराता है. यहFlow
तब इमिट होता है, जब मौजूदाNavBackStackEntry
में बदलाव होता है. इस फ़्लो का इस्तेमाल,OnDestinationChangedListener
को मैन्युअल तरीके से मैनेज करने के विकल्प के तौर पर किया जा सकता है. (I19c4a, #89, b/163947280)
एक से ज़्यादा बैक स्टैक
NavController, डेस्टिनेशन के बैक स्टैक को मैनेज करने के लिए ज़िम्मेदार होता है. जब किसी डेस्टिनेशन पर navigate()
किया जाता है, तो उसे बैक स्टैक में जोड़ दिया जाता है. साथ ही, popBackStack()
को कॉल करने या सिस्टम के बैक बटन को ट्रिगर करने पर, उसे हटा दिया जाता है. बैक स्टैक को सेव और वापस लाने की सुविधा देने के लिए, नेविगेशन ग्राफ़ एक्सएमएल में मौजूदा NavOptions
क्लास और <action>
एंट्री को इंटिग्रेट किया गया है. (b/80029773)
इस बदलाव के तहत, onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
, और NavigationView.setupWithNavController()
के NavigationUI
तरीके अब पॉप किए गए डेस्टिनेशन की स्थिति को अपने-आप सेव और वापस लाते हैं. इससे, कोड में कोई बदलाव किए बिना, एक से ज़्यादा बैक स्टैक के लिए सहायता मिलती है. फ़्रैगमेंट के साथ नेविगेशन का इस्तेमाल करते समय, कई बैक स्टैक के साथ इंटिग्रेट करने का यह सुझाया गया तरीका है. (Ie07ca)
स्टेटस को सेव और वापस लाने के लिए, कई प्लैटफ़ॉर्म पर एपीआई उपलब्ध कराए जाते हैं:
नेविगेशन एक्सएमएल में,
<action>
एलिमेंट अबapp:popUpToSaveState
औरapp:restoreState
के बूलियन एट्रिब्यूट का इस्तेमाल कर सकता है. इससे,app:popUpTo
की मदद से पॉप किए गए किसी भी डेस्टिनेशन की स्थिति सेव की जा सकती है. साथ ही,app:destination
के तौर पर पास किए गए डेस्टिनेशन की स्थिति को वापस लाया जा सकता है:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
navOptions
Kotlin DSL में,popUpTo
बिल्डर परrestoreState
बूलियन प्रॉपर्टी औरsaveState
बूलियन प्रॉपर्टी जोड़ी जा सकती है:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
NavOptions.Builder
की मदद से, मैन्युअल तरीके सेNavOptions
ऑब्जेक्ट बनाने के लिए,setPopUpTo()
के लिएsetRestoreState()
और नए ओवरलोड का इस्तेमाल किया जा सकता है. यह ओवरलोड, एक अतिरिक्तsaveState
पैरामीटर लेता है.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
प्रोग्राम के हिसाब से
popBackStack()
को किए जाने वाले कॉल में अबsaveState
पैरामीटर जोड़ा जा सकता है.
सभी मामलों में, NavController
हर NavBackStackEntry
की स्थिति को सेव करेगा और पहले जैसा करेगा. इसमें नेविगेशन डेस्टिनेशन के दायरे वाले ViewModel
इंस्टेंस शामिल हैं. Navigator
एपीआई को अपडेट किया गया है, ताकि हर Navigator
अपनी स्थिति को सेव और वापस ला सके.
नेविगेशन कंपोज़ में composable
डेस्टिनेशन के लिए इस्तेमाल किए गए ComposeNavigator
और नेविगेशन में फ़्रैगमेंट के साथ <fragment>
डेस्टिनेशन के लिए इस्तेमाल किए जाने वाले FragmentNavigator
और DynamicFragmentNavigator
को अपडेट कर दिया गया है. ऐसा इसलिए किया गया है, ताकि नए Navigator API का इस्तेमाल किया जा सके. साथ ही, स्टेटस सेव और पहले जैसा किया जा सके.
नेविगेशन वाले रास्ते
route एक ऐसा String
होता है जो किसी डेस्टिनेशन की खास पहचान करता है. पहले इस कॉन्सेप्ट का इस्तेमाल सिर्फ़ Navigation Compose में किया जाता था. हालांकि, अब इसे नेविगेशन एपीआई के मुख्य हिस्से के तौर पर इस्तेमाल किया जा सकता है. इससे, नेविगेशन Kotlin DSL की मदद से ग्राफ़ बनाते समय, पूर्णांक आईडी का इस्तेमाल करने का विकल्प मिलता है. (b/172823546)
जिन एपीआई में सिर्फ़ आईडी डाला जाता था उनमें अब एक और ओवरलोड है, जिसमें रूट String
डाला जाता है. इसमें navigate()
, popBackStack()
, popUpTo()
, और getBackStackEntry()
शामिल हैं.
इसमें एपीआई के कुछ असर पड़ा है:
- Kotlin DSL पर
popUpTo
kotlin प्रॉपर्टी को अबpopUpToId
के पक्ष में रोक दिया गया है. (I59c73, b/172823546) getStartDestination()
एपीआई को बंद कर दिया गया है और अबgetStartDestinationId()
का इस्तेमाल किया जा रहा है. (I0887f, b/172823546)
उन डेवलपर के लिए जो नेविगेशन कंपोज़िशन के पिछले वर्शन से नेविगेशन कंपोज़ 2.4.0-alpha01
में अपग्रेड कर रहे हैं, इसका मतलब है कि एक्सटेंशन के तरीकों पर नीचे दिए गए इंपोर्ट की अब ज़रूरत नहीं है और इन्हें हटा दिया जाना चाहिए:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
KEY_ROUTE
आर्ग्युमेंट को NavDestination
पर route
प्रॉपर्टी से बदल दिया गया है. इससे, navBackStackEntry.destination.route
को सीधे तौर पर कॉल किया जा सकता है.
एपीआई में बदलाव
- सभी नेविगेशन आर्टफ़ैक्ट को Kotlin में फिर से लिखा गया है. इससे, जेनरिक (जैसे,
NavType
सबक्लास) का इस्तेमाल करने वाली क्लास के लिए, वैल्यू न होने की स्थिति को बेहतर बनाया गया है.-ktx
आर्टफ़ैक्ट का हिस्सा रहे सभी Kotlin एक्सटेंशन फ़ंक्शन, उनके मुख्य आर्टफ़ैक्ट में ले जा दिए गए हैं.-ktx
आर्टफ़ैक्ट पब्लिश होते रहेंगे, लेकिन वे पूरी तरह से खाली होंगे. (b/184292145) NavDeepLinkBuilder
अब जनरेट किए गए बैक स्टैक में, एक से ज़्यादा अलग-अलग डेस्टिनेशन जोड़ने की सुविधा देता है. (I3ee0d, b/147913689)DynamicNavHostFragment
(Icd515, b/175222619) के लिए फ़ैक्ट्री फ़ंक्शन जोड़नाNavBackStackEntry
का यूनीक आईडी अब उसके सार्वजनिक एपीआई के हिस्से के तौर पर दिखाया जाता है. (Ie033a)name
औरargument
फ़ील्ड औरNamedNavArgument
के डीस्ट्रक्चरिंग फ़ंक्शन अब सार्वजनिक हैं. (#174, b/181320559)- नया
NavBackStackEntry#provideToCompositionLocals
एक्सटेंशन जोड़ा गया है, जो काम के कंपोज़िशन लोकल के लिएNavBackStackEntry
उपलब्ध कराता है. (#175, b/187229439)
Safe Args
Safe Args अब हर
NavArgs
क्लास के लिएfromSavedStateHandle()
तरीका जनरेट करता है. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
KotlinPoet
1.8.0
पर निर्भर करने के लिए, Safe Args को अपडेट किया गया. (#172, b/183990444)
व्यवहार में बदलाव
- नेविगेशन अब लाइफ़साइकल
2.3.1
पर निर्भर करता है. साथ ही, अबNavBackStackEntry
Lifecycle
को अपडेट करने वाले तरीकों,setGraph()
,popBackStack()
,navigateUp()
, औरnavigate()
को@MainThread
के तौर पर मार्क करता है. इससे नेविगेशन को लाइफ़साइकल2.3.0
में शुरू किए गए मुख्य थ्रेड लागू करने की सुविधा के साथ अलाइन किया जाता है. (b/171125856) - डीप लिंक से एनम आर्ग्युमेंट को पार्स करने की सुविधा अब केस-इनसेंसिटिव है. इसकी मदद से,
http://www.example.com/red
जैसे डीप लिंक कोwww.example.com/{color}
जैसे डीप लिंक से मैच किया जा सकता है. भले ही, एनम की वैल्यूRED
हो. (#152, b/135857840)
Compose के साथ काम करने वाले डिवाइस
androidx.navigation:navigation-compose:2.4.0-alpha01
, सिर्फ़ कंपोज़ वर्शन1.0.0-beta07
और इसके बाद के वर्शन के साथ काम करता है.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक किया गया है जिसके तहत आने वाले आर्ग्युमेंट प्लेसहोल्डर को उन डीप लिंक के मुकाबले प्राथमिकता दी जाएगी जिनका सफ़िक्स, मैच कराने के दौरान मिलता है. (#153, b/184072811)
NavHostFragment
अब कस्टम नेविगेटर के साथ काम करता है. ये नेविगेटर, डिफ़ॉल्टDialogFragmentNavigator
के तौर पर उसी@Navigator.Name("dialog")
का इस्तेमाल करते हैं. (Ib1c2c, b/175979140)NavigatorProvider#addNavigator
के काम करने के तरीके को बेहतर बनाया गया है, ताकि एक ही इंस्टेंस के साथ बार-बार कॉल करने पर कोई समस्या न हो. (#176, b/187443146)
बाहरी योगदान
- सेफ़ आर्ग के लिए, हर
NavArgs
क्लास के लिएfromSavedStateHandle()
तरीका जनरेट करने में मदद करने के लिए, simonschiller को धन्यवाद. (#122, b/136967621) - डीप लिंक से Enum आर्ग्युमेंट को पार्स करने के लिए, केस-इनसेंसिटिव बनाने के लिए Bradleycorn को धन्यवाद. (#152, b/135857840)
- osipxd को धन्यवाद, उन्होंने उस समस्या को ठीक किया है जिसमें आखिर में मौजूद आर्ग्युमेंट प्लेसहोल्डर, उन डिप लिंक से ज़्यादा प्राथमिकता पाते थे जिनका सफ़िक्स पूरी तरह से मैच होता था. (#153, b/184072811)
- KotlinPoet
1.8.0
पर निर्भर करने के लिए, Safe Args को अपडेट करने के लिए tatocaster का धन्यवाद. (#172, b/183990444) name
औरargument
फ़ील्ड औरNamedNavArgument
के डीस्ट्रक्चरिंग फ़ंक्शन को सार्वजनिक करने के लिए, jossiwolf को धन्यवाद. (#174, b/181320559)- जोसिवुल्फ़ ने एक नया
NavBackStackEntry#provideToCompositionLocals
एक्सटेंशन पेश किया है. इससे संबंधित कंपोज़िशन के स्थानीय लोगों कोNavBackStackEntry
की सुविधा मिलती है. इसे पेश करने के लिए धन्यवाद. (#175, b/187229439) NavigatorProvider#addNavigator
के काम करने के तरीके को बेहतर बनाने के लिए धन्यवाद jossiwolf. इससे यह पक्का किया जा सकेगा कि एक ही इंस्टेंस के साथ बार-बार कॉल करने पर कोई समस्या न हो. (#176, b/187443146)
नेविगेशन कंपोज़िशन वर्शन 1.0.0
वर्शन 1.0.0-alpha10
7 अप्रैल, 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
रिलीज़ हो गया है. वर्शन 1.0.0-alpha10 में ये कमियां हैं.
एपीआई में हुए बदलाव
NavHost
अबModifier
स्वीकार करता है. इसे, डेस्टिनेशन कॉम्पोज़ेबल को रैप करने वाले कॉम्पोज़ेबल कंटेनर को पास किया जाता है. (I85aca, b/175125483)
गड़बड़ियां ठीक की गईं
NavHost
अब तब भी काम करता है, जबOnBackPressedDispatcherOwner
नहीं मिलता. ऐसाNavHost
की झलक देखते समय होता है. (I7d8b4)- नेविगेशन कंपोज़ अब नेविगेशन
2.3.5
पर निर्भर करता है. इससे,NavHost
डेस्टिनेशन मेंBackHandler
का इस्तेमाल करते समय आने वाली समस्या को ठीक किया गया है. (I7e63b, b/182284739)
वर्शन 1.0.0-alpha09
10 मार्च, 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
रिलीज़ हो गया है. 1.0.0-alpha09 वर्शन में ये बदलाव शामिल हैं.
एपीआई में बदलाव
LocalViewModelStoreOwner.current
अब एक ऐसाViewModelStoreOwner
दिखाता है जिसे शून्य पर सेट किया जा सकता है. इससे यह तय करने में मदद मिलती है कि मौजूदा कॉम्पोज़िशन मेंViewModelStoreOwner
उपलब्ध है या नहीं. जिन एपीआई के लिएViewModelStoreOwner
की ज़रूरत होती है, जैसे किviewModel()
औरNavHost
, अगरViewModelStoreOwner
सेट नहीं है, वे अपवाद भी बना सकते हैं. (Idf39a)
गड़बड़ियां ठीक की गईं
- नेविगेशन कंपोज अब Navigation 2.3.4 पर निर्भर करता है. इसमें ग्राफ़ सेट होने के बाद, एक ही ViewModelStore ऑब्जेक्ट को सेट करने की कोशिश करने से जुड़ी समस्या को ठीक किया गया है. (I65c24, b/177825470)
वर्शन 1.0.0-alpha08
24 फ़रवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
रिलीज़ हो गया है. वर्शन 1.0.0-alpha08 में ये कमियां हैं.
नई सुविधाएं
NavHost
अबLocalSavedStateRegistryOwner
CompositionLocal को उस डेस्टिनेशन केNavBackStackEntry
से पॉप्युलेट करता है. इससे यह पक्का होता है किSavedStateRegistry
में सीधे सेव की गई कोई भी स्थिति, डेस्टिनेशन के साथ सेव और वापस लाई जाएगी. (I435d7, b/179469431)
वर्शन 1.0.0-alpha07
10 फ़रवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
रिलीज़ हो गया है. 1.0.0-alpha07 वर्शन में ये बदलाव शामिल हैं.
डिपेंडेंसी से जुड़े अपडेट
composable
डेस्टिनेशन के लिएviewModel()
सहायता उपलब्ध कराने के लिए, नेविगेशन कंपोज़िशन अब लाइफ़साइकल व्यूमॉडल कंपोज़ 1.0.0-alpha01 पर निर्भर करती है. (I7a374)NavHost
अबNavController
पर सेट किए गएOnBackPressedDispatcher
को पाने के लिए, Activity-Compose 1.3.0-alpha01 के नएLocalOnBackPressedDispatcherOwner
का इस्तेमाल करता है. (I65b12)
वर्शन 1.0.0-alpha06
28 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
रिलीज़ हो गया है. 1.0.0-alpha06 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
NavController
परgetBackStackEntry(route: String)
एक्सटेंशन का तरीका जोड़ा गया है, जो उससे जुड़ाNavBackStackEntry
दिखाता है. (If8931)
वर्शन 1.0.0-alpha05
13 जनवरी, 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
रिलीज़ हो गया है. 1.0.0-alpha05 वर्शन में ये बदलाव शामिल हैं.
Compose 1.0.0-alpha10 के हिसाब से अपडेट किया गया.
वर्शन 1.0.0-alpha04
16 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
रिलीज़ हो गया है. 1.0.0-alpha04 वर्शन में ये बदलाव शामिल हैं.
- Compose
1.0.0-alpha09
के साथ काम करने के लिए अपडेट किया गया.
वर्शन 1.0.0-alpha03
2 दिसंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
रिलीज़ हो गया है. 1.0.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- उस समस्या को ठीक कर दिया गया है जिसकी वजह से
popBackStack()
औरnavigateUp()
, कॉन्फ़िगरेशन में बदलाव करने या मौत और मनोरंजन के प्रोसेस को प्रोसेस करने के बाद काम नहीं करते थे. (Icea47, b/173281473) - अब अपने NavHost में नेस्ट किए गए ग्राफ़ पर नेविगेट करने की सुविधा सही तरीके से काम करती है. (I0948d, b/173647694)
वर्शन 1.0.0-alpha02
11 नवंबर, 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
रिलीज़ हो गया है. 1.0.0-alpha02 वर्शन में ये बदलाव शामिल हैं.
एपीआई में हुए बदलाव
- नेविगेशन कंपोज़ की सुविधा अब NavOptions का इस्तेमाल करके भी पॉप-अप टू और लॉन्च सिंगल टॉप ऑपरेशन का इस्तेमाल करती है (If96c3, b/171468994)
- नेविगेशन फ़ंक्शन जोड़ा गया है, जो आईडी के बजाय रास्ता लेता है. इससे नेविगेशन कंपोज डीएसएल में नेस्ट किए गए ग्राफ़ बनाए जा सकते हैं. (I1661d)
- startDestination अब NavHost (Ie620e) के पैरामीटर की सूची में, route से पहले आता है
- अब NavHost कंपोज़ेबल के बाहर, स्टार्ट डेस्टिनेशन के तौर पर रूट का इस्तेमाल करके ग्राफ़ बनाया जा सकता है. (Iceb75)
वर्शन 1.0.0-alpha01
28 अक्टूबर, 2020
android.navigation:navigation-compose:1.0.0-alpha01
रिलीज़ हो गया है. 1.0.0-alpha01 वर्शन में ये कमिट शामिल हैं.
नई सुविधाएं
navigation-compose
आर्टफ़ैक्ट, नेविगेशन कॉम्पोनेंट और Jetpack Compose के बीच इंटिग्रेशन उपलब्ध कराता है. यह आपके ऐप्लिकेशन में डेस्टिनेशन के तौर पर @Composable
फ़ंक्शन का इस्तेमाल करता है.
इस शुरुआती रिलीज़ में ये सुविधाएं मिलती हैं:
NavHost
कंपोज़ेबल, जो आपको Kotlin DSL के ज़रिए नेविगेशन ग्राफ़ बनाने की अनुमति देता है.- डेस्टिनेशन लेवल पर लाइफ़साइकल,
ViewModel
, और याद रखी गई स्थिति का दायरा. - सिस्टम के 'वापस जाएं' बटन के साथ अपने-आप इंटिग्रेट होना.
- आर्ग्युमेंट पास करने, डेस्टिनेशन में डीप लिंक अटैच करने, और पिछले डेस्टिनेशन पर नतीजा दिखाने के लिए सहायता.
- होइस्टिंग स्टेटस की अनुमति देने और
NavController
कोNavHost
के बाहर के कॉम्पोज़ेबल (जैसे, सबसे नीचे मौजूद नेविगेशन बार) से कनेक्ट करने के लिए,rememberNavController()
औरcurrentBackStackEntryAsState()
में खास हेल्पर बनाएं.
ज़्यादा जानकारी के लिए नेविगेशन गाइड लिखें देखें.
वर्शन 2.3.5
वर्शन 2.3.5
7 अप्रैल, 2021
androidx.navigation:navigation-*:2.3.5
रिलीज़ हो गया है. 2.3.5 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
NavDeepLinkRequest
याUri
का इस्तेमाल करके नेविगेट करते समय, अबKEY_DEEP_LINK_INTENT
के ज़रिए आर्ग्युमेंट से इंटेंट पाकर, नतीजे वाले डेस्टिनेशन मेंUri
, कार्रवाई, और MIME टाइप को ऐक्सेस किया जा सकता है. यह सुविधा, बाहरी डीप लिंकिंग के लिए पहले से उपलब्ध है. (I975c3, b/181521877)
गड़बड़ियां ठीक की गईं
OnBackPressedCallbacks
कोNavBackStackEntry
के साथ डिस्पैचर में जोड़ा गया है, क्योंकि LifecycleOwner अब ऐक्टिविटी लाइफ़साइकल केSTOPPED
के बाद,STARTED
के बाद ठीक से इंटरसेप्ट करता है (Iff94f, b/182284739)- डीप लिंक डोमेन पार्सिंग अब केस-इनसेंसिटिव है. इससे यह पक्का होता है कि
www.example.com
,www.example.com
औरwww.Example.com
, दोनों से मेल खाता है. ध्यान दें कि क्वेरी पैरामीटर के नाम अब भी केस सेंसिटिव हैं. (#144, b/153829033) NullPointerException
से जुड़ी एक समस्या को ठीक किया गया. यह समस्या तब आ सकती है, जब किसी डेस्टिनेशन में ऐसे कई डिफ़ॉल्ट आर्ग्युमेंट हों जिनकी वैल्यू नहीं दी जा सकती. साथ ही, जब उन आर्ग्युमेंट के सबसेट को बदलते हुए उस डेस्टिनेशन पर नेविगेट किया जाता है. (aosp/1644827)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन Safe Args Gradle प्लग इन अब Kotlin Gradle प्लग इन 1.4.31 पर निर्भर करता है. (aosp/1661058, b/181156413)
बाहरी योगदान
- डीप लिंक डोमेन को केस-इनसेंसिटिव के तौर पर पार्स करने के लिए, पुल रिक्वेस्ट करने वाले
bentrengrove
को धन्यवाद. (#144, b/153829033)
वर्शन 2.3.4
वर्शन 2.3.4
10 मार्च, 2021
androidx.navigation:navigation-*:2.3.4
रिलीज़ हो गया है. वर्शन 2.3.4 में ये कमिट हैं.
नई सुविधाएं
ReferenceType
अब डीपलिंक यूआरआई के हिस्से के तौर पर भेजे जाने पर, आर्ग्युमेंट को सही तरीके से पार्स किया जा सकता है. यह रॉ इंटिजर वैल्यू के साथ-साथ,0x
से शुरू होने वाली हेक्स वैल्यू के साथ भी काम करता है. (#127, b/179166693)app:argType="float"
वाले आर्ग्युमेंट के लिएandroid:defaultValue
, अब पूर्णांक की डिफ़ॉल्ट वैल्यू के साथ काम करता है. इससे, आपको0.0
के बजायandroid:defaultValue="0"
का इस्तेमाल करने की सुविधा मिलती है. (#117, b/173766247)
गड़बड़ियां ठीक की गईं
- डाइनैमिक सुविधाओं के लिए, नेविगेशन की सहायता का इस्तेमाल करते समय, इंस्टॉलेशन की प्रोग्रेस रुकने की समस्या को ठीक करना. (Ib27a7, b/169636207)
- पहले से सेट किए गए ऑब्जेक्ट वाले
setViewModelStore
याsetLifecycleOwner
को कॉल करने पर, उसे नो-ऑप (Idf491, b/177825470) माना जाएगा - Safe-Args अब java का इस्तेमाल करते समय, सही तरीकों पर 'एनोटेशन को दबाएं' एनोटेशन जोड़ता है. (I8fbc5, b/179463137)
बाहरी योगदान
- पुल अनुरोध करने के लिए
JvmName
को धन्यवाद. इससे यह पक्का किया जा सकेगा कि डीपलिंक यूआरआई के हिस्से के तौर पर भेजे जाने पर,ReferenceType
आर्ग्युमेंट को सही तरीके से पार्स किया जा सकता है. (#127, b/179166693) app:argType=”float”
के साथ किसी आर्ग्युमेंट के लिएdefaultValue
की अनुमति देने के लिए, पुल अनुरोध करने के लिए धन्यवादtatocaster
. अब पूर्णांक की डिफ़ॉल्ट वैल्यू काम करती हैं. (#117, b/173766247)
वर्शन 2.3.3
वर्शन 2.3.3
27 जनवरी, 2021
androidx.navigation:navigation-*:2.3.3
रिलीज़ हो गया है. वर्शन 2.3.3 में ये कमियां शामिल हैं.
गड़बड़ियां ठीक की गईं
Lifecycle
कोCREATED
पर ले जाने से पहले,NavBackStackEntry
को पॉप-अप करने पर कोई क्रैश नहीं होगा. (Ie3ba3)- b/171364502 की वजह से होने वाले रिग्रेशन को ठीक किया गया. इसमें,
0
की ऐनिमेशन रिसॉर्स वैल्यू वाली गतिविधि पर नेविगेट करने पर,ResourceNotFoundException
का पता चला था. (I7aedb, b/176819931)
वर्शन 2.3.2
वर्शन 2.3.2
2 दिसंबर, 2020
androidx.navigation:navigation-*:2.3.2
रिलीज़ हो गया है. 2.3.2 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
NavigationUI
में एक समस्या को ठीक किया गया है. इस समस्या की वजह से,onNavDestinationSelected
के साथ<activity>
डेस्टिनेशन का इस्तेमाल करने पर, गतिविधि पर नेविगेट नहीं किया जा सकता था. (I22e34, b/171364502)navigation-dynamic-features-fragment
की वजह से, नए तौर पर इंस्टॉल किए गए डेस्टिनेशन पर कई बार नेविगेट होने की समस्या को ठीक किया गया है. (aosp/1486056, b/169636207)- उस समस्या को ठीक किया गया है जिसकी वजह से
launchSingleTop
का इस्तेमाल करते समय,OnDestinationChangedListener
इंस्टेंस को डिफ़ॉल्ट आर्ग्युमेंट नहीं भेजे जा सकते. (I2c5cb) - नेस्ट किए गए नेविगेशन ग्राफ़ पर नेविगेट करने पर, बैक स्टैक पर नया ग्राफ़ इंस्टेंस न बनने की समस्या को ठीक किया गया. (Ifc831)
- नेविगेशन ग्राफ़ में आखिरी डेस्टिनेशन हटाने वाले
popUpTo
के साथnavigate()
का इस्तेमाल करने पर, नेविगेशन ग्राफ़ को तुरंत नष्ट नहीं किया जाता था और न ही उसे बैक स्टैक से हटाया जाता था. इस समस्या को ठीक कर दिया गया है. (I910a3) - नेविगेशन SafeArgs में अब KotlinPoet वर्शन 1.7.2 इस्तेमाल किया जा रहा है, जो Kotlin के एक्सप्लिसिट एपीआई मोड के साथ काम करता है. (I918b5)
NavHostFragment.findNavController(Fragment)
अब फ़्रैगमेंट हैरारकी और फ़्रैगमेंट के व्यू हैरारकी की मौजूदा जांच के अलावा, DialogFragment के रूट डेकोर व्यू की भी जांच करता है. इसकी मदद से,FragmentScenario
औरNavigation.setViewNavController()
के साथ नेविगेशन का इस्तेमाल करने वाले डायलॉग फ़्रैगमेंट की जांच की जा सकती है. (I69e0d)
वर्शन 2.3.1
वर्शन 2.3.1
14 अक्टूबर, 2020
androidx.navigation:navigation-*:2.3.1
रिलीज़ हो गया है. 2.3.1 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- नेविगेशन यूज़र इंटरफ़ेस (यूआई) में डिफ़ॉल्ट ऐनिमेशन संसाधन जोड़े गए हैं. साथ ही, डिफ़ॉल्ट ऐनिमेशन संसाधनों के बजाय, इनका इस्तेमाल करने का सुझाव दिया जाता है. (b/167430145)
- NavOptions अब हैशकोड और equals तरीकों को बदल देता है (b/161586466)
- नेविगेशन में अब “आईडी वाला कोई डेस्टिनेशन नहीं है” IllegalArgumentException में मौजूदा डेस्टिनेशन शामिल है. इससे डेवलपर को डीबग करने का बेहतर अनुभव मिलेगा. (b/168311416)
गड़बड़ियां ठीक की गईं
- सेफ़ आर्ग्युमेंट, रिटर्न लाइन को रैप नहीं करेगा. भले ही, जनरेट की गई आर्ग्युमेंट क्लास का नाम 100 वर्णों से ज़्यादा का हो. (b/168584987)
डिपेंडेंसी में बदलाव
navigation-ui
अब DrawerLayout 1.1.1 पर निर्भर करता है. इससे यह पक्का होता है किLOCK_MODE_LOCKED_CLOSED
याLOCK_MODE_LOCKED_OPEN
का इस्तेमाल करने पर भी,NavigationUI
ड्रॉवर खोल पाए. (b/162253907)- Safe Args अब KotlinPoet 1.6.0 (aosp/1435911) पर निर्भर करता है
- Safe Args अब AGP 4.0.1 (aosp/1442337) पर निर्भर करता है
वर्शन 2.3.0
वर्शन 2.3.0
24 जून, 2020
androidx.navigation:navigation-*:2.3.0
रिलीज़ हो गया है. 2.3.0 वर्शन में ये बदलाव शामिल हैं.
2.2.0 के बाद किए गए मुख्य बदलाव
- सुविधा वाले मॉड्यूल का इंटिग्रेशन:
navigation-dynamic-features-runtime
औरnavigation-dynamic-features-fragment
आर्टफ़ैक्ट की मदद से, सुविधा वाले मॉड्यूल में तय किए गए डेस्टिनेशन पर नेविगेट किया जा सकता है. साथ ही, ज़रूरत के हिसाब से सुविधा वाले मॉड्यूल के इंस्टॉलेशन को अपने-आप मैनेज किया जा सकता है. ज़्यादा जानकारी के लिए, सुविधा वाले मॉड्यूल की मदद से नेविगेट करना देखें. - नेविगेशन टेस्टिंग:
navigation-testing
आर्टफ़ैक्ट,TestNavHostController
उपलब्ध कराता है. इसकी मदद से, मौजूदा डेस्टिनेशन सेट किया जा सकता है और नेविगेशन ऑपरेशन के बाद बैक स्टैक की पुष्टि की जा सकती है. ज़्यादा जानकारी के लिए टेस्ट नेविगेशन देखें. - नतीजा दिखाना: नेविगेशन बैक स्टैक पर हर डेस्टिनेशन से जुड़े
NavBackStackEntry
की मदद से, अबSavedStateHandle
को ऐक्सेस किया जा सकता है. यहSavedStateHandle
, सेव की गई छोटी-मोटी स्थिति को सेव करने के लिए सही होता है. यह स्थिति, बैक स्टैक की किसी खास एंट्री से जुड़ी होनी चाहिए. ज़्यादा जानकारी के लिए, नतीजे को पिछले डेस्टिनेशन पर भेजना लेख पढ़ें. Openable
के लिएNavigationUI
का इस्तेमाल:NavigationUI
मेंDrawerLayout
के सभी इस्तेमाल को, CustomView1.1.0
में जोड़े गए ज़्यादा सामान्यOpenable
इंटरफ़ेस से बदल दिया गया है. साथ ही, DrawerLayout1.1.0
मेंDrawerLayout
के ज़रिए लागू किया गया है.- डीप लिंक में ऐक्शन और MIME टाइप के साथ काम करने की सुविधा: डीप लिंकिंग की सुविधा को पहले से उपलब्ध
app:uri
के अलावा,app:action
औरapp:mimeType
के साथ काम करने के लिए बढ़ाया गया है.NavController
अब नईNavDeepLinkRequest
क्लास के ज़रिए इन फ़ील्ड के किसी भी कॉम्बिनेशन में नेविगेट करने की सुविधा देता है. ज़्यादा जानकारी के लिए, NavDeepLinkRequest का इस्तेमाल करके नेविगेट करना लेख पढ़ें.
आम समस्याएं
- मेनिफ़ेस्ट मर्जर में, डीप लिंक ऐक्शन और एमआईएम टाइप के लिए सहायता अभी उपलब्ध नहीं है. जब तक यह काम पूरा नहीं हो जाता, तब तक आपके मेनिफ़ेस्ट में
<nav-graph>
एलिमेंट से जनरेट किए गए किसी भी<intent-filter>
एलिमेंट के<data>
एलिमेंट या कस्टम<action>
में, आपका mime टाइप शामिल नहीं होगा. आपको अपने मेनिफ़ेस्ट में, मैन्युअल तरीके से सही<intent-filter>
जोड़ना होगा.
वर्शन 2.3.0-rc01
10 जून, 2020
androidx.navigation:navigation-*:2.3.0-rc01
रिलीज़ हो गया है. वर्शन 2.3.0-rc01 में ये कमिट हैं.
गड़बड़ियां ठीक की गईं
- डेस्टिनेशन के एक इंस्टेंस को
singleTop
वाले किसी दूसरे इंस्टेंस के साथ आर्ग्युमेंट के साथ बदलते समय,NullPointerException
को ठीक किया गया. (b/158006669) NavController
से मिलने वाले सभीdestination is unknown
अपवादों में अब डीबग करने से जुड़ी ज़्यादा जानकारी है. इससेNavController
की स्थिति का पता लगाने में मदद मिलती है. (b/157764916)
वर्शन 2.3.0-beta01
20 मई, 2020
androidx.navigation:navigation-*:2.3.0-beta01
रिलीज़ हो गई हैं. 2.3.0-beta01 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसकी वजह से, प्रोसेस के बंद होने के बाद
NavBackStackEntry
काLifecycle
सही तरीके से अपडेट नहीं होता था. (b/155218371) setGraph()
को कॉल करने से पहले रजिस्टर किए गएOnDestinationChangedListener
इंस्टेंस, प्रोसेस के बंद होने के बाद वापस लाए गए डेस्टिनेशन को सही तरीके से भेज दिए जाएंगे. (b/155218371)singleTop
का इस्तेमाल करने पर,NavBackStackEntry
के आर्ग्युमेंट अब सही तरीके से अपडेट हो जाते हैं. साथ ही, अपडेट किए गए आर्ग्युमेंट सभीOnDestinationChangeListener
इंस्टेंस को भेज दिए जाते हैं. (b/156545508)
डिपेंडेंसी से जुड़े अपडेट
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
अब CustomView1.1.0-alpha02
में पेश किए गएOpenable
इंटरफ़ेस का इस्तेमाल करता है. यह इंटरफ़ेस,DrawerLayout
को DrawerLayout1.1.0-alpha04
के तौर पर लागू करता है. इससे,NavigationUI
के साथOpenable
के कस्टम तरीके का इस्तेमाल किया जा सकता है.AppBarConfiguration
(b/129030452)
गड़बड़ियां ठीक की गईं
navigation-common-ktx
ProGuard नियम अब सिर्फ़NavArgs
क्लास को सही तरीके से सेव रखते हैं, न कि सभीNavArgs
इंस्टेंस का. (b/150213558)
डिपेंडेंसी में बदलाव
- नेविगेशन को Core
1.2.0
पर निर्भर होने से रोकने के लिए, इसे Core1.1.0
पर निर्भर किया गया है. ऐसा इसलिए किया गया है, ताकि डेवलपर को किसी नई डिपेंडेंसी पर स्विच करने के लिए मजबूर न किया जाए. ऐसा तब किया जाता है, जब नेविगेशन, Core1.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=””
वाला डेस्टिनेशन) को अनदेखा नहीं करता है और अब शीर्षक को सही तरीके से खाली स्ट्रिंग पर सेट करता है. इसे पहले Navigation 2.3.0-alpha04 में रिलीज़ किया गया था. (b/148679860)navigation-common-ktx
ProGuard के नियम अब सभीNavArgs
इंस्टेंस के बजाय, सिर्फ़ इस्तेमाल की गईNavArgs
क्लास को सही तरीके से सेव करते हैं. इसे पहले Navigation 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-common-ktx
मॉड्यूल में अब मेनिफ़ेस्ट पैकेज का यूनीक नाम है. यह नाम,navigation-runtime-ktx
मॉड्यूल के मेनिफ़ेस्ट पैकेज के नाम से अलग है. (aosp/1141947)
डिपेंडेंसी से जुड़े अपडेट
- नेविगेशन
2.2.1
अब लाइफ़साइकल ViewModel सेव की गई स्थिति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
शामिल होता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए आर्ग्युमेंट भी शामिल होते हैं. - लाइफ़साइकल ViewModel सेव की गई स्थिति का इंटिग्रेशन:
SavedStateViewModelFactory
अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमालby navGraphViewModels()
याViewModelProvider
कंस्ट्रक्टर के साथ किया जाता है. यह कंस्ट्रक्टर,NavController.getBackStackEntry()
याNavController.getViewModelStoreOwner()
से वापस मिलने वालेViewModelStoreOwner
के साथ काम करता है. - डीप लिंक के लिए क्वेरी पैरामीटर की सुविधा: क्वेरी पैरामीटर वाले डीप लिंक में, अब क्रम में बदले गए क्वेरी पैरामीटर काम करते हैं. डीप लिंक मैच करते समय, ऐसे आर्ग्युमेंट जो डिफ़ॉल्ट वैल्यू वाले हैं या जिनमें वैल्यू नहीं हो सकती, अब ज़रूरी नहीं हैं.
- ऐनिमेशन के लिए बेहतर सहायता:
NavHostFragment
अब Fragment 1.2.0 सेFragmentContainerView
का इस्तेमाल करता है. इससे, ऐनिमेशन की z-ordering से जुड़ी समस्याएं ठीक होती हैं और फ़्रैगमेंट में विंडो इनसेट डिस्पैच होते हैं.
वर्शन 2.2.0-rc04
18 दिसंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc04
रिलीज़ हो गया है. 2.2.0-rc04 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट
1.2.0-rc04
में अडजस्ट किए गए फ़ेड ऐनिमेशन से मैच करने के लिए,navigation-ui
के इस्तेमाल किए गए डिफ़ॉल्ट फ़ेड ऐनिमेशन में बदलाव किया गया. (b/145769814)
वर्शन 2.2.0-rc03
4 दिसंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc03
रिलीज़ हो गया है. 2.2.0-rc03 वर्शन में ये बदलाव शामिल हैं.
गड़बड़ियां ठीक की गईं
- पाथ के आखिरी हिस्से के तौर पर क्वेरी पैरामीटर और आर्ग्युमेंट का इस्तेमाल करते समय, डीप लिंक पार्स करने से जुड़ी एक समस्या को ठीक किया गया. इस समस्या की वजह से, फ़ाइनल पाथ आर्ग्युमेंट के एक से ज़्यादा वर्ण पार्स नहीं हो पाते थे. (b/144554689)
- डीप लिंक पार्स करने से जुड़ी एक समस्या को ठीक किया गया. इसमें, वैकल्पिक पैरामीटर को
null
के बजाय"@null"
मिलता था. (b/141613546) NavHostFragment
अबFragmentContainerView
के साथ इस्तेमाल करने पर, कॉन्फ़िगरेशन में बदलाव होने के बाद ग्राफ़ को सही तरीके से वापस लाता है. (b/143752103)
डिपेंडेंसी में बदलाव
- नेविगेशन अब लाइफ़साइकल
2.2.0-rc03
, लाइफ़साइकल ViewModel सेव की गई स्थिति1.0.0-rc03
, ऐक्टिविटी1.1.0-rc03
, और फ़्रैगमेंट1.2.0-rc03
पर निर्भर करता है.
वर्शन 2.2.0-rc02
7 नवंबर, 2019
androidx.navigation:navigation-*:2.2.0-rc02
रिलीज़ हो गया है. 2.2.0-rc02 वर्शन में ये बदलाव शामिल हैं.
डिपेंडेंसी में बदलाव
- नेविगेशन अब androidx.lifecycle
2.2.0-rc02
पर निर्भर करता है.
वर्शन 2.2.0-rc01
23 अक्टूबर, 2019
androidx.navigation:navigation-*:2.2.0-rc01
को 2.2.0-beta01
से बिना किसी बदलाव के रिलीज़ किया गया है. 2.2.0-rc01 वर्शन में ये बदलाव शामिल हैं.
वर्शन 2.2.0-beta01
9 अक्टूबर, 2019
androidx.navigation:navigation-*:2.2.0-beta01
रिलीज़ हो गया है. 2.2.0-beta01 वर्शन में ये बदलाव शामिल हैं.
नई सुविधाएं
- डीबग करते समय ज़्यादा मददगार जानकारी देने के लिए,
NavDestination
और उसके सबक्लास अबtoString()
को बदल देते हैं. (b/141264986)
व्यवहार में बदलाव
- डीप लिंक को मैच करते समय, अब अतिरिक्त क्वेरी पैरामीटर को अनदेखा कर दिया जाता है. इससे मैच न होने की समस्या नहीं होती. (b/141482822)
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें, क्वेरी पैरामीटर तय होने पर, डीप लिंक के पाथ में मौजूद आर्ग्युमेंट को अनदेखा कर दिया जाता था. (b/141505755)
- कोई भी अतिरिक्त आइटम न होने पर,
Activity
परnavArgs()
Kotlin एक्सटेंशन में अब गड़बड़ी का बेहतर मैसेज दिखता है. (b/141408999) - Safe Args से जनरेट की गई
Directions
Java क्लास में अब डिफ़ॉल्ट वैल्यू शामिल हैं. (b/141099045) - Safe Args से जनरेट की गई
Args
Java क्लास में अब डिफ़ॉल्ट वैल्यू शामिल होती हैं. (b/140123727) Toolbar
का इस्तेमाल करने पर,NavigationUI
अब दो टॉप लेवल डेस्टिनेशन के बीच जाने पर, टेक्स्ट में हुए बदलाव को ऐनिमेशन के साथ नहीं दिखाता. (b/140848160)
वर्शन 2.2.0-alpha03
18 सितंबर, 2019
androidx.navigation:navigation-*:2.2.0-alpha03
रिलीज़ हो गया है. 2.2.0-alpha03 वर्शन में ये बदलाव शामिल हैं.
व्यवहार में बदलाव
setGraph
को कॉल करने के बादsetViewModelStore()
को कॉल करने पर, अबIllegalStateException
में कॉल होगा. शुरुआती सेटअप के दौरान,NavHost
को हमेशा इसे सेट करना चाहिए. इससे यह पक्का होता है कि सभीNavBackStackEntry
इंस्टेंस के लिए,ViewModel
इंस्टेंस का स्टोरेज एक जैसा हो. (aosp/1111821)
गड़बड़ियां ठीक की गईं
- नेविगेशन ग्राफ़ के दायरे वाले कई अलग-अलग
ViewModelStore
इंस्टेंस से जुड़ेViewModel
इंस्टेंस का इस्तेमाल करते समय,ConcurrentModificationException
को ठीक किया गया. (aosp/1112257)
वर्शन 2.2.0-alpha02
5 सितंबर, 2019
androidx.navigation:navigation-*:2.2.0-alpha02
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- क्वेरी पैरामीटर वाले डीप लिंक, अब फिर से क्रम में लगाए गए क्वेरी पैरामीटर के साथ काम करते हैं. डीप लिंक मैच करते समय, ऐसे आर्ग्युमेंट जिनका डिफ़ॉल्ट मान है या जो शून्य हो सकते हैं, अब उनका इस्तेमाल करना ज़रूरी नहीं है. (b/133273839)
- अब
NavController.getBackStackEntry()
को कॉल करके, बैक स्टैक पर किसी डेस्टिनेशन या नेविगेशन ग्राफ़ का आईडी पास किया जा सकता है.NavBackStackEntry
फ़ंक्शन से मिलने वाले आउटपुट में, नेविगेशन से चलने वालाLifecycleOwner
,ViewModelStoreOwner
(NavController.getViewModelStoreOwner()
से मिलने वाला आउटपुट), औरSavedStateRegistryOwner
शामिल होता है. साथ ही, उस डेस्टिनेशन को शुरू करने के लिए इस्तेमाल किए गए आर्ग्युमेंट भी शामिल होते हैं. (aosp/1101691, aosp/1101710)
गड़बड़ियां ठीक की गईं
IllegalArgumentException
की वजह से,NavHostFragment
कोViewPager2
में नहीं जोड़ने की समस्या ठीक की गई है. (b/133640271)NavInflater
अबgetResourceName()
को बेवजह कॉल करने से बचता है. इससे, डेटा इन्फ़्लेशन में लगने वाला समय 40% तक कम हो जाता है. (b/139213740)
वर्शन 2.2.0-alpha01
7 अगस्त, 2019
androidx.navigation:navigation-*:2.2.0-alpha01
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
नई सुविधाएं
SavedStateViewModelFactory
अब डिफ़ॉल्ट फ़ैक्ट्री है. इसका इस्तेमालby navGraphViewModels()
याNavController.getViewModelStoreOwner()
से दिखाए गएViewModelStoreOwner
के साथViewModelProvider
कंस्ट्रक्टर का इस्तेमाल करते समय किया जाता है. (b/135716331)
एपीआई में हुए बदलाव
- नेविगेशन
2.1.0-rc01
:2.1.0-alpha02
में पेश किए गएNavController
पर, बंद कर दिए गएgetViewModelStore()
एपीआई को हटा दिया गया है. (aosp/1091021)
गड़बड़ियां ठीक की गईं
NavHostFragment
अबFragmentContainerView
का इस्तेमाल करता है. इससे ऐनिमेशन की z-ordering से जुड़ी समस्याएं ठीक होती हैं और फ़्रेगमेंट में विंडो इनसेट डिस्पैच होते हैं. (b/137310379)
वर्शन 2.1.0
वर्शन 2.1.0
5 सितंबर, 2019
androidx.navigation:navigation-*:2.1.0
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
2.0.0 के बाद किए गए अहम बदलाव
- नेविगेशन ग्राफ़ के लिए ViewModel बनाना: अब
-ktx
लाइब्रेरी का इस्तेमाल करने वाले Kotlin उपयोगकर्ताओं के लिए,by navGraphViewModels()
प्रॉपर्टी डेलिगेट का इस्तेमाल करके, नेविगेशन ग्राफ़ लेवल पर स्कोप वाले ViewModel बनाए जा सकते हैं. इसके अलावा,NavController
में जोड़े गएgetViewModelStoreOwner()
एपीआई का इस्तेमाल करके भी ऐसा किया जा सकता है. ज़्यादा जानकारी के लिए, डेस्टिनेशन के बीच यूज़र इंटरफ़ेस (यूआई) से जुड़ा डेटा शेयर करना लेख पढ़ें. - डायलॉग डेस्टिनेशन: अब ऐसे
<dialog>
डेस्टिनेशन बनाए जा सकते हैं जिन परnavigate
करने पर,DialogFragment
दिखेगा.NavHostFragment
में डिफ़ॉल्ट रूप से डायलॉग डेस्टिनेशन की सुविधा काम करती है. ज़्यादा जानकारी के लिए, Dialogफ़्रैगमेंट से डेस्टिनेशन बनाना देखें. - यूआरआई के हिसाब से नेविगेट करना: अब
Uri
का इस्तेमाल करकेnavigate
किया जा सकता है. यह उस<deepLink>
का इस्तेमाल करता है जिसे आपने किसी डेस्टिनेशन पर नेविगेट करने के लिए जोड़ा है. ज़्यादा जानकारी के लिए, यूआरआई का इस्तेमाल करके नेविगेट करना लेख पढ़ें. - NavHostController: पसंद के मुताबिक
NavHost
को बनाने के लिए खास तौर पर इस्तेमाल किए गए एपीआईNavHostController
में ले जाए गए हैं. इससे, लागू किए जाने वाले उनNavController
को होस्ट करने वालेLifecycleOwner
,OnBackPressedDispatcher
, औरViewModelStore
के साथ कनेक्ट किया जा सकता है.
वर्शन 2.1.0-rc01
7 अगस्त, 2019
androidx.navigation:navigation-*:2.1.0-rc01
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
एपीआई में हुए बदलाव
2.1.0-alpha02
में पेश किए गएNavController
पर, बंद कर दिया गयाgetViewModelStore()
एपीआई हटा दिया गया है. (aosp/1091021)
वर्शन 2.1.0-beta02
19 जुलाई, 2019
androidx.navigation:*:2.1.0-beta02
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
गड़बड़ियां ठीक की गईं
2.1.0-beta01
में अनजाने में जोड़ी गई jacoco डिपेंडेंसी को हटा दिया गया है. (b/137782950)
वर्शन 2.1.0-beta01
17 जुलाई, 2019
androidx.navigation:*:2.1.0-beta01
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
setupWithNavController()
का इस्तेमाल करने पर,NavigationUI
अबToolbar
याCollapsingToolbarLayout
के साथ, अप बटन को हटाने का ऐनिमेशन दिखाता है. (b/131403621)
गड़बड़ियां ठीक की गईं
findNavController()
के साथ एक ही कंटेनर में कई NavHostFragments का इस्तेमाल करते समय, टाइमिंग से जुड़ी समस्या को ठीक किया गया. (b/136021571)
वर्शन 2.1.0-alpha06
2 जुलाई, 2019
androidx.navigation:*:2.1.0-alpha06
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- NavHostFragment के इस्तेमाल किए गए
app:navGraph
एट्रिब्यूट को अबnavigation-runtime
आर्टफ़ैक्ट में ले जाया गया है. एक्सएमएल के ज़रिए जोड़े जा सकने वाले कस्टम नेविगेटर को, नेविगेशन एडिटर के होस्ट पैनल के साथ इंटिग्रेट करने के लिए, इस एट्रिब्यूट का इस्तेमाल करना चाहिए. (b/133880955)
एपीआई में हुए बदलाव
NavController
परgetViewModelStore()
एपीआई की जगह,getViewModelStoreOwner()
के उस नए तरीके का इस्तेमाल किया जाता है जोViewModelStoreOwner
दिखाता है. (aosp/987010)<dialog>
डेस्टिनेशन जैसे फ़्लोटिंग विंडो डेस्टिनेशन को लागू करने की सुविधा को मार्कर इंटरफ़ेस,FloatingWindow
में सामान्य कर दिया गया है. अब सभी<dialog>
डेस्टिनेशन में यह सुविधा लागू होती है. टॉप ऐप्लिकेशन बार के साथ इंटरैक्ट करने के लिए, NavigationUI के तरीके अबFloatingWindow
डेस्टिनेशन को अनदेखा करते हैं. (b/133600763)
व्यवहार में बदलाव
<dialog>
डेस्टिनेशन का इस्तेमाल करते समय, नेविगेशन अब अपनी स्थिति को स्क्रीन पर दिखने वाली स्थिति के साथ सही तरीके से सिंक करता है. इस वजह से, अब नेविगेशन में<dialog>
डेस्टिनेशन अपने-आप पॉप अप होते हैं. ऐसा तब होता है, जब किसी ऐसे डेस्टिनेशन पर नेविगेट किया जाता है जिसमें डायलॉग बॉक्स और गतिविधि शामिल न हो, जैसे कि<fragment>
डेस्टिनेशन. (b/134089818)
गड़बड़ियां ठीक की गईं
- नेविगेशन अब उस ऐनिमेशन को दबा देता है जो डीप लिंक को हैंडल करते समय, गतिविधि को फिर से बनाते समय दिखता है. इससे विज़ुअल फ़्लैश की समस्या ठीक हो जाती है. (b/130362979)
- एक गड़बड़ी को ठीक किया गया है. इसमें, शुरुआती फ़्रैगमेंट जोड़ने के दौरान, फ़्रैगमेंट पॉप अप होने पर नेविगेशन बैक स्टैक सिंक नहीं होता था. (b/133832218)
वर्शन 2.1.0-alpha05
5 जून, 2019
androidx.navigation:*:2.1.0-alpha05
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
एपीआई में किए गए बदलाव
NavController
पर होस्ट से जुड़े एपीआई का नाम बदल दिया गया है और उन्हेंNavController
के नए सबक्लास,NavHostController
में ले जाया गया है. (aosp/966091)NavController
setHostOnBackPressedDispatcherOwner()
मेथड कोNavHostController
केsetOnBackPressedDispatcher()
मेथड से बदल दिया गया है. अब इसे कॉल करने से पहले, आपकोsetLifecycleOwner()
को कॉल करना होगा. (aosp/965409)NavHostController
में अबenableOnBackPressed(boolean)
मैथड है, जोNavHostOnBackPressedManager
क्लास की जगह लेता है.NavHostOnBackPressedManager
क्लास को पहलेsetHostOnBackPressedDispatcherOwner()
से रिटर्न किया जाता था. (aosp/966091)
गड़बड़ियां ठीक की गईं
- यूआरआई से नेविगेट करने के बाद, बैक स्टैक सही न होने की समस्या को ठीक किया गया है. (b/132509387)
- NavController की मदद से, डीप लिंक अपने-आप मैनेज होते हैं. अब ये सिर्फ़ एक बार ट्रिगर होते हैं. (b/132754763)
वर्शन 2.1.0-alpha04
16 मई, 2019
androidx.navigation:*:2.1.0-alpha04
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
गड़बड़ियां ठीक की गईं
- सिस्टम, सिस्टम के 'वापस जाएं' बटन इवेंट को इंटरसेप्ट करते समय,
NavHostFragment
app:defaultNavHost
का सही तरीके से पालन करता है. इससे नेविगेशन2.1.0-alpha03
में रिग्रेशन को ठीक किया जाता है. b/132077777 DialogFragmentNavigator
अबpopBackStack()
औरnavigateUp()
ऑपरेशन को सही तरीके से मैनेज करता है. b/132576764- नेस्ट किए गए ग्राफ़ के बीच बार-बार नेविगेट करने पर,
IllegalStateException: unknown destination during restore
से जुड़ी समस्या को ठीक किया गया. b/131733658
वर्शन 2.1.0-alpha03
7 मई, 2019
androidx.navigation:*:2.1.0-alpha03
रिलीज़ हो गया है. इस वर्शन में शामिल कमिट को यहां देखा जा सकता है.
आम समस्याएं
app:defaultNavHost="false"
b/132077777 का इस्तेमाल करने के बावजूद, NavHostFragment, सिस्टम के 'वापस जाएं' बटन को इंटरसेप्ट करता रहता है
नई सुविधाएं
- अब आपके पास
<dialog>
डेस्टिनेशन बनाने का विकल्प है. डेस्टिनेशन कोnavigate
करने पर, आपकोDialogFragment
दिखेगा.NavHostFragment
, डिफ़ॉल्ट रूप से डायलॉग डेस्टिनेशन के साथ काम करता है. b/80267254 navigate
को रिसॉर्स आईडी याNavDirections
इंस्टेंस के साथ कॉल करने के अलावा, अबUri
के ज़रिए नेविगेट किया जा सकता है. यह सही डेस्टिनेशन पर नेविगेट करने के लिए, उस डेस्टिनेशन में जोड़े गए<deepLink>
का इस्तेमाल करता है. b/110412864
व्यवहार में बदलाव
- गतिविधियों और फ़्रेगमेंट की डिफ़ॉल्ट ऐनिमेशन स्पीड से मैच करने के लिए, NavigationUI के डिफ़ॉल्ट ऐनिमेशन की स्पीड को 400 सेकंड से घटाकर 220 सेकंड कर दिया गया है. b/130055522
एपीआई में किए गए बदलाव
NavHostFragment
केcreateFragmentNavigator()
तरीके को बंद कर दिया गया है और इसकी सुविधा को नएonCreateNavController()
तरीके पर ले जाया गया है. इससे यह साफ़ तौर पर पता चलता है किNavHostFragment
को सबक्लास करते समय, कस्टम नेविगेटर जोड़ने का सही एंट्री पॉइंट यही है. b/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
रिलीज़ हो गया है. इस वर्शन में शामिल किए गए कमिट यहां देखे जा सकते हैं.
नई सुविधाएं
- अब Kotlin इस्तेमाल करने वाले लोगों के लिए,
by navGraphViewModels()
प्रॉपर्टी डेलिगेट की मदद से याNavController
में जोड़े गएgetViewModelStore()
एपीआई का इस्तेमाल करके, नेविगेशन ग्राफ़ लेवल पर स्कोप किए गए ViewModel बनाए जा सकते हैं. b/111614463
एपीआई में हुए बदलाव
- अब मैच करने वाले पैकेज के नाम को सीमित करने के लिए,
<activity>
डेस्टिनेशन मेंapp:targetPackage
जोड़ा जा सकता है. यह पैकेज को आपके ऐप्लिकेशन आईडी तक सीमित करने के लिए,app:targetPackage="${applicationId}"
पर काम करता है. b/110975456
गड़बड़ियां ठीक की गईं
<activity>
डेस्टिनेशन के लिएandroid:name
को अब मुद्रास्फीति के समय क्लास में पार्स नहीं किया जाता है. इससे डाइनैमिक सुविधाओं का इस्तेमाल करते समय ClassNotFoundFound को रोक दिया जाता है. b/124538597
वर्शन 2.1.0-alpha01
19 मार्च, 2019
यह नेविगेशन 2.1.0
का पहला अल्फ़ा वर्शन है.
डिपेंडेंसी में बदलाव
- नेविगेशन अब
androidx.core:core:1.0.1
औरandroidx.fragment:fragment:1.1.0-alpha05
पर निर्भर करता है. इस रिलीज़ में,androidx.legacy:legacy-support-core-utils:1.0.0
पर निर्भरता भी हटा दी गई है. b/128632612
एपीआई में बदलाव
- रिसॉर्स आईडी और बंडल के साथ क्लिक लिसनर बनाने के विकल्प के तौर पर, एक नया
Navigation.createNavigateOnClickListener(NavDirections)
तरीका जोड़ा गया है. b/127631752 FragmentNavigator.instantiateFragment
का अब इस्तेमाल नहीं किया जा सकता. डिफ़ॉल्ट तौर पर लागू होने वाले फ़ंक्शन में, अब फ़्रैगमेंट को इंस्टैंशिएट करने के लिएFragmentFactory
का इस्तेमाल किया जाता है. b/119054429
गड़बड़ियां ठीक की गईं
- किसी डेस्टिनेशन से जुड़े आर्ग्युमेंट होने पर, नेविगेशन अब कोई शून्य
Bundle
नहीं भेजता. इससेandroid:defaultValue="@null"
का इस्तेमाल करते समय आने वाली समस्या ठीक हो जाती है. b/128531879 - Safe Args अब KotlinPoet 1.1.0 पर निर्भर है, पैकेज के बहुत लंबे नाम से जुड़ी समस्या को ठीक करता है. b/123654948
वर्शन 2.0.0
वर्शन 2.0.0
14 मार्च, 2019
नेविगेशन 2.0.0
को 2.0.0-rc02
से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 2.0.0-rc02
6 मार्च, 2019
Navigation 2.0.0-rc02, androidx.navigation
ग्रुप आईडी के साथ नए आर्टफ़ैक्ट उपलब्ध कराता है. साथ ही, इसकी डिपेंडेंसी को AndroidX के बराबर के आर्टफ़ैक्ट में बदल देता है.
2.0.0-rc02 का काम, नेविगेशन 1.0.0-rc02 के तरीके जैसा ही होता है. साथ ही, नई डिपेंडेंसी से मिलान करने के लिए, अपनी डिपेंडेंसी को अपडेट करने के अलावा, 1.0.0-rc02 से 1.0.0-rc02 में बदलाव करने की ज़रूरत नहीं होती.
Navigation के 2.X रिलीज़ का इस्तेमाल करने के लिए, आपके प्रोजेक्ट को AndroidX पर माइग्रेट किया जाना चाहिए. स्टेबल वर्शन वाला नेविगेशन 1.0 स्टेबल वर्शन, सहायता लाइब्रेरी डिपेंडेंसी का इस्तेमाल करने वाली आखिरी रिलीज़ होगी. आने वाले समय में, 1.0 के बाद के सभी डेवलपमेंट AndroidX और 2.0 स्टेबल रिलीज़ के हिसाब से होंगे.
AndroidX से पहले की डिपेंडेंसी
नेविगेशन के AndroidX से पहले के वर्शन के लिए, इन निर्भरताओं को शामिल करें:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Safe args के लिए, अपनी टॉप लेवल build.gradle
फ़ाइल में यह क्लासपाथ जोड़ें
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
वर्शन 1.0.0
वर्शन 1.0.0
14 मार्च, 2019
नेविगेशन 1.0.0
को 1.0.0-rc02
से बिना किसी बदलाव के रिलीज़ किया गया है.
वर्शन 1.0.0-rc02
26 फ़रवरी, 2019
यह नेविगेशन के 1.0.0 के स्टेबल रिलीज़ का दूसरा रिलीज़ कैंडिडेट है. इस रिलीज़ में कई गड़बड़ियां ठीक की गई हैं.
गड़बड़ियां ठीक की गईं
- एक समस्या को ठीक किया गया है. इसमें, रूट ग्राफ़ में आईडी b/126251695 न होने पर,
popBackStack()
को अनदेखा कर दिया जाता था navigateUp()
अबFLAG_ACTIVITY_NEW_TASK
के बिना डीप लिंक को हैंडल करने के बाद, आपके ऐप्लिकेशन के टास्क पर वापस जाने की सुविधा को सही तरीके से मैनेज करता है b/126082008ActivityNavigator.applyPopAnimationsToPendingTransition
पॉप-अप बंद होने पर सही ऐनिमेशन लागू न होने की समस्या को ठीक किया गया b/126237567- Safe Args की मदद से जनरेट किया गया Kotlin कोड, अब
R
क्लास से जुड़े पैकेज के नाम मेंin
औरfun
जैसे Kotlin कीवर्ड को सही तरीके से एस्केप करता है. b/126020455
वर्शन 1.0.0-rc01
21 फ़रवरी, 2019
यह Navigation के 1.0.0 स्टेबल रिलीज़ का रिलीज़ कैंडिडेट है. इस रिलीज़ में एक गड़बड़ी ठीक की गई है.
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट और
singleTop
नेविगेशन ऑपरेशन का इस्तेमाल करते समय आने वाली समस्या ठीक की गई b/124294805
वर्शन 1.0.0-beta02
12 फ़रवरी, 2019
इस रिलीज़ में कई मामूली सुधार किए गए हैं और अहम गड़बड़ियां ठीक की गई हैं.
नई सुविधाएं
- अब
reference
आर्ग्युमेंट के लिए,0
का इस्तेमालandroid:defaultValue
के तौर पर किया जा सकता है. b/124248602
व्यवहार में बदलाव
- एग्ज़ैक्ट डीप लिंक मैच को अब
.*
या आर्ग्युमेंट मैच वाले डीप लिंक के मुकाबले प्राथमिकता दी जाती है. b/123969518
गड़बड़ियां ठीक की गईं
popBackStack()
औरnavigateUp
अब बैक स्टैक पर मौजूद आखिरी डेस्टिनेशन को पॉप करने पर, सही तरीके सेfalse
दिखाते हैं. इससे1.0.0-beta01
में हुई गड़बड़ी को ठीक किया गया है. b/123933201- नेविगेशन अब सेव किए गए इंस्टेंस की स्थिति को वापस लाने के दौरान,
ClassLoader
को सही तरीके से सेट करता है. इससे,Navigator
की सेव की गई स्थिति में कस्टम क्लास का इस्तेमाल करने याNavDestination
को भेजे गए आर्ग्युमेंट में समस्याओं से बचा जा सकता है. b/123893858 - सेव किए गए इंस्टेंस स्टेटस से
Parcelable[]
आर्ग्युमेंट को वापस लाने पर, Safe Args से जनरेट की गई NavArgs क्लास अब क्रैश नहीं होती हैं. b/123963545 - Safe Args अब ग़ैर-ज़रूरी जनरेट की गई Kotlin क्लास को ठीक से हटा देता है. b/124120883
वर्शन 1.0.0-beta01
4 फ़रवरी, 2019
यह नेविगेशन का पहला बीटा वर्शन है. आने वाले समय में, नेविगेशन एपीआई अगले वर्शन तक स्थिर रहेगा. हालांकि, ऐसा तब तक होगा, जब तक कोई गंभीर समस्या न हो. इस रिलीज़ में कुछ गड़बड़ियां ठीक की गई हैं और इसके काम करने के तरीके में बदलाव किए गए हैं.
व्यवहार में बदलाव
- नेविगेशन की सुविधा अब यह पक्का करती है कि रनटाइम और Safe Args के ज़रिए, आर्ग्युमेंट की डिफ़ॉल्ट वैल्यू को एक जैसा माना जाए. इस वजह से, सिर्फ़
app:argType="reference"
वाले आर्ग्युमेंट में किसी दूसरे रिसॉर्स (उदाहरण के लिए,@color/colorPrimary
) पर ले जाने वाली डिफ़ॉल्ट वैल्यू हो सकती है. किसी दूसरेapp:argType
के साथ रेफ़रंस की डिफ़ॉल्ट वैल्यू का इस्तेमाल करने की कोशिश करने पर, नेविगेशन एक्सएमएल को पार्स करते समय अपवाद दिखेगा. b/123551990 - Safe Args अब Android Gradle प्लग इन 3.3.0 पर निर्भर करता है aosp/888413
- Safe Args अब Kotlin 1.3.20 aosp/888414 पर निर्भर करता है
गड़बड़ियां ठीक की गईं
- Android Gradle प्लग इन के सभी वर्शन में, लाइब्रेरी और फ़ीचर मॉड्यूल में अब सेफ़ आर्ग्युमेंट का इस्तेमाल किया जा सकता है. b/121304903
- एक ऐसी गड़बड़ी को ठीक किया गया है जिसकी वजह से एक बार में एक ही डेस्टिनेशन के बजाय,
popBackStack()
ऑपरेशन से बैक स्टैक में सबसे ऊपर मौजूद डेस्टिनेशन की सभी कॉपी पॉप हो जाती थीं. b/123552990 FragmentNavigator
की स्थिति,NavController
की स्थिति से सिंक नहीं हो पाती थी. इस वजह से, बैक स्टैक को वापस लाने की कोशिश करने परIllegalStateException
दिखता था. इस समस्या को ठीक कर दिया गया है. b/123803044- एक समस्या को ठीक किया गया है. इसमें,
NavigationUI
हैंडल वाला बैक ऐरो नहीं दिखता था. ऐसा तब होता था, जब ProGuard का इस्तेमाल, कोड को छिपाने के लिए किया जाता था. b/123449431 - Safe Args से जनरेट किया गया कोड, अब
.OuterClass$InnerClass
फ़ॉर्मैट में स्टैटिक इनर क्लास पर ले जाने वालेapp:argType
का इस्तेमाल करके सही तरीके से काम करता है. b/123736741 - Safe Args की मदद से जनरेट किया गया Java कोड, अब ग्लोबल ऐक्शन और डीप नेस्ट किए गए डेस्टिनेशन को सही तरीके से मैनेज करता है. b/123347762
वर्शन 1.0.0-alpha11
23 जनवरी, 2019
यह 1.0.0-alpha10
का हॉटफ़िक्स रिलीज़ है, जो Safe Args से जुड़ी समस्या को ठीक करता है.
गड़बड़ियां ठीक की गईं
- इस समस्या को ठीक किया गया है, जिसमें Safe Args, ग्लोबल ऐक्शन से जुड़ी Directions क्लास को इंपोर्ट नहीं कर पाता था. b/123307342
वर्शन 1.0.0-alpha10
23 जनवरी, 2019
आम समस्याएं
- Safe Args, ग्लोबल ऐक्शन से जुड़ी Directions क्लास को इंपोर्ट नहीं कर पाता. b/123307342
इस रिलीज़ में, एपीआई में हुए बदलावों की जानकारी दी गई है. कृपया नीचे दिया गया ताज़ा बदलाव सेक्शन देखें.
नई सुविधाएं
- Kotlin के उपयोगकर्ता अब
by navArgs()
प्रॉपर्टी डेलिगेट का इस्तेमाल करके,Activity
याFragment
में, Safe Args से जनरेट की गईNavArgs
क्लास का रेफ़रंस लाज़ी तरीके से पा सकते हैं. b/122603367 - अब सेफ़ आर्ग्युमेंट की मदद से,
androidx.navigation.safeargs.kotlin
प्लग इन लागू करके Kotlin कोड जनरेट किया जा सकता है. Kotlin कोड, सिर्फ़ Kotlin मॉड्यूल के लिए बनाया गया है. इसमें बिल्डर पैटर्न के बजाय, डिफ़ॉल्ट आर्ग्युमेंट और अपरिवर्तनीय क्लास का इस्तेमाल किया गया है. यह पैटर्न, अब भीandroidx.navigation.safeargs
प्लग इन के ज़रिए उपलब्ध है. b/110263087
व्यवहार में बदलाव
- मैच करने वाले डीप लिंक अब उस डीप लिंक को प्राथमिकता देते हैं जिसमें सबसे ज़्यादा मैच करने वाले आर्ग्युमेंट हैं. b/118393029
NavController
परsetGraph()
को कॉल करने से, अब बैक स्टैक रीसेट हो जाएगा. b/111450672- अब अज्ञात डीप लिंक से
IllegalStateException
नहीं दिखता है. हालांकि, इन डीप लिंक को अनदेखा कर दिया जाता है. इससे नेस्ट किए गए या एक से ज़्यादाNavHostFragment
से जुड़ी समस्याएं ठीक हो जाती हैं. b/121340440
बदलाव
- किसी गतिविधि पर पॉप ऐनिमेशन लागू करने के लिए,
NavOptions.applyPopAnimationsToPendingTransition()
का इस्तेमाल किया जाता था. अब इसेActivityNavigator
पर ले जाया गया है. b/122413117 - सेफ़ आर्ग्युमेंट की सुविधा अब बिना आर्ग्युमेंट वाले ऐक्शन के लिए, एक जैसी क्लास को डुप्लीकेट करने से रोकती है. जनरेट की गई NavDirections क्लास में, बिना आर्ग्युमेंट वाले मैथड के लिए रिटर्न टाइप अब
NavDirections
है. b/123233147 - Safe Args से जनरेट की गई Directions क्लास में अब कोई सार्वजनिक कन्स्ट्रक्टर नहीं है - आपको सिर्फ़ जनरेट किए गए स्टैटिक तरीकों से इंटरैक्ट करना चाहिए. b/123031660
- Safe Args की मदद से जनरेट की गई
NavDirections
क्लास में अब कोई सार्वजनिक कंस्ट्रक्टर नहीं होता. इन्हें सिर्फ़ जनरेट की गई Directions क्लास में मौजूद स्टैटिक तरीकों से जनरेट किया जाना चाहिए. b/122963206 NavDirections
'getArguments()
से मिलाBundle
, अब@Nullable
के बजाय@NonNull
के तौर पर मार्क किया गया है. b/123243957
गड़बड़ियां ठीक की गईं
NavDeepLinkBuilder
अब एक ही डेस्टिनेशन पर एक साथ कईPendingIntent
को सही तरीके से मैनेज करता है. इसके लिए, वह आपके पास किए गए आर्ग्युमेंट का इस्तेमाल करके, यूनीक होने की जानकारी तय करता है. b/120042732- बैक स्टैक वाले अन्य चाइल्ड फ़्रैगमेंट या नेस्ट किए गए
NavHostFragment
का इस्तेमाल करते समय,NavController
अबpopBackStack()
ऑपरेशन को सही तरीके से हैंडल करता है.b/122770335 NavigationUI
अब 'अप' बटन के कॉन्टेंट का ब्यौरा सही तरीके से सेट हो जाता है. b/120395362- Safe Args की मदद से जनरेट की गई निर्देशों की क्लास, अब उन ग्लोबल ऐक्शन को सही तरीके से मैनेज करती हैं जिनका आईडी, डेस्टिनेशन पर मौजूद ऐक्शन के आईडी से मेल खाता है. b/122962504
- Safe Args की मदद से जनरेट की गई
NavDirections
क्लास में, अबequals()
के सही होने पर,hashCode()
वैल्यू एक जैसी होती हैं. b/123043662 NavHostFragment
केFragmentManager
पर कस्टमFragmentTransactions
करने की कोशिश करने पर,FragmentNavigator
अब गड़बड़ी का बेहतर मैसेज दिखाता है. आपको हमेशाgetChildFragmentManager()
का इस्तेमाल करना चाहिए. b/112927148
वर्शन 1.0.0-alpha09
18 दिसंबर, 2018
इस रिलीज़ में, एपीआई में ऐसे बदलाव किए गए हैं जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है. कृपया नीचे ऐसे बदलाव जिनसे आपके ऐप्लिकेशन पर असर पड़ सकता है सेक्शन देखें.
हमने android.arch.navigation:navigation-testing
आर्टफ़ैक्ट के डेवलपमेंट को जारी रखने का फ़ैसला नहीं लिया है. हालांकि, यह NavController
की इंटरनल टेस्टिंग के लिए मददगार साबित हुआ है. हालांकि, हमारा सुझाव है कि आप वैकल्पिक जांच की रणनीतियां इस्तेमाल करें. जैसे, NavController
इंस्टेंस का मॉक बनाना, ताकि इस बात की पुष्टि की जा सके कि सही navigate()
कॉल किए जा रहे हैं. इस तरीके के बारे में ज़्यादा जानकारी के लिए, AndroidDevSummit 2018 में सिंगल ऐक्टिविटी के बारे में बातचीत देखें. साथ ही, हम नेविगेशन के साथ टेस्टिंग के बारे में ज़्यादा दस्तावेज़ तैयार करेंगे.
नई सुविधाएं
menuCategory="secondary"
वालेMenuItem
,NavigationUI
तरीकों के साथ इस्तेमाल करने पर अब बैक स्टैक को पॉप नहीं करेंगे. b/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 और इसके बाद वाले वर्शन के साथ काम करता है b/119662045
वर्शन 1.0.0-alpha08
6 दिसंबर, 2018
इस रिलीज़ में, एपीआई में हुए बदलावों की जानकारी दी गई है. कृपया नीचे दिया गया ताज़ा बदलाव सेक्शन देखें.
नई सुविधाएं
NavigationUI
तरीकों के साथ इस्तेमाल किए जाने पर, डेस्टिनेशन लेबल अब आपकेandroid:label
में{argName}
इंस्टेंस को सही आर्ग्युमेंट b/80267266 से अपने-आप बदल देंगे- नेविगेशन अब Support Library 28.0.0 b/120293333 पर निर्भर करता है
बदलाव
OnNavigatedListener
का नाम बदलकरOnDestinationChangedListener
b/118670572 कर दिया गया हैOnDestinationChangedListener
अबBundle
आर्ग्युमेंट को भी पास करता है aosp/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/835684- इस्तेमाल नहीं किए जाने वाले
NavigationUI.navigateUp(DrawerLayout, NavController)
तरीके को हटा दिया गया है. aosp/835684 - फ़्रैगमेंट बनाने की सुविधा को
FragmentNavigator
में ले जाया गया है. इससे, किसीFragmentFactory
को फ़्रैगमेंट बनाने की अनुमति देना आसान हो गया है. b/119054429 NavGraphNavigator
के कंस्ट्रक्टर में अबContext
का इस्तेमाल नहीं किया जा सकता aosp/835340- NavigatorProvider अब इंटरफ़ेस के बजाय एक क्लास है.
getNavigatorProvider()
के ज़रिए दिखाए गएNavigatorProvider
की सुविधा में कोई बदलाव नहीं हुआ है. aosp/830660 NavDestination.navigate()
को हटा दिया गया है. इसके बजाय,Navigator
परnavigate()
को कॉल करें. aosp/830663Navigator
को फिर से तैयार किया गया है. इससेOnNavigatorNavigatedListener
की ज़रूरत नहीं पड़ेगी औरnavigate
उसNavDestination
को दिखाएगा जिस पर नेविगेट किया गया था.Navigator
इंस्टेंस, अबNavController
को पॉप इवेंट नहीं भेज सकते. बैक बटन दबाने पर,navController.popBackStack()
को कॉल करने के लिए,OnBackPressedCallback
का इस्तेमाल करें. aosp/833716
गड़बड़ियां ठीक की गईं
popUpTo
अब डेस्टिनेशन के<navigation>
एलिमेंट के होने पर लगातार काम करता है b/116831650- नेस्ट किए गए ग्राफ़ का इस्तेमाल करने पर,
IllegalArgumentException
b/118713731 b/113611083 b/113346925 b/113305559 वाली गड़बड़ियां ठीक की गईं <activity>
डेस्टिनेशन केdataPattern
एट्रिब्यूट में अबtoString()
b/120161365 को कॉल करके, नॉन-स्ट्रिंग ऑर्ग्युमेंट से ऑर्ग्युमेंट पॉप्युलेट होंगे
सुरक्षित आर्ग
- Safe Args, Serializable ऑब्जेक्ट के साथ काम करता है. इनमें Enum वैल्यू भी शामिल हैं. Enum टाइप, क्लास के नाम के बिना Enum लिटरल का इस्तेमाल करके डिफ़ॉल्ट वैल्यू सेट कर सकते हैं (उदाहरण के लिए,
app:defaultValue="READ"
) b/111316353 - Safe Args के साथ काम करने वाले सभी टाइप के अरे काम करते हैं b/111487504
- Safe Args अब रिसॉर्स डायरेक्ट्री के सब-फ़ोल्डर को अनदेखा करता है b/117893516
- Safe Args, ज़रूरत पड़ने पर
@Override
एनोटेशन जोड़ता है b/117145301
वर्शन 1.0.0-alpha07
29 अक्टूबर, 2018
नई सुविधाएं
- नई AppBarConfiguration क्लास की मदद से, यह तय किया जा सकता है कि किन डेस्टिनेशन को टॉप-लेवल डेस्टिनेशन माना जाए. ज़्यादा जानकारी के लिए, अपडेट किया गया दस्तावेज़ देखें. b/117333663
- अब अपने ग्राफ़ के स्टार्ट डेस्टिनेशन के लिए ऑर्ग्युमेंट दिए जा सकते हैं b/110300470
- डीप लिंक में अब पीरियड, हाइफ़न, और प्लस साइन वाले कस्टम स्कीमा काम करते हैं. b/112806402
बदलाव
navigation-testing-ktx
मॉड्यूल कोnavigation-testing artifact
में शामिल कर दिया गया है और अब इसे पब्लिश नहीं किया जाएगा.navigation-testing
आर्टफ़ैक्ट अब Kotlin स्टैंडर्ड लाइब्रेरी पर निर्भर करता है. एपीआई को Kotlin के कॉन्वेंशन के मुताबिक बनाने के लिए बदला गया है. हालांकि, Java में लिखी गई जांचों के लिए इसका इस्तेमाल जारी रखा जा सकता है.- मेटाडेटा मेनिफ़ेस्ट में रजिस्टर किए गए नेविगेशन ग्राफ़ का इस्तेमाल अब नहीं किया जा सकता. b/118355937
- अब कार्रवाइयों को <activity> डेस्टिनेशन से अटैच नहीं किया जा सकता. aosp/785539
गड़बड़ियां ठीक की गईं
- डीप लिंक अब क्वेरी पैरामीटर को सही तरीके से पार्स करते हैं. b/110057514
- गतिविधि के डेस्टिनेशन अब सभी एंटर और एक्सिट ऐनिमेशन को सही तरीके से लागू करते हैं. b/117145284
- कस्टम नेविगेटर का इस्तेमाल करते समय, कॉन्फ़िगरेशन में बदलाव होने के बाद होने वाली क्रैश की समस्या को ठीक किया गया. b/110763345
Safe Args
- सुरक्षित आर्ग के पास अब 'Android Gradle प्लग इन 3.2.1' पर तय निर्भरता है. b/113167627
- अब इनर क्लास के लिए निर्देश जनरेट किए जा सकते हैं. b/117407555
- <include> ग्राफ़ के लिए निर्देश जनरेट करने से जुड़ी समस्या को ठीक किया गया. b/116542123
वर्शन 1.0.0-alpha06
20 सितंबर, 2018
नई सुविधाएं
- फ़्रैगमेंट और ऐक्टिविटी डेस्टिनेशन के लिए, शेयर किए गए एलिमेंट ट्रांज़िशन की सुविधा अब b/79665225 के साथ काम करती है. ज़्यादा जानकारी के लिए, नेविगेशन आर्किटेक्चर कॉम्पोनेंट की मदद से नेविगेशन लागू करना लेख पढ़ें
NavigationView
में कोई आइटम चुनने पर, अब उसमें मौजूद कोई भी बॉटम शीट b/112158843 बंद हो जाएगी
एपीआई में बदलाव
- ब्रेकिंग बदलाव: नेविगेटर
navigate()
वाले तरीके में अबNavigator.Extras
पैरामीटर होता है. - NavController के
getGraph()
तरीके का नाम अबNonNull
है b/112243286
गड़बड़ियां ठीक की गईं
NavigationUI.setupWithNavController()
का इस्तेमाल अलग-अलग डेस्टिनेशन के व्यू के साथ करने पर, अब व्यू का डेटा लीक नहीं होता b/111961977- नेविगेटर
onSaveState()
को अब सिर्फ़ एक बार कॉल किया जाता है b/112627079
Safe Args
- नेविगेशन डेस्टिनेशन के निर्देशों की क्लास, अब अपने पैरंट की निर्देशों की क्लास को बढ़ाती हैं. हालांकि, ऐसा तब ही होता है, जब पैरंट की निर्देशों की क्लास मौजूद हो b/79871405
- निर्देशों और Args क्लास में अब
toString()
को लागू करने के लिए, एक मददगार b/111843389 उपलब्ध है
वर्शन 1.0.0-alpha05
10 अगस्त, 2018
गड़बड़ियां ठीक की गईं
- बैकस्टैक के गलत तरीके से काम करने की गड़बड़ी को ठीक किया गया. b/111907708
- जनरेट की गई आर्ग्युमेंट क्लास की
equals()
में मौजूद गड़बड़ी को ठीक किया गया. b/111450897 - Safe Args में बिल्ड न होने की समस्या को ठीक करना. b/109409713
- रिसॉर्स आइडेंटिफ़ायर से Java नामों में कन्वर्ज़न ठीक करना b/111602491
- Safe Args प्लग इन में, वैल्यू न होने की स्थिति से जुड़ी गड़बड़ी के मैसेज ठीक करें.
- उन एनोटेशन को जोड़ें जो अमान्य हैं.
वर्शन 1.0.0-alpha04
19 जुलाई, 2018
नेविगेशन 1.0.0-alpha04
और उससे जुड़े Safe Args Gradle प्लग इन में, API में कई बदलाव, काम करने के तरीके में बदलाव, और गड़बड़ियों को ठीक करने के लिए कई सुधार किए गए हैं.
एपीआई / व्यवहार में बदलाव
- NavHostफ़्रैगमेंट, मौजूदा फ़्रैगमेंट को हमेशा प्राइमरी नेविगेशन फ़्रैगमेंट के तौर पर सेट करेगा. इससे यह पक्का किया जा सकेगा कि चाइल्ड फ़्रैगमेंट मैनेजर, बाहरी NavController के पॉप-अप होने से पहले पॉप-अप होंगे b/111345778
Safe Args
- बदलाव: ConstraintLayout 2.0.0-alpha1 b/111110548 जैसी अन्य लाइब्रेरी के साथ होने वाली गड़बड़ियों से बचने के लिए,
app:type
कोapp:argType
में बदल दिया गया है - Safe Args से मिलने वाले गड़बड़ी के मैसेज पर अब क्लिक किया जा सकता है b/111534438
- आर्ग क्लास अब इस बात की पुष्टि करती है कि
NonNull
एट्रिब्यूट की वैल्यू शून्य नहीं है b/111451769 - NavDirections और Args की जनरेट की गई क्लास b/111455455 b/111455456 में अतिरिक्त
NonNull
एनोटेशन जोड़े गए हैं
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट डेस्टिनेशन b/111515685 से डीप लिंक करने के बाद, सिस्टम के 'वापस जाएं' बटन से जुड़ी समस्या को ठीक किया गया
वर्शन 1.0.0-alpha03
12 जुलाई, 2018
नेविगेशन 1.0.0-alpha03
और उससे जुड़े Safe Args Gradle प्लग इन में, API में कई बदलाव, काम करने के तरीके में बदलाव, और गड़बड़ियों को ठीक करने के लिए कई सुधार किए गए हैं.
एपीआई / व्यवहार में बदलाव
- टूलबार के लिए NavigationUI.setupWithNavController तरीका जोड़ा गया है b/109868820
- CollapsingToolbarLayout के लिए, NavigationUI.setupWithNavController का तरीका जोड़ा गया है b/110887183
- अगर बैक स्टैक खाली है या उससे जुड़ा डेस्टिनेशन आईडी, बैक स्टैक b/110893637 में मौजूद नहीं है, तो popBackStack() अब गलत दिखेगा
- FragmentManager के स्टेटस सेव करने के बाद, FragmentNavigator अब नेविगेशन ऑपरेशन को अनदेखा करता है. इससे, “onSaveInstanceState के बाद यह कार्रवाई नहीं की जा सकती” अपवादों से बचा जा सकता है b/110987825
सुरक्षित आर्ग
- बड़े बदलाव: ऐक्शन और आर्ग्युमेंट के नामों में मौजूद अक्षर और अंक के अलावा अन्य वर्णों को, NavDirections के तरीके के नामों में कैमल केसिंग से बदल दिया जाएगा
- उदाहरण के लिए,
DemoController.index
कोsetDemoControllerIndex
b/79995048 में बदल दिया जाएगा - उदाहरण के लिए,
action_show_settings
,actionShowSettings
b/79642240 हो जाएगा
- उदाहरण के लिए,
- बड़े बदलाव: अब डिफ़ॉल्ट रूप से, आर्ग्युमेंट को नॉन-नल माना जाता है. पार्स किए जा सकने वाले आर्ग्युमेंट और स्ट्रिंग में शून्य वैल्यू की अनुमति देने के लिए,
app:nullable="true"
b/79642307 जोड़ें - अब
app:type="long"
का इस्तेमाल, “123L” b/79563966 के तौर पर डिफ़ॉल्ट वैल्यू के साथ किया जा सकता है app:type
के लिए पूरी तरह क्वालिफ़ाइड क्लास नाम का इस्तेमाल करके, पार्स किए जा सकने वाले आर्ग्युमेंट अब काम करते हैं. इस एट्रिब्यूट के लिए सिर्फ़"@null"
b/79563966 वैल्यू को डिफ़ॉल्ट वैल्यू के तौर पर इस्तेमाल किया जा सकता है- आर्ग्युमेंट क्लास अब
equals()
औरhashCode()
को लागू करती हैं b/79642246 - Safe Args प्लग इन को अब लाइब्रेरी प्रोजेक्ट b/80036553 पर लागू किया जा सकता है
- Safe Args प्लग इन को अब फ़ीचर प्रोजेक्ट b/110011752 पर लागू किया जा सकता है
गड़बड़ियां ठीक की गईं
- फ़्रैगमेंट लाइफ़साइकल के तरीकों के दौरान नेविगेट करते समय आने वाली समस्याएं ठीक की गईं b/109916080
- नेस्ट किए गए ग्राफ़ में कई बार नेविगेट करने से जुड़ी समस्याएं ठीक की गईं b/110178671
- ग्राफ़ b/109909461 में पहले डेस्टिनेशन के साथ
setPopUpTo
का इस्तेमाल करते समय आने वाली समस्याओं को ठीक किया गया app:defaultValue
की सभी वैल्यू को स्ट्रिंग के तौर पर पास करने से जुड़ी समस्या को ठीक किया गया b/110710788- Android Gradle प्लग इन 3.2 बीटा 01 के साथ बंडल किया गया aapt2, अब नेविगेशन एक्सएमएल फ़ाइलों में हर
android:name
एट्रिब्यूट के लिए, 'रखें' नियम जोड़ता है b/79874119 - डिफ़ॉल्ट FragmentNavigator को बदलते समय, मेमोरी लीक की समस्या को ठीक किया गया b/110900142
वर्शन 1.0.0-alpha02
7 जून, 2018
व्यवहार में बदलाव
FragmentNavigator
अबsetReorderingAllowed(true)
का इस्तेमाल करता है. बी/109826220नेविगेशन अब डीप लिंक यूआरएल से पार्स किए गए आर्ग्युमेंट को URLDecode करता है. b/79982454
गड़बड़ियां ठीक की गईं
फ़्रैगमेंट लाइफ़साइकल के तरीकों से नेविगेट करने के लिए कॉल करते समय,
IllegalStateException
को ठीक किया गया. b/79632233ऐनिमेशन का इस्तेमाल करते समय फ़्लिकरिंग की समस्या को ठीक करने के लिए, नेविगेशन अब Support Library 27.1.1 पर निर्भर करता है. b/80160903
चाइल्ड फ़्रैगमेंट के तौर पर defaultNavHost="true" का इस्तेमाल करते समय,
IllegalArgumentException
को ठीक किया गया. b/79656847NavDeepLinkBuilder का इस्तेमाल करते समय
StackOverflowError
को ठीक किया गया. b/109653065नेस्ट किए गए ग्राफ़ पर वापस जाने पर,
IllegalArgumentException
से जुड़ी समस्या को ठीक किया गया. b/80453447launchSingleTop
का इस्तेमाल करते समय, ओवरलैप होने वाले फ़्रैगमेंट से जुड़ी समस्या को ठीक किया गया. b/79407969नेविगेशन, अब नेस्ट किए गए ग्राफ़ के लिए सही सिंथेटिक बैक स्टैक बनाता है. b/79734195
नेस्ट किए गए ग्राफ़ को
MenuItem
के तौर पर इस्तेमाल करने पर, NavigationUI अब सही आइटम को हाइलाइट करेगा. b/109675998
एपीआई में हुए बदलाव
NavOptions
में, कार्रवाइयों और उससे जुड़े एपीआई के लिएclearTask
एट्रिब्यूट को हटा दिया गया है. b/80338878NavOptions
में, कार्रवाइयों के लिएlaunchDocument
एट्रिब्यूट और उससे जुड़े एपीआई का इस्तेमाल बंद कर दिया गया है. b/109806636
वर्शन 1.0.0-alpha01
8 मई, 2018
नेविगेशन, इन-ऐप्लिकेशन नेविगेशन बनाने के लिए फ़्रेमवर्क उपलब्ध कराता है. यह शुरुआती रिलीज़ 1.0.0-alpha01
है.