ناوبری
آخرین به روز رسانی | انتشار پایدار | کاندید را آزاد کنید | نسخه بتا | انتشار آلفا |
---|---|---|---|---|
11 دسامبر 2024 | 2.8.5 | - | - | 2.9.0-alpha04 |
اعلام وابستگی ها
برای افزودن وابستگی به Navigation، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Maven Google را بخوانید.
وابستگیهای مصنوعات مورد نیاز خود را در فایل build.gradle
برای برنامه یا ماژول خود اضافه کنید:
شیار
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.8.4" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
کاتلین
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.4" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
ارگ ایمن
برای افزودن Safe Args به پروژه خود، classpath
زیر را در فایل build.gradle
سطح بالای خود قرار دهید:
شیار
buildscript { repositories { google() } dependencies { def nav_version = "2.8.4" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
کاتلین
buildscript { repositories { google() } dependencies { val nav_version = "2.8.4" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
همچنین باید یکی از دو افزونه موجود را اعمال کنید.
برای ایجاد کد زبان جاوا مناسب برای جاوا یا ماژول های ترکیبی جاوا و کاتلین، این خط را به فایل build.gradle
برنامه یا ماژول خود اضافه کنید:
شیار
plugins { id 'androidx.navigation.safeargs' }
کاتلین
plugins { id("androidx.navigation.safeargs") }
از طرف دیگر، برای تولید کد Kotlin مناسب برای ماژول های فقط Kotlin اضافه کنید:
شیار
plugins { id 'androidx.navigation.safeargs.kotlin' }
کاتلین
plugins { id("androidx.navigation.safeargs.kotlin") }
شما باید android.useAndroidX=true
را در فایل gradle.properties
خود مطابق با مهاجرت به AndroidX داشته باشید.
برای اطلاعات در مورد استفاده از پسوندهای Kotlin، به مستندات ktx مراجعه کنید.
برای اطلاعات بیشتر درباره وابستگیها، به افزودن وابستگیهای ساخت مراجعه کنید.
بازخورد
بازخورد شما به بهتر شدن Jetpack کمک می کند. اگر مسائل جدیدی کشف کردید یا ایده هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد کتابخانه جدید، به مسائل موجود در این کتابخانه نگاهی بیندازید. با کلیک کردن روی دکمه ستاره می توانید رای خود را به یک موضوع موجود اضافه کنید.
برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.
نسخه 2.9
نسخه 2.9.0-alpha04
11 دسامبر 2024
androidx.navigation:navigation-*:2.9.0-alpha04
منتشر شد. نسخه 2.9.0-alpha04 حاوی این commit ها است.
ویژگی های جدید
- نوع API امنی که قبلاً فقط از طریق روشهای
reified
در دسترس بودند ، یعنیcomposable<YourScreen>
اکنون نسخههای غیرتصحیحشدهای دارند که مستقیماً یک نمونهKClass
را میگیرند. Ic1bf0 , Iba4ee , If56a5 , Icf969 , I67644 , I6f788 , b/382094941 , b/366291612 , b/381938808 )
جدول زیر API های reified و KClass را ارائه می دهد.
واقعی شد | کلاس |
---|---|
composable<TestClass> { } | composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) | navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} | dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) | navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) | NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } | NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() | navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) | navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() | navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() | NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } | navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() | NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() | NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() | backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() | savedStateHandle.toRoute(TestClass::class) |
تغییرات API
- اضافه بار
NavGraph.setStartDestination
مختص kotlin برای ایمنی نوع از منابع جاوا پنهان است. ( Ic640c , b/364634035 )
رفع اشکال
- از Navigation
2.8.5
: مشکلی را برطرف کرد که در آنNavHost
میتوانست در داخلPredictiveBackHandler
یک استثنا ایجاد کند، اگر پشته پشتی به 1 ورودی پایین بیاید و یک سیستم به عقب در همان فریم راهاندازی شود. ( I1a429 , b/375343407 ) - از Navigation
2.8.5
: هنگام به روز رسانیstartDestination
نمودار،NavDestination
NullPointerException
ثابت شد. ( I99421 , b/361560785 )
نسخه 2.9.0-alpha03
13 نوامبر 2024
androidx.navigation:navigation-*:2.9.0-alpha03
منتشر شد. نسخه 2.9.0-alpha03 حاوی این commit ها است.
ویژگی های جدید
- ایمنی نوع ناوبری اکنون از کلاسهای مقدار به عنوان مسیر یا به عنوان نوع آرگومان مسیر پشتیبانی میکند. ( I9344a , b/374347483 )
رفع اشکال
- وقتی
LifecycleObserver
متصل بهNavBackStackEntry
، هنگامی کهLifecycleOwner
میزبان مانند Activity یا Fragment حالت چرخه عمر خود را تغییر میدهد، تغییری در پشته پشتی ایجاد میکند، یکConcurrentModificationException
برطرف کرد. ( Ia9494 )
نسخه 2.9.0-alpha02
30 اکتبر 2024
androidx.navigation:navigation-*:2.9.0-alpha02
منتشر شد. نسخه 2.9.0-alpha02 حاوی این commit ها است.
مشارکت خارجی
- متد متداول جدید
NavController.handleDeepLink(request: NavDeepLinkRequest)
. با تشکر کنستانتین تسخوربوف! ( I3e228 )
نسخه 2.9.0-alpha01
16 اکتبر 2024
androidx.navigation:navigation-*:2.9.0-alpha01
منتشر شد. نسخه 2.9.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
- ناوبرهای سفارشی اکنون می توانند مقصد خود را به عنوان در حال پیاده سازی رابط
SupportingPane
علامت گذاری کنند که بهNavController
نشان می دهد که این مقاصد در کنار سایر مقاصد نشان داده خواهند شد. به عنوان مثال، با استفاده از این رابط، چندین مقصد را می توان به طور همزمانRESUMED
. ( شناسه 5559 ) - از Navigation
2.8.3
: بررسیهای پرز جدید برای ماژولهایnavigation-common
،navigation-runtime
وnavigation-compose
اضافه شد تا به شناسایی مسیرهای ایمن که به درستی با@Serializable
حاشیهنویسی نشدهاند کمک کند. این بررسی برای همه توابع افزونهNavGraphBuilder
وNavDeepLinkBuilder
اعمال می شود. ( I4a259 , I95402 , Ie601a , Id8c6e , I28bda , b/362725816 ) - از Navigation
2.8.3
: بررسیهای پرز جدید برای ماژولهایnavigation-common
،navigation-runtime
وnavigation-compose
اضافه شد تا به شناسایی مسیرهای ایمن با آرگومانهای Enum کمک کند که به درستی با@Keep
حاشیهنویسی نشدهاند. این بررسی برای همه توابع افزونهNavGraphBuilder
وNavDeepLinkBuilder
اعمال می شود. ( I4a259 , I95402 , Ie601a , Id8c6e , I2b46f , b/358687142 )
تغییرات رفتار
- تلاش برای استفاده از
NavController
که قبلاًDESTROYED
است، اکنون باعث یکIllegalStateException
می شود. ( I520da , b/369616172 )
رفع اشکال
- بهروزرسانی کلاس Enum استثنا یافت نشد تا پیشنهاد استفاده از حاشیهنویسی
@Keep
را در صورتی که کلاس Enum در ساختهای کوچکسازی شده پاک شود را بهروزرسانی کنید. ( I90e79 , b/358137294 )
مسائل شناخته شده
- در قوانین جدید پرز که در
Navigation 2.8.*
اضافه شدهاند مشکلی وجود دارد که هنگام تلاش برای اجرای لینت با افزونه Android Gradle نسخه 8.4 و بالاتر، خطایObsolete custom lint check
را ایجاد میکند. ( b/368070326 , b/371463741 )
نسخه 2.8
نسخه 2.8.5
11 دسامبر 2024
androidx.navigation:navigation-*:2.8.5
منتشر شد. نسخه 2.8.5 حاوی این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن
NavHost
میتوانست در داخلPredictiveBackHandler
یک استثنا ایجاد کند، اگر پشته پشتی به 1 ورودی پایین بیاید و یک سیستم به عقب در همان فریم راهاندازی شود. ( I1a429 , b/375343407 ) - هنگام به روز رسانی
startDestination
یک نمودار،NavDestination
NullPointerException
برطرف کرد. ( I99421 , b/361560785 ) - رفع مشکلی که باعث ایجاد یک انیمیشن در مقیاس غیرمنتظره در هنگام استفاده از Navigation Compose و فراخوانی navigate در همان فریمی شد که انیمیشن فعلی در حال پایان است. ( I26cb1 , b/353294030 )
- وقتی
LifecycleObserver
متصل بهNavBackStackEntry
، هنگامی کهLifecycleOwner
میزبان مانند Activity یا Fragment حالت چرخه عمر خود را تغییر میدهد، تغییری در پشته پشتی ایجاد میکند، یکConcurrentModificationException
برطرف کرد. ( Ia9494 )
نسخه 2.8.4
13 نوامبر 2024
androidx.navigation:navigation-*:2.8.4
منتشر شد. نسخه 2.8.4 حاوی این commit ها است.
ویژگی های جدید
- از Navigation
2.9.0-alpha03
: ایمنی نوع ناوبری اکنون از کلاس مقدار به عنوان مسیر یا به عنوان نوع آرگومان یک مسیر پشتیبانی می کند ( I9344a , b/374347483 )
رفع اشکال
- From Navigation
2.9.0-alpha01
: تلاش برای استفاده ازNavController
که قبلاًDESTROYED
است، اکنون باعث یکIllegalStateException
می شود. ( I520da , b/369616172 )
نسخه 2.8.3
16 اکتبر 2024
androidx.navigation:navigation-*:2.8.3
منتشر شد. نسخه 2.8.3 شامل این commit ها است.
ویژگی های جدید
- بررسیهای پرز جدید برای ماژولهای
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 )
مسائل شناخته شده
- هنگام تلاش برای اجرای لینت با لینت 16 (AGP 8.7) یا بالاتر، خط ناوبری خطای بررسی پرزهای سفارشی منسوخ را ایجاد می کند. ( b/371926651 )
نسخه 2.8.2
2 اکتبر 2024
androidx.navigation:navigation-*:2.8.2
منتشر شد. نسخه 2.8.2 شامل این commit ها است.
ویژگی های جدید
- Navigation Type Safety اکنون از کلاسهای Serializable پشتیبانی میکند که شامل
Double
,Double?
,DoubleArray
,DoubleArray?
،List<Double>
وList<Double>?
بدون نیاز بهNavType
سفارشی. ( I570eb , Ibc4c0 , I37461 , I5bed4 , b/359245753 )
رفع اشکال
- پیام خطا برای زمانی که Navigation نتواند آرگومان مسیر را به
NavType
ترسیم کند، بهبود یافته است، پیام خطای جدید حاوی نام آرگومان، نام آرگومان کاملا واجد شرایط و نام کاملاً واجد شرایط مسیر است. ( Id8416 , b/346264232 )
نسخه 2.8.1
18 سپتامبر 2024
androidx.navigation:navigation-*:2.8.1
منتشر شد. نسخه 2.8.1 حاوی این commit ها است.
ویژگی های جدید
- برای اطمینان از استفاده از تابع
popBackStack
که هنگام تلاش برایpopBackStack
با استفاده از APIهای ایمن نوع، یک نوع کلاس اصلاحشده میگیرد، یک قانون پرز جدید اضافه کرد. ( Ief161 , b/358095343 )
رفع اشکال
- اکنون پیمایش مستلزم آن است که مسیری که به
startDestination
یکNavGraph
ارسال میشود حاوی مقادیری برای همه آرگومانهای مورد نیاز باشد، که شامل آرگومانهایی است که غیر قابل تهی هستند و مقدار پیشفرض ندارند. ( I18e74 , b/362594265 ) - args ایمن ناوبری پشتیبانی از رشتههای غیر قابل تهی را اضافه کرده است، به طوری که مقادیر «تهی» تجزیه و به همان صورت در بسته ذخیره میشوند. این از رفتار موجود که در آن مقادیر "تهی" به یک شی تهی تجزیه می شوند، فاصله می گیرد. این تغییر فقط برای انواع رشته های غیر تهی اعمال می شود. رشته های پوچ بدون تغییر باقی می مانند. ( I08b4a , b/348936238 )
- به
NavDestination
دیگر نمی توان به جز از طریق پیوند عمیقی که صریحاً به مقصد اضافه شده است، به آن پیوند عمیق داد. این همچنین به این معنی است که شما فقط می توانید با اضافه بار تابع پیمایش که مسیر رشته ای را طی می کند، به مسیر مقصد بروید. این یک آسیبپذیری را برطرف میکند که پیوند عمیق به یک مقصد بالقوه محافظت شده را ممکن میسازد. ( Ie30e6 )
به روز رسانی وابستگی
- Navigation Safe Args اکنون به جای Kotlin 2.X به Kotlin 1.9.24 بستگی دارد و اطمینان می دهد که توسعه دهندگان مجبور به به روز رسانی نیستند. ( a4129a )
- Navigation Compose اکنون به Compose
1.7.2
بستگی دارد.
نسخه 2.8.0
4 سپتامبر 2024
androidx.navigation:navigation-*:2.8.0
منتشر شد. نسخه 2.8.0 شامل این commit ها است.
تغییرات مهم از 2.7.0
Navigation Kotlin DSL Type-Safety
- اکنون Navigation با استفاده از Kotlin Serialization، ایمنی نوع را برای Kotlin DSL (که توسط Navigation Compose استفاده میشود) فراهم میکند تا به شما امکان میدهد مقصدها را در نمودار ناوبری خود از طریق نوع اشیاء امن و کلاسهای داده تعریف کنید:
// 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)
}
}
برای اطلاعات بیشتر به پست وبلاگ ناوبری نوشتن meet Type Safety مراجعه کنید.
ناوبری نوشتن بازگشت پیشگو
- Navigation Compose اکنون از طریق APIهای
SeekableTransitionState
جدید از compose-animation از Predictive درون برنامه ای پشتیبانی می کند. این به شما امکان می دهد قبل از تصمیم به انجام تراکنش از طریق ژست تکمیل شده یا لغو، از ژست برگشت برای دیدن مقصد قبلی با Transition سفارشی خود استفاده کنید.
Navigation Fragment Composable
- یک مصنوع
navigation-fragment-compose
جدید اضافه شده است که شامل یکComposableNavHostFragment
جایگزین برایNavHostFragment
است که به شما امکان می دهد مقصدهای قابل ترکیب را به فایل های Navigation XML خود اضافه کنید. هر مقصدcomposable
باید به عنوان یک روش سطح بالا، بدون@Composable
بیان شودandroid:name
هنگام حرکت به یکی از این مقاصد، یک قطعه حاوی برای نمایش محتوای قابل ترکیب ایجاد می شود.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
سایر تغییرات
- Navigation Compose اکنون به Compose 1.7.0 بستگی دارد.
- اکنون Navigation یک کلاس
CollectionNavType<T>
جدید، یک زیر کلاس ازNavType<T>
برای آرگومان های مبتنی بر مجموعه مانند لیست، آرایه ها، نقشه ها ارائه می دهد. همه آرایههای پیشفرضNavType
(IntArrayType
،LongArrayType
،FloatArrayType
،BoolArrayType
، وStringArrayType
) اکنون از این کلاس جدید به ارث میبرند. -
NavType
اکنون از لیست های Int، String، Boolean، Float و Long پشتیبانی داخلی دارد.
نسخه 2.8.0-rc01
21 آگوست 2024
androidx.navigation:navigation-*:2.8.0-rc01
منتشر شد. نسخه 2.8.0-rc01 حاوی این commit ها است.
رفع اشکال
- رفع خرابی ناوبری هنگام عبور از کلاسهای Enum سطح بالا به عنوان آرگومانهای امن تایپ. ( I0ba76 , b/358137294 )
- Navigation 2.8 اکنون به درستی با SDK 34 کار می کند و تا زمان انتشار نسخه 2.9 به همراه بقیه کتابخانه های AndroidX به SDK 35 تعویض نمی شود. ( b/358798728 )
نسخه 2.8.0-beta07
7 آگوست 2024
androidx.navigation:navigation-*:2.8.0-beta07
منتشر شد. نسخه 2.8.0-beta07 حاوی این تعهدات است.
مسائل شناخته شده
- به دلیل b/358137294 ، فقط Enum های تو در تو در یک کلاس دیگر خارج از جعبه پشتیبانی می شوند. Enums سطح بالا در نسخه بعدی پشتیبانی خواهد شد.
رفع اشکال
- هنگام پیمایش به مقصدهای تکراری یا مشترک، ناوبری رفتن به نزدیکترین مقصد منطبق از مکان فعلی در نمودار را اولویت بندی می کند. ( Ic89a4 , b/352006850 )
- پیمایش در args ایمن اکنون یک
NavType.EnumType
جدید اضافه کرده است. این بدان معناست که انواعEnum
دیگر نیازی بهNavType
سفارشی ندارند. توجه داشته باشید کهSerialName
Enum
باید نام پیشفرض کاملا واجد شرایط باشد. ( I66d22 , b/346475493 ) - پیمایش در args ایمن، پشتیبانی داخلی برای انواع آرگومانهای باطل از جمله
Int?
،Long?
Float?
،Boolean?
وEnum<*>?
. ( I32d13 , I1c580 , Ifba66 , I978b0 , Ide076 , b/351994237 ) - اگر مسیر
startDestination
ارسال شده بهNavGraph
دقیقاً برابر باstartDestination.route
باشد،startDestination
NavGraph
اکنون از مقادیر آرگومان پیشفرض استفاده میکند. ( I13762 , b/354046047 )
نسخه 2.8.0-beta06
24 جولای 2024
androidx.navigation:navigation-*:2.8.0-beta06
منتشر شد. نسخه 2.8.0-beta06 حاوی این تعهدات است.
رفع اشکال
- مشکلی را برطرف کرد که در آن بررسیهای
WrongStartDestinationType
اشیاء Companion را در نوع کلاس بررسی نمیکردند و باعث میشد که lint خطا را تشخیص ندهد. ( 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 حاوی این تعهدات است.
رفع اشکال
- اکنون Navigation از پیمایش با رشته های خالی در آرگومان های مسیر پشتیبانی می کند. ( Ic5dbd , b/339481310 )
- پیام خطا را برای سریالسازهای سفارشی که مستقیماً در فیلدهای کلاس از طریق
@Serializable(with =...)
اعلام شده است، بهبود دهید تا مشخص شود که این ویژگی در حال حاضر پشتیبانی نشده است. ( I052b0 , b/341319151 ) - Api تست
SavedStateHandleFactory
اکنون میتواند در تستهای غیر اندرویدی استفاده شود، اما به Robolectric برای پشتیبانی از تجزیه آرگومان با Bundles نیاز دارد. ( I76cdc , b/340966212 ) - رفع خرابی از حالت بازیابی هنگام از سرگیری برنامه پس از مرگ فرآیند با استفاده از ناوبری Type-Safe در نوشتن. ( Ia8f38 , b/341801005 )
- مشکلی در Navigation Compose برطرف شد که در آن پس از لغو ژست بازگشت پیشبینیکننده،
NavBackStackEntry
که کاربر به آن برمیگرداند، هرگز به حالتRESUMED
Lifecycle باز نمیگردد. این همچنین تضمین میکند که مقصد برگشتی بهجای اینکه پس از پرت کردن در جای خود قرار گیرد، بهدرستی به داخل حرکت میکند. ( I97a0c , b/346608857 ) - هنگام استفاده از Predictive Back با Navigation Compose، مقصدی که ظاهر می شود اکنون دارای ترتیب z مناسب است و به درستی در بالای مقصد ورودی متحرک می شود. ( I2077b , b/345993681 )
نسخه 2.8.0-beta03
12 ژوئن 2024
androidx.navigation:navigation-*:2.8.0-beta03
منتشر شد. نسخه 2.8.0-beta03 حاوی این تعهدات است.
تغییرات API
-
CollectionNavType
یک متد انتزاعیemptyCollection()
دارد. برای مدیریت یک مجموعه خالی که به عنوان آرگومان ارسال شده است، این مورد را لغو کنید. ( Ie4d84 , b/341723133 )
رفع اشکال
- اسنادی در
NavType.serializeAsValue
وserializeAsValues
اضافه شد تا مشخص شود که خروجی های نهایی باید با کد Uri باشند. ( Ida6bd , b/344943214 ) - رفع خرابی هنگام فراخوانی
toRoute<T>
با آرگومان تهیCollectionNavType
. هنگام پیمایش باCollectionNavType
تهی، آرگومان خروجی مقدار پیشفرض اعلامشده در کلاس Serializable شما، یا مقدار بازگشتیemptyCollection()
در صورت عدم وجود مقدار پیشفرض خواهد بود. ( I84158 , Id630f , b/342672856 )
نسخه 2.8.0-beta02
29 مه 2024
androidx.navigation:navigation-*:2.8.0-beta02
منتشر شد. نسخه 2.8.0-beta02 حاوی این تعهدات است.
رفع اشکال
- رفع خرابی
ClassCastException
هنگام استفاده ازNavBackStackEntry.toRoute
باNavType
سفارشی قابل پاک کردن. ( I1c29b , b/342239473 ) - رفع مشکلات مربوط به بازیابی وضعیت پشته پشته ناوبری که هنگام تلاش برای بازیابی ورودی پشته پشته که از طریق شناسه از مقصد فعلی قابل دسترسی نیست، ایجاد شد. از آنجایی که مسیرها توسط شناسه پشتیبانی می شوند، مقاصد ساخته شده با مسیرها نیز تحت تأثیر قرار گرفتند. این همچنین خرابی ناشی از فراخوانی
clearBackStack()
که همان مشکل اساسی را داشت برطرف می کند. ( I423c3 , b/339908057 )
نسخه 2.8.0-beta01
14 مه 2024
androidx.navigation:navigation-*:2.8.0-beta01
منتشر شد. نسخه 2.8.0-beta01 حاوی این تعهدات است.
تغییرات API
-
SavedStateHandle.toRoute()
اکنون یک پارامترtypeMap
برای انواع آرگومان سفارشی می گیرد. ( Ie39fb , b/339026523 ) - برای ایجاد یک
SavedStateHandle
از یک شی Kotlin Serializable، یک API آزمایشی بهnavigation-testing
اضافه کرد. ( ID4867 , b/339080702 )
رفع اشکال
- اسناد پارامتری موجود برای توابع Navigation Kotlin DSL اضافه شده است. ( I26a36 )
نسخه 2.8.0-alpha08
1 مه 2024
androidx.navigation:navigation-*:2.8.0-alpha08
منتشر شد. نسخه 2.8.0-alpha08 حاوی این commit ها است.
Safe Args در Navigation Compose
- کار برای پشتیبانی از ایمنی نوع زمان کامپایل برای Navigation Compose و کاربران Navigation Kotlin DSL مبتنی بر سریال سازی Kotlin کامل شده است و APIهای آزمایشی قبلی اکنون پایدار هستند. ( Iea94d , I0eb0d , I873b7 , I3a64b , I6c3a2 , I11f0b , Ic3032 , I8d394 , I95710 , Ice060 , Id0e55 , I45f8dab , I45f30b , If 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)
}
}
برای اطلاعات بیشتر به پست وبلاگ ناوبری نوشتن meet Type Safety مراجعه کنید.
ویژگی های جدید
- مصنوع
navigation-fragment-compose
اکنون یک ترکیبLocalFragment
محلی به روشهای قابل ترکیب درComposableFragment
ارائه میکند. ( 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 حاوی این commit ها است.
ویژگی های جدید
یک مصنوع
navigation-fragment-compose
جدید که شاملComposableNavHostFragment
جایگزینی برایNavHostFragment
است اضافه می کند که به شما امکان می دهد مقصدهایcomposable
را به فایل های Navigation XML خود اضافه کنید. هر مقصد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" />
تغییرات API
- پشتیبانی از Safe Args در Navigation Compose با استفاده از رویکردی مبتنی بر سریال سازی Kotlin ادامه یافت. این APIها تمام نشده اند و با حاشیه نویسی
ExperimentalSafeArgsApi
علامت گذاری شده اند. هنگامی که کل سطح API در نسخه بعدی تکمیل شود، این حاشیه نویسی حذف خواهد شد. ( Iefd95 , I409c8 , I5b5ac , I7e753 , I960f8 , I3eabd , I8ed5a , Ied2c9 , I9b73c , I554db , Ib3aba , Ia668d , b/1396 )
نسخه 2.8.0-alpha06
3 آوریل 2024
androidx.navigation:navigation-*:2.8.0-alpha06
منتشر شد. نسخه 2.8.0-alpha06 حاوی این commit ها است.
تغییرات API
- پشتیبانی از Safe Args در Navigation Compose با استفاده از رویکردی مبتنی بر سریال سازی Kotlin آغاز شده است. این APIها تمام نشده اند و با حاشیه نویسی
ExperimentalSafeArgsApi
علامت گذاری شده اند. هنگامی که کل سطح API در نسخه بعدی تکمیل شود، این حاشیه نویسی حذف خواهد شد. ( I644e7 , I98896 , I2a1c5 , I43a51 , I836a1 , Ic5eec , I39407 , I24e41 , If9e14 , Ibb13e , If44d3 , Icb70f 2f 32b , I891 I20a14 , I262aa , I7de99 , I35990 , I1033d , b/188693139 )
رفع اشکال
-
NavHost
اکنون ازAlignment.TopStart
به عنوان آرگومان پیش فرض contentAlignment استفاده می کند. این آن را در راستای پیشفرضAnimatedContent
قرار میدهد و برخی از نمونههای مقیاس غیرمنتظره از انتقال مرکز را برطرف میکند. ( I09e72 , b/330111602 ) - هنگامی که در حین استفاده از Navigation Compose، ژست پیشبینی کننده به عقب را تکان میدهید،
NavHost
اکنون بهجای اتمام فوری، انتقال سفارشی را به درستی تکمیل میکند. ( I99017 , b/327292110 )
نسخه 2.8.0-alpha05
20 مارس 2024
androidx.navigation:navigation-*:2.8.0-alpha05
منتشر شد. نسخه 2.8.0-alpha05 حاوی این commit ها است.
ویژگی های جدید
- اکنون می توانید آرگومان ها را مستقیماً در مسیر
startDestination
بهstartDestination
NavGraph
بدون اتکا بهdefaultValue
ارسال کنید. این در موردNavGraph
startDestinations
تودرتو نیز صدق می کند. ( I0e0b5 , b/109505019 , b/188693139 )
تغییرات API
- کلاس انتزاعی جدید
CollectionNavType<T>
، یک زیر کلاس ازNavType<T>
برای آرگومان های مبتنی بر مجموعه مانند لیست، آرایه ها، نقشه ها اضافه شد. ( Ic6d63 , b/188693139 ) - همه آرایه های پیش فرض
NavType
(IntArrayType
،LongArrayType
،FloatArrayType
،BoolArrayType
، وStringArrayType
) اکنون از نوعCollectionNavType
هستند ( Idcf79 ، b/188693139 ) -
NavType
اکنون یک API باز جدیدvalueEquals
ارائه می دهد که تعیین می کند آیا دو مقدار از یک نوع با یکدیگر برابر هستند یا خیر. ( I6cb97 , b/327229511 )
رفع اشکال
- پارامترهای پرس و جو در پیوندهای عمیق اکنون به مقادیری به شکل پرانتزهای فرفری در اطراف نام آرگومان (یعنی
{argName}
) به عنوان مقادیر معتبر برایNavTypes
مبتنی بر رشته اجازه می دهد. این مشکل را برطرف می کند که در آن چنین مقداری برای همه انواع نامعتبر (یا عدم وجود مقدار) در نظر گرفته می شود. ( I18302 , b/327274038 ) - توابع
NavController
که از مسیرهایی مانندnavigate
یاpopBackStack
پشتیبانی می کنند، اکنون می توانند مسیرهای پر شده با آرگومان های ArrayNavTypes
را به درستی مطابقت دهند. ( Iea805 , b/327229511 )
نسخه 2.8.0-alpha04
6 مارس 2024
androidx.navigation:navigation-*:2.8.0-alpha04
منتشر شد. نسخه 2.8.0-alpha04 حاوی این commit ها است.
ویژگی های جدید
- اکنون میتوانید
SizeTranform
را برای انتقالهای خود در Navigation Compose با تعریف آنها به عنوان بخشی از مقداردهی اولیه برای توابعcomposable
و/یاnavigation
مشخص کنید. ( I91062 , b/296912651 )
رفع اشکال
- مشکلی را که در آن
NavHost
در Compose Navigation در هنگام استفاده از System Back بدون اشاره به درستی انتقال را نشان نداد، برطرف شد. ( Iceeae , b/325998468 )
نسخه 2.8.0-alpha03
21 فوریه 2024
androidx.navigation:navigation-*:2.8.0-alpha03
منتشر شد. نسخه 2.8.0-alpha03 حاوی این commit ها است.
تغییرات API
-
NavBackStackEntry.savedStateHandle
اکنون به عنوان@MainThread
علامت گذاری شده است زیرا از کدی استفاده می کند که به هر حال باید در رشته اصلی باشد. ( Ibb988 , b/299523245 )
رفع اشکال
- مشکلی در Navigation برطرف شد که باعث شد
NavGraph
ViewModels خیلی زودDESTROYED
زیراViewModel
ورودی مرتبط بخشی از حالت ذخیره شده نبود. ( Ib6bb7 , b/317581849 )
به روز رسانی وابستگی
- Navigation Compose اکنون به Compose 1.7.0-alpha03 بستگی دارد.
نسخه 2.8.0-alpha02
7 فوریه 2024
androidx.navigation:navigation-*:2.8.0-alpha02
منتشر شد. نسخه 2.8.0-alpha02 حاوی این commit ها است.
ویژگی های جدید
- Navigation Compose اکنون از طریق APIهای
SeekableTransitionState
جدید از compose-animation از Predictive درون برنامه ای پشتیبانی می کند. این به شما امکان می دهد قبل از تصمیم به انجام تراکنش از طریق ژست تکمیل شده یا لغو، از ژست برگشت برای دیدن مقصد قبلی با Transition سفارشی خود استفاده کنید. ( I8b8e9 )
نسخه 2.8.0-alpha01
24 ژانویه 2024
androidx.navigation:navigation-*:2.8.0-alpha01
منتشر شد. نسخه 2.8.0-alpha01 حاوی این commit ها است.
رفع اشکال
- رفع نشت
BackStackState
که در آن چندین تماسsaveState
در یک مقصد منجر به ذخیره چندین حالت میشود، اما تنها حالت اول میتواند بازیابی شود. ( I598b0 , b/309559751 ) - مشکلی را برطرف کرد که در آن هنگام استفاده از کمککنندههای
NavigationUI
برای پر کردن عنوان نوارهای برنامه، آرگومانهای غیر رشتهای به درستی نمایش داده نمیشدند. ( #636 , b/316676794 )
به روز رسانی وابستگی
- Navigation Compose اکنون به Compose
1.7.0-alpha01
بستگی دارد که مشکلی را برطرف کند که میتواند باعث ایجاد انیمیشن در مقیاس غیرمنتظره شود. ( b/297258205 )
مشارکت خارجی
- از SimonMarquis برای رفع مشکل نمایش آرگومانهای غیر رشتهای در هنگام استفاده از کمککنندههای
NavigationUI
برای پر کردن عنوان نوارهای برنامه تشکر میکنیم.
نسخه 2.7.7
نسخه 2.7.7
7 فوریه 2024
androidx.navigation:navigation-*:2.7.7
منتشر شد. نسخه 2.7.7 حاوی این commit ها است.
رفع اشکال
- بکپورت شده از Navigation
2.8.0-alpha01
: رفع نشتBackStackState
که در آن چندینsaveState()
در یکNavBackStackEntry
منفرد باعث ذخیره چندین حالت می شد، اما فقط اولین حالت ذخیره شده می تواند بازیابی شود. ( I598b0 , b/309559751 ) - پسپورتشده از Navigation
2.8.0-alpha01
: مشکلی را برطرف کرد که در آن هنگام استفاده از کمکهایNavigationUI
برای پر کردن عنوان نوارهای برنامه، آرگومانهای غیر رشتهای به درستی نمایش داده نمیشدند. ( #636 , b/316676794 )
مشارکت خارجی
- از SimonMarquis برای رفع مشکل نمایش آرگومانهای غیر رشتهای در هنگام استفاده از کمککنندههای
NavigationUI
برای پر کردن عنوان نوارهای برنامه تشکر میکنیم.
نسخه 2.7.6
نسخه 2.7.6
13 دسامبر 2023
androidx.navigation:navigation-*:2.7.6
منتشر شد. نسخه 2.7.6 حاوی این commit ها است.
رفع اشکال
- تابع
NavGraph
equals()
اکنون بهجای گره فراخوان گرههای گراف دیگر را به درستی در نظر میگیرد. این تضمین میکند که نمودارهایی که دارای گرههایی با شناسههای مختلف هستند دیگر برابر در نظر گرفته نخواهند شد ( I401cb , b/311414915 )
نسخه 2.7.5
نسخه 2.7.5
1 نوامبر 2023
androidx.navigation:navigation-*:2.7.5
منتشر شد. نسخه 2.7.5 حاوی این commit ها است.
بهبود عملکرد
- عملکرد مقایسه دو نمودار (هم از نظر زمان و هم از نظر تعداد تخصیص) را به شدت بهبود بخشید. این بدان معنی است که فراخوانی هایی مانند
setGraph
که به صورت داخلی نمودار جدید را با نمودار موجود مقایسه می کند بسیار سریعتر است و منجر به فریم های کمتری می شود که رد شده اند. متشکرم Michał Z برای تجزیه و تحلیل کاملی که منجر به این بهبود شد. ( I6ad62 ) -
NavHost
اکنون به جای اینکه برای خواندن وضعیت به روز شده منتظر پاس دوم باشد، مقصد شروع را در اولین پاس ترکیبی ارائه می کند. ( I439a7 , b/304852206 )
رفع اشکال
- اگر بیش از یک بار با همان نمودار
setGraph
تماس بگیرید، تنها در صورتی که مقصدی در نمودار شما وجود داشته باشد که حاوی عملکردی باشد که دو مقصد را به هم مرتبط میکند، مشکلی را برطرف میکند. ( Ieaed7 ) - دیالوگهایی که بهسرعت پیمایش شده و رد شدهاند، دیگر به فهرست
NavController.visibleEntries
نشت خواهند کرد. ( I67586 , b/287969970 ) - هنگامی که یک ورودی ظاهر می شود و به دنبال آن تغییری در پیکربندی ایجاد می شود، اگر
saveState
نادرست باشد،ViewModel
ورودی به درستی پاک می شود. ( Idf242 , b/298164648 ) - اگر پشته پشتی قبل از تغییر پیکربندی یا فراخوانی
setGraph
کاملاً خالی بود، فقط زمانی که Intent دارای پرچمFLAG_ACTIVITY_NEW_TASK
تنظیم شده بود،NavController
میتوانست یک پیوند عمیق را بیش از یک بار مدیریت کند. ( I73c7f )
به روز رسانی های وابستگی
- پیمایش با Fragments اکنون به Fragment 1.6.2 بستگی دارد و مشکلی را برطرف می کند که در آن نمونه های
ViewModel
قطعات تودرتو هنگام فراخوانیclearBackStack
پاک نمی شوند.
نسخه 2.7.4
نسخه 2.7.4
4 اکتبر 2023
androidx.navigation:navigation-*:2.7.4
منتشر شد. نسخه 2.7.4 حاوی این commit ها است.
ویژگی های جدید
- پشتیبانی از
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 حاوی این commit ها است.
رفع اشکال
- مشکلی در Navigation with Fragments که باعث می شد لیست
visibleEntries
حاوی ورودی های نادرست باشد، برطرف شد. ( I5caa9 , b/288520638 ) - مشکلی که باعث میشد مقصد پنجره شناور (مانند
Dialogs
،Bottomsheets
، و غیره) هرگز پاسخی به چرخه حیاتRESUMED
دریافت نکند، برطرف شد. ( I3b866 , b/287505132 )
نسخه 2.7.2
نسخه 2.7.2
6 سپتامبر 2023
androidx.navigation:navigation-*:2.7.2
منتشر شد. نسخه 2.7.2 حاوی این commit ها است.
رفع اشکال
- پیمایش اکنون به Lifecycle
2.6.2
بستگی دارد، که تعاملی بینrememberSaveable
وNavHost
Navigation Compose را برطرف میکند که باعث میشود وضعیتrememberSaveable
مقصدها و هر نمونهSavedStateHandle
متعلق بهViewModel
به درستی پس از مرگ فرآیند و بازیابی بازیابی شود. ( b/298059596 , b/289436035 ) - مشکلی در نمایش همزمان چند دیالوگ در Navigation Compose که در آن دیالوگهای تا حدی مبهم (مثلاً نه بالاترین محاوره) در حالت
CREATED
Lifecycle به جای حالتSTARTED
هستند، برطرف شد. ( aosp/2728520 , b/289257213 ) - مشکلی در نمایش همزمان چند دیالوگ در «نوشتن پیمایش» برطرف شد که رد کردن بالاترین گفتگو باعث میشد که بالاترین گفتگوی جدید به جای انتقال صحیح به
RESUMED
در وضعیت چرخه حیاتSTARTED
گیر کند. ( aosp/2629401 , b/286371387 ) - Navigation Safe Args دیگر اگر واقعاً اجرا نشود، کار خود را مشتاقانه انجام نمی دهد. ( I0e385 , b/260322841 )
به روز رسانی وابستگی
- Navigation Compose اکنون به Compose 1.5.1 بستگی دارد.
نسخه 2.7.1
نسخه 2.7.1
23 آگوست 2023
androidx.navigation:navigation-*:2.7.1
منتشر شد. نسخه 2.7.1 حاوی این commit ها است.
رفع اشکال
- مشکلی را در Navigation با 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 حاوی این commit ها است.
تغییرات مهم از 2.6.0
انیمیشن ها از Accompanist
اکنون که AnimatedContent
پایدار است، توانستیم کد را از Accompanist Navigation Animation به خود Navigation Compose برگردانیم.
این به این معنی است که تمام پشتیبانی برای تنظیم انتقال های سفارشی که در AnimatedNavHost
وجود داشت مستقیماً در NavHost
پشتیبانی می شود.
هیچ تغییر دیگری در Accompanist Navigation Animation اعمال نمیشود و بهزودی آن را بهطور رسمی منسوخ خواهیم کرد، همراه با راهنمایی در مورد نحوه بازگشت به خود Navigation Compose، اما این برعکس راهنمای مهاجرت خواهد بود و نیازی به تغییرات API دیگری نیست. اگر در حال حاضر از آخرین آلفای Accompanist ( 0.31.2-alpha
) استفاده می کنید. ( b/197140101 )
رفع اشکال
- NavHost در Navigation Compose اکنون حتی پس از توقف و ازسرگیری فعالیت، تماسهای سیستم را به درستی قطع میکند. ( Icb6de , b/279118447 )
به روز رسانی های وابستگی
- اکنون پیمایش به Compose
1.5.0
از1.1.0
بستگی دارد.
نسخه 2.7.0-rc01
26 جولای 2023
androidx.navigation:navigation-*:2.7.0-rc01
منتشر شد. نسخه 2.7.0-rc01 حاوی این commit ها است.
رفع اشکال
- مشکلی را برطرف کرد که در آن لامبداهای
EnterTransition
وExitTransition
ایجاد شده به عنوان بخشی ازNavHost
میتوانند به طور بالقوه در حافظه باقی بمانند، حتی پس از حذفNavHost
از ترکیب. ( I893d0 )
مسائل شناخته شده
- مشکلی از Navigation 2.6.x وجود دارد که هنگام پیمایش با popUpTo ممکن است یک
IllegalArgumentException
ایجاد شود. ممکن است با تغییر ساختار نمودار خود، مانند توصیهای که در اینجا پیشنهاد شده است، از این استثنا جلوگیری شود. ( b/287133013 )
نسخه 2.7.0-beta02
28 ژوئن 2023
androidx.navigation:navigation-*:2.7.0-beta02
منتشر شد. نسخه 2.7.0-beta02 حاوی این تعهدات است.
رفع اشکال
- Navigation Compose اکنون ترتیب z مناسب را برای انتقالهای سفارشی دارد که از navigate با گزینه
popUpTo
استفاده میکنند. ( /Ib1c3a ، b/285153947 )
نسخه 2.7.0-beta01
7 ژوئن 2023
androidx.navigation:navigation-*:2.7.0-beta01
منتشر شد. نسخه 2.7.0-beta01 حاوی این تعهدات است.
رفع اشکال
-
NavHost
در Navigation Compose اکنون به درستی تماس های سیستم را حتی پس ازSTOPPED
وRESUMED
Activity
رهگیری می کند. ( Icb6de , b/279118447 )
نسخه 2.7.0-alpha01
24 مه 2023
androidx.navigation:navigation-*:2.7.0-alpha01
منتشر شد. نسخه 2.7.0-alpha01 حاوی این commit ها است.
انیمیشن ها از Accompanist
اکنون که AnimatedContent
پایدار است، توانستیم کد را از Accompanist Navigation Animation به خود Navigation Compose برگردانیم.
این به این معنی است که تمام پشتیبانی برای تنظیم انتقال های سفارشی که در AnimatedNavHost
وجود داشت مستقیماً در NavHost
پشتیبانی می شود.
هیچ تغییر دیگری در Accompanist Navigation Animation اعمال نمیشود و بهزودی آن را بهطور رسمی منسوخ خواهیم کرد، همراه با راهنمایی در مورد نحوه بازگشت به خود Navigation Compose، اما این برعکس راهنمای مهاجرت خواهد بود و نیازی به تغییرات API دیگری نیست. اگر در حال حاضر از آخرین آلفای Accompanist ( 0.31.2-alpha
) استفاده می کنید. ( b/197140101 )
رفع اشکال
- From Navigation
2.6.0-rc02
: مشکلی در Navigation در Fragments برطرف شد که در آن پیمایش با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 حاوی این commit ها است.
تغییرات مهم در Navigation از 2.5.0
-
arguments
NavBackStackEntry
وarguments
ارسال شده بهOnDestinationChangedListener
اکنون فقط یک کپی از آرگومانهای تغییرناپذیر هستند که هنگام حرکت به مقصد ایجاد شدهاند. این بدان معناست که هرگونه تغییری که در آن دستهها ایجاد شده باشد، در دسترسیهای بعدی بهarguments
یا سایر نمونههایOnDestinationChangedListener
منعکس نخواهد شد. -
NavDeepLink
اکنون از مقادیر پیشفرض برای آرایهها پشتیبانی میکند، که امکان پشتیبانی از پارامترهای پرس و جوی مکرر را فراهم میکند که به نوع آرایه آرگومان نگاشت میشوند.NavType
همچنین اکنون شامل یک روش پیش فرض است که می تواند برای ترکیب دو مقدار تجزیه شده لغو شود. - زیر کلاسهای سفارشی
NavType
اکنون میتوانندserializeAsValue
برای سریالسازی یک مقدار در یک رشته لغو کنند، و اجازه میدهند هم سریالسازی و هم deserialization (از طریقparseValue
) به طور کامل در کلاسNavType
کپسوله شوند.StringType
اکنون این روش را برای تماس باUri.encode
درString
داده شده غلبه می کند.
تغییرات مهمی در ترکیب ناوبری از 2.5.0
- هنگام پیش نمایش یک ترکیب با
NavHost
، اکنونstartDestination
Navgraph را به طور پیش فرض نشان می دهد. -
NavController.popBackStack(route)
،NavController.getBackStackEntry(route)
،NavController.clearBackStack(route)
اکنون همه مسیرهای پشتیبانی را با آرگومان های جزئی یا کاملاً پر از آن پشتیبانی می کنند. توجه داشته باشید که آرگومان ها باید با استدلال های ورودی یک مسابقه دقیق باشند. - تلاش برای ایجاد یک
NavDeepLink
خالی با استفاده ازnavDeepLink
Kotlin DSL اکنون منجر به هشدار خط می شود که نشان می دهد یک پیوند عمیق به یک URI ، عمل و/یا mimetype نیاز دارد تا معتبر باشد.
تغییرات مهم در ناوبری با قطعات از 2.5.0
-
NavHostFragment
دیگر دکمه عقب سیستم را رهگیری نمی کند. این امر به شما امکان می دهد کهFragmentManager
زیربنایی سیستم را به عقب برگرداند. این اجازه می دهد تا قطعه1.7.0-alpha01
و بالاتر باشد تا یک انیمیشن پشتی درون برنامه ای را در دستگاه های Android U فراهم کند. - هنگام استفاده از ناوبری با قطعات ، تلاش برای انجام دستی یک
FragmentTransaction
قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعهIllegalArgumentException
FragmentManager
صورت دستی اضافه می کند. شما همیشه باید قطعات را از طریق APInavigate()
اضافه کنید. - هنگام استفاده از رشته دقیق
${applicationId}
به عنوان نگهدارنده مکان درapp:data
وapp:dataPattern
در عنصر فعالیت یک پرونده XML ناوبری ، محل نگهدارنده به طور خودکار باpackageName
متن پس از تورم پر می شود. -
FragmentNavigator
اکنون از API های انتقال در هنگام پیمایش و ظاهر شدنNavBackStackEntries
استفاده می کند. این بدان معنی است کهLifecycle
NavBackStackEntry
اکنون منتظر ورود و خروج جلوه های ویژه قطعات قبل از حرکتLifecycle.State
نهایی خود هستند. -
DialogFragmentNavigator
اکنون هنگام پیمایش و ظاهر شدنNavBackStackEntries
از API های انتقال استفاده می کند. این بدان معناست کهLifecycle
NavBackStackEntry
اکنون منتظرLifecycle
DialogFragment
می شود تا قبل از حرکت به سمتDESTROYED
خود ، بهDESTROYED
حرکت کند. -
NavHostFragment
اکنون به شما امکان می دهد تا به محض وصل کردنNavHostFragment
بهFragmentManager
، به جای اینکه فقط پس ازonCreate()
وصل شودNavController
بازیابی کنید. - پشتیبانی ناوبری از ماژول های ویژگی پویا اکنون به کتابخانه تحویل ویژگی بازی گرانول بستگی دارد.
- Navigation Safe Args اکنون به افزونه Android Gradle نسخه 7.3.0 بستگی دارد. این بدان معنی است که اکنون فقط با نسخه های 7.3.0+ سازگار است.
تغییرات مهم در ناوبری از 2.5.0
- هنگام انتقال شناسه نمودار ناوبری به
AppBarConfiguration
(مانند از طریقMenu
) ،NavigationUI
اکنون فقط مقصد شروع آن نمودار ناوبری را به عنوان یک مقصد سطح بالا می داند ، نه اینکه به طور نادرست هر مقصد را در نمودار به عنوان یک مقصد سطح بالا مشخص کنید. رفتار عبور از شناسه یک مقصد فردی بدون تغییر است. این عملکرد مشابه از طریق عملکرد جدیدisTopLevelDestination
درAppBarConfiguration
در دسترس است. - ادغام های
setupWithNavController
درNavigationUI
برای کار با نوار برنامه برتر ، اکنون مقادیرR.string
را برای آرگومان هایReferenceType
موجود درandroid:label
. -
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 شامل این تعهدات است.
رفع اشکال
- رفع مشکل در ناوبری با قطعاتی که حذف یک قطعه از طریق پیمایش با
popUpTo
در پاسخonResume()
آن باعث ایجادIllegalStateException
می شود. ( I21884 ، b/279644470 )
نسخه 2.6.0-beta01
19 آوریل 2023
androidx.navigation:navigation-*:2.6.0-beta01
منتشر می شود. نسخه 2.6.0-beta01 شامل این تعهدات است.
ویژگی های جدید
-
NavBackStackEntry
اکنون یک اجرایtoString
سفارشی را ارائه می دهد. ( iff00b )
رفع اشکال
- هنگام استفاده از ناوبری با قطعات ، تلاش برای انجام دستی یک
FragmentTransaction
قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعهIllegalArgumentException
FragmentManager
صورت دستی اضافه می کند. شما همیشه باید قطعات را از طریق APInavigate()
اضافه کنید. ( i6d38e ) - هنگامی که یک
navigate
وجود دارد که یک ورودی و یکpopBackStack
اضافه می کند که آن را در همان قاب حذف می کند ، ورود بالای آن در پشته پشتی اکنون به طور مداوم آن را بهLifecycle.State
RESUMED
سر گرفته می کند. ( 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 ) - اگر عملیات ناوبری از دست نرود یک
NavArgument
غیر قابل تهی مورد نیاز توسطNavDestination
کهAction/MimeType
با آن مطابقت دارد ، اکنون ناوبری های Deeplink بر اساسAction/MimeType
شکست خواهند خورد. ( IBFA17 ، B/271777424 ) - هنگامی که
NavController
نمودار را با همان مسیر و مقصد مانند نمودار قبلی تنظیم می کند ، اکنون به درستی گره های نمودار فعلی و مقصد پشته های پشت آن را با موارد جدید جایگزین می کند. این تصادف هنگام استفاده ازonLaunchSingleTop
بدون صرفه جویی در وضعیت در آهنگسازی ناوبری را برطرف می کند. این همچنین خطایی را برطرف می کند که در آن حرکت به مقصد های مرتبط با نمودار ریشه و پشته پشت نادرست است. ( i5bc58 ، b/275258161 ، b/275407804 )
نسخه 2.6.0-alpha08
22 مارس 2023
androidx.navigation:navigation-*:2.6.0-alpha08
منتشر می شود. نسخه 2.6.0-alpha08 شامل این تعهدات است.
ویژگی های جدید
-
NavHostFragment
اکنون به شما امکان می دهد تا به محض وصل کردنNavHostFragment
بهFragmentManager
، به جای اینکه فقط پس ازonCreate()
وصل شود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
API که مسیرها را طی می کنند ، اکنون الگوهای مسیر را با آرگومان های قابل برگشت و پارامترهای پرس و جو قابل تهی می گیرند ( I22294 ، B/269302500 ) - مسئله ای که فراخوانی
clearBackStack()
ازNavController
وضعیت ذخیره شده را در مدیر قطعه مرتبط با پشته پشت پاک شده پاک نمی کند. ( IC1CCE ، B/271190202 ) - رگرسیون را در 2.6.0-alpha06 برطرف کرد که باعث شد
MenuItem
اشتباه درBottomNavigationView
هنگام استفاده از سیستم بین زبانه ها برجسته شود. ( i634f6 ، b/270447657 ) - رگرسیون ثابت در 2.6.0-alpha06 که باعث شد
NavBackStackEntry
S هنگام استفاده ازAnimation
به حالت رزومه منتقل نشود. ( IB3589 ، B/269646882 )
نسخه 2.6.0-alpha06
22 فوریه 2023
androidx.navigation:navigation-*:2.6.0-alpha06
منتشر می شود. نسخه 2.6.0-alpha06 شامل این تعهدات است.
ویژگی های جدید
- هنگام پیش نمایش یک ترکیب با
NavHost
، اکنونstartDestination
Navgraph را به طور پیش فرض نشان می دهد. ( i2b89f )
تغییرات API
- تمام اضافه بار
NavController
اکنون با@MainThread
navigate
نویسی شده اند تا اطمینان حاصل شود که از آنها در موضوع اصلی فراخوانی می شوند. ( I2C0B0 ، B/263427111 )
رفع اشکال
- هنگام تلاش برای حرکت در حین استفاده از ناوبری قطعات پویا ، تصادف را برطرف کرد. ( i3ee29 ، b/268360479 )
- اشکال ثابت که در آن حرکت به قطعه دیگر از طریق دکمه پشت سیستم ، نوار پایین را به مورد انتخاب شده صحیح به روز نمی کند ( IF559F ، B/269044426 )
مسائل شناخته شده
- هنگام استفاده از ناوبری با قطعات ، چرخه عمر
NavBackStackEntry
هنگام استفاده از API هایAnimation
نتواندRESUMED
. ( b/269646882 ) - هنگام استفاده از ناوبری با قطعات و پیمایش با
BottomNavigation
، اگر سعی می کنید یک پشته پشتی را با ورودی های متعدد بازیابی کنید ،BottomMenuItem
به درستی به روز نمی شود. ( b/270447657 ) - هنگام استفاده از ناوبری با قطعات ، پس از بازگرداندن حالت ،
Lifecycle
NavBackStackEntry
هنگام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
اکنون از API های انتقال در هنگام پیمایش و ظاهر شدنNavBackStackEntries
استفاده می کند. این بدان معنی است کهLifecycle
NavBackStackEntry
اکنون منتظر ورود و خروج جلوه های ویژه قطعات قبل از حرکتLifecycle.State
نهایی خود هستند. ( i3cb19 ، b/238686802 ) -
DialogFragmentNavigator
اکنون هنگام پیمایش و ظاهر شدنNavBackStackEntries
از API های انتقال استفاده می کند. این بدان معناست کهLifecycle
NavBackStackEntry
اکنون منتظرLifecycle
DialogFragment
می شود تا قبل از حرکت به سمتDESTROYED
خود ، بهDESTROYED
حرکت کند. ( i53ee5 ، b/261213893 )
تغییرات API
-
NavigatorState
اکنون APIprepareForTransition
فراهم می کند تاNavigator
بتواندNavBackStackEntries
بهLifecycle.State
متوسط منتقل کند. ( i42c21 ، b/238686802 ) - اکنون می توانید از طریق یک ویژگی
backstack
به پشته پشتی مرتبط با یکNavGraphNavigator
یا یکComposeNavigator
استفاده کنید.ComposeNavigator
همچنین اکنون پاسخ به تماسonTransitionComplete()
را برای علامت گذاری یکNavBackStackEntry
که یک عملیات پیمایش یاpopBackStack
را انجام داده است ، در معرض نمایش قرار می دهد. ( I02062 ، I718DB ، B/257519195 )
رفع اشکال
- Navigator State هنگام استفاده از API های
push/popWithTransition
اکنون بدون آنکه باشد و از قبل وارد آن می شود. ( IADBFA ، B/261213893 ) - هنگام استفاده از
launchSingleTop
با یکNavGraph
تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در توstartDestination
در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو در تو است. ( id4bea ، b/253256629 ) - ناوبری اکنون هنگام حرکت به همان مقصد با پرچم
launchSingleTop
که روی True قرار دارد ، به درستی جایگزین نمونهDialogFragment
می شود. ( i45b5a ، b/149572817 ) - Safeargs Navigation در هنگام استفاده از آرگوارهایی که دقیقاً 19 کاراکتر دارند ، دیگر خطای تلفیقی ایجاد نمی کنند. ( id60bc ، b/257110095 )
نسخه 2.6.0-alpha04
9 نوامبر 2022
androidx.navigation:navigation-*:2.6.0-alpha04
منتشر می شود. نسخه 2.6.0-alpha04 شامل این تعهدات است.
ویژگی های جدید
- زیر کلاسهای سفارشی
NavType
اکنون می تواندserializeAsValue
تحت الشعاع قرار دهد تا یک مقدار را در یک رشته سریال کند ، و این امکان را می دهد که هم سریال سازی و هم از بین برود (از طریقparseValue
) کاملاً در کلاسNavType
محصور شود.StringType
اکنون این روش را برای تماس باUri.encode
درString
داده شده غلبه می کند. ( IE5213 ، b/247637434 ) -
NavigationUI
اکنون در صورت عدم حرکت از طریقMenuItem
انتخاب شده ، سیاهههای مربوط را ارائه می دهد. ( i2af5a ، b/247730357 )
رفع اشکال
- پیوندهای عمیق ناوبری اکنون به جای اینکه در ابتدای نمودار قرار بگیرند که می تواند عملکرد برنامه را در شروع کار بهبود بخشد ، تنبل شده است. ( IAB0AB )
- تصادف ثابت ناشی از پیمایش پس از پیوند عمیق به یک مقصد با آرگومان های پیش فرض تهی. ( i51c24 ، b/243183636 )
به روز رسانی وابستگی
- پشتیبانی ناوبری از ماژول های ویژگی پویا اکنون به کتابخانه تحویل ویژگی بازی گرانول بستگی دارد. ( IB4DDC )
- Navigation Safe Args اکنون به افزونه Android Gradle نسخه 7.3.0 بستگی دارد. این بدان معنی است که اکنون فقط با نسخه های 7.3.0+ سازگار است. ( i47e49 )
نسخه 2.6.0-alpha03
24 اکتبر 2022
androidx.navigation:navigation-*:2.6.0-alpha03
منتشر می شود. نسخه 2.6.0-alpha03 شامل این تعهدات است.
رفع اشکال
- از ناوبری
2.5.3
:NavHost
دیگر باعث ایجادNoSuchElementException
نمی شود وقتی که هیچ مقصدی برای تهیهCrossfade
در دسترس نباشد. اکنون فقط از این ترکیب پرش خواهد کرد. ( IEB46E ، B/253299416 ) - از ناوبری
2.5.3
: مسئله ای را که در آن حالت صرفه جویی شده (به عنوان مثال ، استفاده ازrememberSaveable
) فراموش نشده و حذف نمی شود و هنگام بیرون آمدن یک مقصد از پشته پشتی ، فراموش نشده و حذف نمی شوند. ( i64949 )
به روز رسانی های وابستگی
- ناوبری اکنون به قطعه
1.5.4
بستگی دارد. ( ICD424 )
نسخه 2.6.0-alpha02
5 اکتبر 2022
androidx.navigation:navigation-*:2.6.0-alpha02
منتشر می شود. نسخه 2.6.0-alpha02 شامل این تعهدات است.
تغییرات رفتار
- هنگام انتقال شناسه نمودار ناوبری به
AppBarConfiguration
(مانند از طریقMenu
) ،NavigationUI
اکنون فقط مقصد شروع آن نمودار ناوبری را به عنوان یک مقصد سطح بالا می داند ، نه اینکه به طور نادرست هر مقصد را در نمودار به عنوان یک مقصد سطح بالا مشخص کنید. رفتار عبور از شناسه یک مقصد فردی بدون تغییر است. این عملکرد مشابه از طریق عملکرد جدیدisTopLevelDestination
درAppBarConfiguration
در دسترس است. ( 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 شامل این تعهدات است.
ویژگی های جدید
- ادغام های
setupWithNavController
درNavigationUI
برای کار با نوار برنامه برتر ، اکنون مقادیرR.string
را برای آرگومان هایReferenceType
موجود درandroid:label
. ( i5f803 ، b/167959935 ) -
NavDeepLink
اکنون از مقادیر پیش فرض برای آرایه ها پشتیبانی می کند ، که امکان پشتیبانی از پارامترهای پرس و جو مکرر را فراهم می کند که به نوع آرایه آرگومان می پردازد.NavType
همچنین اکنون یک روش پیش فرض را شامل می شود که می تواند برای ترکیب دو مقدار تجزیه شده بیش از حد باشد. ( id68c3 ، b/209977108 ) - هنگام استفاده از رشته دقیق
${applicationId}
به عنوان نگهدارنده مکان درapp:data
وapp:dataPattern
در عنصر فعالیت یک پرونده XML ناوبری ، محل نگهدارنده به طور خودکار باpackageName
متن پس از تورم پر می شود. ( iaabde ، b/234223561 ) - تلاش برای ایجاد یک
NavDeepLink
خالی با استفاده ازnavDeepLink
Kotlin DSL اکنون منجر به هشدار خط می شود که نشان می دهد یک پیوند عمیق به یک URI ، عمل و/یا mimetype نیاز دارد تا معتبر باشد. ( I08D2F ، B/154038883 )
تغییرات API
- عملکرد جدید پسوند
NavDestination
را برای تجزیه برچسب های پویا با آرگومان در قالبandroid:label="{arg}"
به رشته. با تجزیه مقادیرR.string
در مقادیر رشته خود ، آرگومان هایReferenceType
را پشتیبانی می کند. ( I07D89 ، B/236269380 )
تغییرات رفتار
-
arguments
های Navbackstackentry وarguments
منتقل شده بهOnDestinationChangedListener
اکنون فقط یک نسخه از استدلال های تغییر ناپذیر است که هنگام حرکت به مقصد ایجاد شده است. این بدان معناست که هرگونه تغییر در آن دسته از بسته ها در دسترسی های بعدی به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 شامل این تعهدات است.
رفع اشکال
-
NavHost
در صورت عدم وجود مقصدی برای تهیهCrossfade
، دیگر باعث ایجاد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 شامل این تعهدات است.
رفع اشکال
-
Navigation Safe Args
هنگام استفاده از انواع آرگومان سفارشی که در یکBundle
ذخیره می شوند ، دیگر باعث هشدارهای استهلاک در کلاسهای تولید شده نمی شوند. ( 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
اکنون این توانایی را دارد که یکViewModelProvider.Factory
ارائه دهد. از طریقCreationExtras
از طریق چرخه عمر2.5.0
.
Safeargs Navigation
-
Navigation Safe Args
وابستگیAndroid Gradle Plugin
به ارتقاء به7.0.4
ارتقا داده است و سازگاری را برای نسخه های AGP قبل از7.0
کاهش می دهد. - پشتیبانی اضافه شده برای Namespace Build.Gradle ویژگی مورد استفاده به جای ApplicationID.
سایر تغییرات
- API
visibleEntries
دیگر آزمایشی نیست و تابعی برای بازیابی تمام ورودی هایی که مقصد در حال حاضر مطابق باNavController
قابل مشاهده است ، فراهم می کند.
نسخه 2.5.0-RC02
15 ژوئن 2022
androidx.navigation:navigation-*:2.5.0-rc02
منتشر می شود. نسخه 2.5.0-RC02 شامل این تعهدات است.
رفع اشکال
- تصادف ناشی از تعویض سریع بین مقصد پایین هنگام استفاده از Navhost Compose
NavHost
را برطرف کرد. ( i3979a ، b/234054916 ) -
Navigation SafeArgs
هنگام استفاده از یکapplicationIdSuffix
و Namespace با هیچ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 شامل این تعهدات است.
ویژگی های جدید
- یک قانون جدید برای هشدار دادن به قرار دادن عناصر
<deeplink>
در داخل<activity>
عناصر موجود در پروندهnavigation.xml
خود اضافه کرد. ( IC15A5 ، b/178403185 )
رفع اشکال
- دامنه های سازنده در
NavHost
وDialogHost
اکنون به ترتیب مورد انتظار دفع می شوند ، یعنی ترکیب داخلی قبل از ساختهای بیرونی دفع می شوند. ( i157e6 ) - Navigation SafeArgs اکنون از
PathSensitivity.RELATIVE
استفاده می کند. درArgumentsGenerationTask
به منظور امکان جابجایی حافظه پنهان امکان پذیر است. این بدان معناست که اکنون می توان از ورود به سیستم CI به ساخت محلی استفاده کرد. ( i5f67c ، b/173420454 ) - قانون LINT
UnrememberedGetBackStackEntryDetector
به روز شده است تا اطمینان حاصل شود که فراخوانremember
در مورد تماس باgetBackStackEntry()
نیز در یک شیءNavBackStackEntry
به عنوان یک کلید عبور می کند. ( IB7081 ، B/227382831 )
نسخه 2.5.0-beta01
20 آوریل 2022
androidx.navigation:navigation-*:2.5.0-beta01
منتشر می شود. نسخه 2.5.0-beta01 شامل این تعهدات است.
رفع اشکال
-
DialogNavigator
اکنون هنگام اجرای یک تماسdismiss()
ازpopWithTransition
استفاده می کند. این یک وضعیت مسابقه را هنگام استفاده از یکViewModel
در مقصدdialog
که باعث ایجادIllegalStateException
در هنگام رد گفتگو با استفاده از سیستم عقب یا ضربه زدن به خارج از گفتگو برای خروج می شود ، برطرف می کند. ( id7376 ، b/226552301 )
به روز رسانی های وابستگی
- ناوبری اکنون به چرخه عمر
2.5.0-beta01
بستگی دارد ، و در هنگام استفاده از چندین پشته پشتی ، یکIllegalStateException
در یکNavHost
در یک Navhost در یکNavHost
در یک NAVHOST دیگر در یک NAVHOST در یک NAVHOST در یک NAVHOST ایجاد می کند.
نسخه 2.5.0-alpha04
6 آوریل 2022
androidx.navigation:navigation-*:2.5.0-alpha04
منتشر می شود. نسخه 2.5.0-alpha04 شامل این تعهدات است.
تغییرات API
-
visibleEntries
دیگر آزمایشی نیست. ( i4829f ، b/225394514 )
رفع اشکال
- Navhost اکنون به
visibleEntries
ازNavController
بستگی دارد تا مشخص کند کدام ورودی ها را تشکیل می دهند. این بدان معنی است که هنگام استفاده از Navhost تو در تو ،NavHost
داخلی اکنون باید به درستی از بین برود. ( i4ba2b ، b/225394514 ) -
visibleEntries
StateFlow
ارائه شده توسطNavController
اکنون به جای حالت چرخه عمر فعلی بر اساس حالت حداکثر چرخه حداکثر است. این بدان معنی است که حتی اگر چرخه عمر میزبانnavController
از زیر شروع شود ، لیست موارد قابل مشاهده یکسان خواهد بود. ( i9e2a8 ، b/225394514 ) -
SavedStateViewFactory
اکنون از استفاده ازCreationExtras
پشتیبانی می کند حتی وقتی که با یکSavedStateRegistryOwner
اولیه انجام شد. در صورت ارائه اضافی ، استدلال های اولیه نادیده گرفته می شوند. ( i6c43b ، b/224844583 ) -
NavDeepLink
اکنون می تواند URIS را با یک پارامتر پرس و جو واحد و بدون ارزش تجزیه کند. ( i0efe8 ، b/148905489 ) - رشته خالی اکنون به عنوان آرگومان های معتبر در پیوندهای عمیق در نظر گرفته شده است. ( i70a0d ، b/217399862 )
-
Navigation Safe Args
هنگام استفاده از مکانهای نام دیگر خراب نمی شود و هیچAndroidManifest.xml
وجود ندارد. ( i17ccf ، b/227229815 )
نسخه 2.5.0-alpha03
23 فوریه 2022
androidx.navigation:navigation-*:2.5.0-alpha03
منتشر می شود. نسخه 2.5.0-alpha03 شامل این تعهدات است.
تغییرات API
- اکنون می توانید برای ایجاد یک
ViewModel
درCreationExtras
بهby navGraphViewModels
منتقل شوید. ( I29217 ، b/217618359 )
رفع اشکال
-
NavDeepLinks
اکنون به درستی از شخصیت های خط جدید رمزگذاری شده تعبیه شده در مسیرها/URI های پیوند عمیق پشتیبانی می کند. ( i513d1 ، b/217815060 ) -
CreationExtras
اکنون هنگام استفاده ازNavBackStackEntries
برای ایجاد ViewModels به درستی کار خواهد کرد. ( i69161 ، b/217617710 ) - Navigation Safe Args اکنون با استفاده از فضای نام تعریف شده در
build.gradle
به جای بسته در AndroidManifest پشتیبانی می کند. ( i659ef ، b/217414933 )
نسخه 2.5.0-alpha02
9 فوریه 2022
androidx.navigation:navigation-*:2.5.0-alpha02
منتشر می شود. نسخه 2.5.0-alpha02 شامل این تعهدات است.
رفع اشکال
- از ناوبری
2.4.1
:NavHostFragment
اکنون هنگام استفاده از مشاهده با نمودارهای تو در تو ، به درستیOnBackPressedDispatcher
تنظیم می کند. ( IFBB51 ، b/214577959 ) - از ناوبری
2.4.1
: هنگامی که پیوند عمیق از طریقNavGraph
چند تو در تو در تو قرار می گیرد ، پشته عقب اکنون به درستی شامل مقصد شروع متوسط خواهد بود. ( I504C0 ، B/214383060 )
نسخه 2.5.0-alpha01
26 ژانویه 2022
androidx.navigation:navigation-*:2.5.0-alpha01
منتشر می شود. نسخه 2.5.0-alpha01 شامل این تعهدات است.
ویژگی های جدید
-
NavBackStackEntry
اکنون با ViewModel CreationExtras ادغام شده است ، که به عنوان بخشی از چرخه عمر2.5.0-alpha01
معرفی شده است. ( ib9fe2 ، b/207012490 )
رفع اشکال
- مسئله ای را برطرف کرد که دسترسی به یک
ViewModel
ایجاد شده از طریقby navGraphViewModels()
از یک قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعه قطعهonCreate()
چه6د بسیاری خیلی خیلی خیلی خیلی خیلی خیلی خیلی بسیار بسیار بسیار بسیار بسیار بسیار بسیار بسیار بسیار بسیار بسیار چقدر کمترجIllegalStateException
توسط آن ( i8a14d ) -
NavDeepLink
S دیگر دو بار Args را رمزگشایی نمی کند ، به این معنی که آرگومان های مناسب اکنون به مقصد نهایی شما منتقل می شوند. ( i31b0a ، b/210711399 )
استدلال های امن
- Args Safe اکنون به افزونه Android Gradle نسخه 7.0.4 بستگی دارد. این بدان معنی است که Args Safe Navigation دیگر قبل از 7.0 با نسخه های Android Studio سازگار نخواهد بود ، اما اکنون با افزونه 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 شامل این تعهدات است.
رفع اشکال
- Backported از ناوبری
2.5.0-alpha03
:NavDeepLinks
اکنون به درستی از شخصیت های خط جدید رمزگذاری شده تعبیه شده در مسیرها/URI های پیوند عمیق پشتیبانی می کند. ( i513d1 ، b/217815060 ) - از ناوبری
2.5.0-alpha03
استفاده شده است: Navigation SafeArgs اکنون با استفاده از فضای نام تعریف شده درbuild.gradle
به جای بسته در AndroidManifest پشتیبانی می کند. ( i659ef ، b/217414933 ) - از ناوبری
2.5.0-alpha04
: ArgsNavigation Safe Args
هنگام استفاده از فضای نام دیگر خراب نمی شود و هیچAndroidManifest.xml
وجود ندارد. ( i17ccf ، b/227229815 ) - از ناوبری
2.5.0-alpha04
: رشته خالی اکنون به عنوان استدلال های معتبر در پیوندهای عمیق در نظر گرفته شده است. ( i70a0d ، b/217399862 )
نسخه 2.4.1
نسخه 2.4.1
9 فوریه 2022
androidx.navigation:navigation-*:2.4.1
منتشر شده است. نسخه 2.4.1 شامل این تعهدات است.
رفع اشکال
-
NavHostFragment
اکنون هنگام استفاده از دیدگاه با نمودارهای تو در تو ، به درستیOnBackPressedDispatcher
تنظیم می کند. ( IFBB51 ، b/214577959 ) - هنگامی که پیوند عمیق از طریق
NavGraph
چند تو در تو وجود دارد ، پشته عقب اکنون به درستی شامل مقصد شروع میانی خواهد بود. ( I504C0 ، B/214383060 ) - از ناوبری
2.5.0-alpha01
استفاده شده است: مسئله ای را برطرف کرد که در آن دسترسی به یک ViewModel ایجاد شده از طریقby navGraphViewModels()
از یک قطعه قطعه قطعه قطعه قطعهonCreate()
قطعه قطعه قطعه شده با یکIllegalStateException
است. ( i8a14d ) - از ناوبری
2.5.0-alpha01
:NavDeepLink
S دیگر دو بار Args را رمزگشایی نمی کند ، به این معنی که ARG های رمزگشایی شده به درستی اکنون به مقصد نهایی شما منتقل می شوند. ( i31b0a ، b/210711399 ) - Backported از ناوبری
2.5.0-alpha01
: Args Safe اکنون به افزونه Android Gradle نسخه 7.0.4 بستگی دارد. این بدان معنی است که Args Safe Navigation دیگر قبل از 7.0 با نسخه های Android Studio سازگار نخواهد بود ، اما اکنون با افزونه 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
- تمام مصنوعات ناوبری در کوتلین بازنویسی شده اند. این امر باعث بهبودی کلاس ها با استفاده از ژنرال ها (مانند زیر کلاس های
NavType
) شده است. تمام توابع پسوند Kotlin که قبلاً بخشی از مصنوعات-ktx
بودند ، به مصنوعات اصلی مربوطه منتقل شده اند. آثار باستانی-ktx
همچنان منتشر می شوند ، اما کاملاً خالی هستند. - مصنوعات
navigation-fragment
در حال حاضر حاوی اجرای پیش ساخته یک طرح دو صفحه از طریقAbstractListDetailFragment
جدید است. این قطعه برای مدیریت یک صفحه لیست (که زیر کلاس شما در آن ارائه می دهد) و یک صفحه جزئیات ، کهSlidingPaneLayout
یکNavHostFragment
به عنوان اجرای آن استفاده می کند ، استفاده می کند ، همانطور که در اجرای مثال ما مشاهده می شود. - روش
currentBackStackEntryAsFlow()
درNavController
Flow
فراهم می کند که هر زمان کهNavBackStackEntry
فعلی تغییر می کند ، منتشر می شود. این جریان می تواند به عنوان جایگزینی برای مدیریت دستی یکOnDestinationChangedListener
استفاده شود. - NavController اکنون امکان بازیابی لیستی از کلیه موارد قابل مشاهده
NavBackStackEntry
به عنوان یکStateFlow
از طریق خاصیت تجربیvisibleEntries
ارائه می دهد. - اکنون می توان کلاس
NavType
را برای ایجاد Navtypes سفارشی گسترش داد. انواع سفارشی فقط در هنگام ساختن نمودار ناوبری شما به صورت برنامه ای ، مانند از طریق نمودار ناوبری Kotlin DSL پشتیبانی می شود. Navigation اکنون API های
findStartDestination()
وgetHierarchy()
را فراهم می کند که می تواند برای کمک به اجرای NavigationUI سفارشی استفاده شود.findStartDestination()
یک تابع برنامه افزودنی درNavGraph
است که مقصد شروع واقعی را که هنگام حرکت به نمودار نمایش داده می شود ، پیدا می کند ، حتی اگرstartDestination
خود یکNavGraph
در تو باشد.getHierarchy()
تابعی در موردNavDestination
است که می تواند برای تأیید اینکه آیا یک مقصد معین در سلسله مراتب دیگری قرار دارد ، استفاده شود.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
روشهای
NavigationUI
که ازBottomNavigationView
استفاده کرده است به روز شده است تا در عوض ، ابرقهرمان خود را در مواد1.4.0
،NavigationBarView
معرفی کند. این اجازه می دهد تا از این روش ها باNavigationRailView
استفاده شود.هنگام باد کردن یک عنصر
<action>
از طریق XML ، ویژگی های انیمیشن می توانند از ویژگی های کشیده شده از موضوع شما با استفاده ازapp:enterAnim="?attr/transitionEnter"
نحو.Args Safe اکنون یک روش
fromSavedStateHandle()
را برای هر کلاسNavArgs
ایجاد می کند. ( #122 ، b/136967621 )class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
مسیرهای ناوبری و Kotlin DSL
نسخه های قبلی ناوبری به هر مقصد متکی است که دارای یک شناسه عدد صحیح ثابت است که آن را منحصر به فرد از مقصد خواهر و برادر خود شناسایی می کند و به شما امکان می دهد تا مستقیم یا از طریق یک عمل به آن مقصد navigate()
. در حالی که این امر همچنان معتبر و مفید است ، به ویژه در مواردی که نمودار ناوبری خود را در XML تعریف می کنید و می توانید از ثابت های R.id
تولید شده توسط خودکار یا استدلال های ایمن استفاده کنید (که از آن ثابت برای تولید کد در زمان ساخت استفاده می کند) ، این سیستم از اعداد صحیح منحصر به فرد معنای معنایی و بیان مورد نیاز برای پشتیبانی از نمودارهای کاملاً پویا ساخته شده را به صورت برنامه ای در زمان اجرا از طریق ناوبری Kotlin DSL ضبط نکردند.
این نسخه گزینه جدیدی را برای شناسایی منحصر به فرد یک مقصد در یک نمودار ناوبری توسط مسیر خود معرفی می کند. یک مسیر String
است که مسیر منحصر به فرد به یک مقصد را تعریف می کند. تمام روشهای Kotlin DSL که شناسه مقصد را گرفتند ، اکنون با یک API معادل که مسیری را طی می کند ، مستهلک می شوند و جایگزین می شوند.
هر مسیر باید به عنوان قسمت "مسیر" از Uri
رفتار شود که آن مقصد را تعریف می کند ، به عنوان مثال ، home
، profile/{userId}
، profile/{userId}/friends
و غیره. وقتی هویت یک مقصد با یک خاص همراه است مطالب ، آن استدلال های پویا باید بخشی از مسیر باشد ، پیروی از همان قوانینی که پیوندهای عمیق ضمنی دارند .
تمام API های NavController
که قبلاً فقط شناسه می گرفتند ، اکنون دارای اضافه بار هستند که یک String
مسیر را می گیرد. این شامل navigate()
، popBackStack()
، popUpTo()
و getBackStackEntry()
است.
این پیامدهای API داشته است:
- خاصیت
popUpTo
کوتلین در Kotlin DSL به نفعpopUpToId
کاهش یافته است. - API
getStartDestination()
به نفعgetStartDestinationId()
کاهش یافته است.
بر خلاف هنگام پیمایش توسط شناسه ، پیمایش از طریق مسیر همان قوانینی را دنبال می کند که پیوندهای عمیق ضمنی در آن می توانید به طور مستقیم به هر مقصد در هر نمودار توخالی حرکت کنید ، و اطمینان حاصل کنید که این مسیرها در پروژه های چند ماژول قابل استفاده هستند بدون اینکه صریحاً یک لینک عمیق قابل مشاهده را اضافه کنند. به هر مقصد
ناوبری
مصنوعات navigation-compose
بین مؤلفه ناوبری و آهنگسازی JetPack را فراهم می کند. از توابع @Composable
به عنوان مقصد در برنامه شما استفاده می کند.
این نسخه ارائه می دهد:
- یک ترکیب
NavHost
که به شما امکان می دهد نمودار ناوبری خود را از طریق Kotlin DSL ، با استفاده از مقصد هایcomposable
وdialog
، به علاوه پشتیبانی از ناوگان های اختیاری مانند مواد از مواد ناوبری همراهی بسازید. - پشتیبانی اجباری برای تقاطع بین مقصد. انیمیشن ناوبری همراه می تواند برای کنترل انتقال Enter و خروج با استفاده از API های ترکیب آزمایشی استفاده شود.
- جابجایی
Lifecycle
به هر مقصد ترکیب. هر مقصد فقط هنگامی که هرگونه انتقالRESUMED
به پایان می رسد و بلافاصله از زمان شروع هرگونه انتقال خروجی بهSTARTED
می رسد ، به حالت رزومه می رسد ، بنابراین به شما امکان می دهد با ایجاد یک تماسnavigate
هنگامRESUMED
Lifecycle
، از همه مواردIllegalStateException
و چند لمسی جلوگیری کنید. - Scoping of
ViewModel
(از طریقviewModel()
API از چرخه عمر ViewModel2.4.0
یاhiltViewModel()
از Navigation Hilt1.0.0
را در سطح مقصد تشکیل می دهد ، زمینه ای را فراهم می کند که از تغییرات پیکربندی زنده مانده و در قسمت پشتی شما قرار دارد (هنگامی که سازنده شما است. محتوا در غیر این صورت دفع شده است) و سیگنال درonCleared()
که نشان دهنده دائمی است دفع و تمیز کردن دولت در ارتباط با آنNavBackStackEntry
. - Scoping of
rememberSaveable
state at a destination level, ensuring that all composable state is saved and restored automatically when you return to a destination. - Full support for saving and restoring the state of the
NavController
and its destination's state after process death and recreation. - Automatic integration with the system back button.
Support for passing arguments, attaching deep links to destinations, and returning a result to previous destinations.
Compose specific helpers in
rememberNavController()
andcurrentBackStackEntryAsState()
to allow hoisting state and connecting theNavController
to composables outside of theNavHost
(such as a bottom navigation bar).
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()
}
}
}
See the Compose Navigation guide for more information.
Multiple back stacks
The NavController is responsible for managing the back stack of destinations, adding destinations to the back stack when you navigate()
to them and removing them when you call popBackStack()
or trigger the system back button. The existing NavOptions
class and the integration into <action>
elements in the navigation graph XML has been expanded to support saving and restoring the back stack.
As part of this change, the NavigationUI
methods of onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
and NavigationView.setupWithNavController()
now automatically save and restore the state of popped destinations, enabling support for multiple back stacks without any code changes. When using Navigation with Fragments, this is the recommended way to integrate with multiple back stacks.
The underlying APIs for saving and restoring the state are exposed via a number of surfaces:
In Navigation XML, the
<action>
element can now use the boolean attributes ofapp:popUpToSaveState
andapp:restoreState
to save the state of any destinations popped viaapp:popUpTo
and restore the state associated with the destination passed as theapp: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” />
In the
navOptions
Kotlin DSL , you can add therestoreState
boolean property and thesaveState
boolean property on thepopUpTo
builder :// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
In manually building a
NavOptions
object via theNavOptions.Builder
, you can use thesetRestoreState()
and new overload tosetPopUpTo()
that takes an additionalsaveState
parameter.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);
Programmatic calls to
popBackStack()
can now include an additionalsaveState
parameter.You can use the
clearBackStack()
method to clear any state that was saved withpopBackStack()
orpopUpToSaveState
.
In all cases, the NavController
will save and restore the state of each NavBackStackEntry
, including any navigation destination scoped ViewModel
instances. The Navigator
APIs have been updated to enable each Navigator
to support saving and restoring their own state.
تغییر رفتار
-
NavDeepLinkBuilder
now addsPendingIntent.FLAG_IMMUTABLE
to thePendingIntent
returned bycreatePendingIntent()
, ensuring that this API works as expected when targeting Android 12. - Navigation now depends on Lifecycle
2.3.1
and now markssetGraph()
,popBackStack()
,navigateUp()
, andnavigate()
, the methods that update theNavBackStackEntry
Lifecycle
, as@MainThread
, aligning Navigation with the main thread enforcement introduced in Lifecycle2.3.0
. - Deep links now verify that all required arguments (those without default values) are present in the
Uri
. -
NavDeepLink
parsed arguments now consider pound signs in the same way as question marks as a separator between path segments, preventing an argument from spanning across the pound sign. - When generating actions, Kotlin code generated from Safe Args now puts arguments without default values before those with default values as parameters.
- When generating arguments, Safe Args now puts parameters without default values before those with default values.
- Safe-Args now depends on Android Gradle Plugin 4.2.0. This means you should no longer get the using
applicationIdTextResource
warning.
مسائل شناخته شده
- Fixed in Navigation
2.5.0-alpha01
: accessing aViewModel
created viaby navGraphViewModels()
from a Fragment'sonCreate()
will fail with anIllegalStateException
. ( b/213504272 ) - Fixed in Navigation
2.5.0-alpha01
: Safe Args 2.4.0 is incompatible with Android Gradle Plugin 7.1.0 and higher. ( b/213086135 ) - Deep linking with multiple nested nav graphs doesn't correctly create the full backstack. ( b/214383060 )
Version 2.4.0-rc01
15 دسامبر 2021
androidx.navigation:navigation-*:2.4.0-rc01
is released. Version 2.4.0-rc01 contains these commits.
تغییر رفتار
-
NavDeepLink
parsed arguments now consider pound signs in the same way as question marks as a separator between arguments. ( I21309 , b/180042703 )
رفع اشکال
- Deeplinks will no longer ignore arguments with values that are the same as the name of the placeholder. ( If8017 , b/207389470 )
-
NavController
will no longer crash when popping a nested destination using transitions after theNavController
has been restored. ( I0f7c9 , b/205021623 ) - The error message when using an invalid
startDestination
will now default to the start destination's route if one is available. ( I86b9d , b/208041894 )
Navigation Compose Bug Fixes
- Fixed potential crash caused by fast switching between the start destination and another destination using bottom nav menu items. ( Ic8976 , b/208887901 )
- Dialog destination are now properly restored on top of the screen after config changes or process death. ( I4c0dc , b/207386169 )
- Fixed an issue where attempting to retrieve a
ViewModel
from a dialog'sNavBackStackEntry
would fail when the dialog was dismissed. ( I6b96d , b/206465487 ) - Fixed an issue when using
activity
destinations with Navigation Compose'sNavHost
that would result in infinite recompositions. ( I8f64c ) - Fixed a leak in Navigation Compose where it was holding on to a reference of the old activity after a config change or process death. ( I4efcb , b/204905432 )
Safe Args Bug Fixes
-
SafeArgs
no longer crashes when attempting to restore custom parcelable arrays after process death. ( I618e8 , b/207315994 ) - Fixed a bug in safe args that would not allow boolean arrays to have a
null
value. ( I8c396 , b/174787525 )
Version 2.4.0-beta02
3 نوامبر 2021
androidx.navigation:navigation-*:2.4.0-beta02
is released. Version 2.4.0-beta02 contains these commits.
تغییرات API
- The handling of both explicit and implicit deep links now automatically adds the
saveState
flag when navigating to another graph, ensuring that code such asNavigationUI.setupWithNavController
and code using multiple back stacks works as expected. ( Ic8807 )
تغییرات رفتار
- Deep link patterns are now compiled lazily in NavDeepLink instead of during inflation. This should improve the inflation time of navigation graphs that include deep links. ( b8d257 , b/184149935 )
رفع اشکال
- Fixed an issue where NavBackStackEntries were being pushed down to
Lifecycle.State.CREATED
after moving toLifecycle.State.STARTED
when theNavHost
is added directly to the activity'ssetContent()
. ( Ia5ac1 , b/203536683 ) - Fixed a race condition where popping a
DialogFragment
destination off of the back stack before the dialog was actually shown would not actually dismiss the dialog, resulting in a crash when the errant dialog was manually dismissed by the user. ( I687e5 ) - Fixed an issue where the
onNavDestinationSelected
API onNavigationUI
would returntrue
even if you didn't actuallynavigate()
to that navigation graph. It now uses the same logic used internally bysetupWithNavController
to only select theMenuItem
associated with the current destination using thehierarchy
of the destination. ( I2b053 )
Version 2.4.0-beta01
27 اکتبر 2021
androidx.navigation:navigation-*:2.4.0-beta01
is released. Version 2.4.0-beta01 contains these commits.
ویژگی های جدید
- You can now use
by navGraphViewModel
with a route as an alternative to using an ID so as to better support using the Navigation Kotlin DSL with Fragments. ( I901e3 , b/201446416 )
تغییرات API
- The
visibleEntries
API is now experimental. ( I93f6f )
رفع اشکال
- ViewModels will no longer be destroyed when transitions are interrupted by navigating back and forth between the same screens ( Id52d8 , b/200817333 )
- Nullable
NavDeepLink
arguments no longer require a default value when adding deep links toNavDestination
s. ( I5aad4 , b/201320030 ) - NavBackStackEntries now with different Lifecycles are not longer considered equal. This means NavHost will properly recompose all destinations when doing navigation with singleTop and when reselecting bottom menu items. ( I1b351 , b/196997433 )
- Fixed an issue with
AbstractListDetailFragment
that caused thelayout_width
andlayout_weight
attributes on the list pane returned byonCreateListPaneView()
to be incorrectly handled or ignored. ( f5fbf3 ) - The visual state of dialog destinations now correctly stays in sync with the
DialogFragmentNavigator
's state. This means that manually calling the asynchronousdismiss()
API forDialogFragment
now properly clears all dialog destinations above the now dismissed dialog. This does not affect cases where you usepopUpTo
orpopBackStack()
to dismiss your dialog. ( I77ba2 ) -
AbstractAppBarOnDestinationChangedListener
now has clearer error messaging foronDestinationChanged()
. ( Ie742d )
Version 2.4.0-alpha10
29 سپتامبر 2021
androidx.navigation:navigation-*:2.4.0-alpha10
is released. Version 2.4.0-alpha10 contains these commits.
ویژگی های جدید
- NavController now offers the ability to retrieve a list of all visible
NavBackStackEntry
instances via thevisibleEntries
StateFlow ( Ia964e ) -
rememberNavController()
now takes a optional set ofNavigator
instances that will be added to the returnedNavController
to better support optional Navigators such as those from Accompanist Navigation Material . ( I4619e )
رفع اشکال
- Dynamic Navigation will no longer crash when the Activity is recreated. ( Ifa6a3 , b/197942869 )
- Fixed an issue with the system back button that occurs only after popping back to a composable destination that contains a
NavHost
. ( 3ed148 , b/195668143 ) - SafeArgs now generates the arguments for
fromBundle()
andfromSavedStateHandle()
in the proper parameter order. ( I824a8 , b/200059831 )
Version 2.4.0-alpha09
15 سپتامبر 2021
androidx.navigation:navigation-*:2.4.0-alpha09
is released. Version 2.4.0-alpha09 contains these commits.
ویژگی های جدید
- You can now use the
clearBackStack()
method to clear any state that was saved withpopBackStack()
orpopUpToSaveState
. ( I80a0f ) - You can now pass in a list of arguments and/or deep links to your nested navigation graph's builder and they will automatically be added to the resulting graph. ( I8a470 , b/182545357 )
تغییرات API
- The
navArgument
Kotlin DSL function is now part ofnavigation-common
instead ofnavigation-compose
. This will require updating imports to continue to use this function. ( I1d095 )
تغییرات رفتار
- When generating arguments, Safe Args now puts parameters without default values before those with default values. ( I89709 , b/198493585 )
رفع اشکال
- When using Navigation Compose, NavGraphs will only be
DESTROYED
once all their children areDESTROYED
. ( I86552 , b/198741720 ) - Nullable
NavDeepLink
arguments no longer require a default value. ( Ia14ef , b/198689811 ) - Calling
setGraph()
with a new graph will now also clear any saved back stacks in addition to its previous behavior of popping the back stack. ( I97f96 ) - Fixed an issue where
OnDestinationChangedListener
instances and thecurrentBackStackEntryFlow
were not notified when usinglaunchSingleTop
. ( Iaaebc )
به روز رسانی های وابستگی
- Navigation Compose now depends on Activity Compose 1.3.1 . ( I05829 )
- Navigation Compose now depends on Lifecycle ViewModel Compose
2.4.0-beta01
. ( Ib86a3 )
Version 2.4.0-alpha08
1 سپتامبر 2021
androidx.navigation:navigation-*:2.4.0-alpha08
is released. Version 2.4.0-alpha08 contains these commits.
ویژگی های جدید
- It is now possible to extend the
NavType
class to create custom NavTypes. Custom types are supported only when building your navigation graph programmatically, such as via the Navigation Graph Kotlin DSL . ( I78440 , b/196871885 )
تغییرات رفتار
- When generating actions, Kotlin code generated from Safe Args now puts arguments without default values before those with default values as parameters. ( Idb697 , b/188855904 )
- Deep links now verify that all required arguments (those without default values) are present in the
Uri
. ( #204 , b/185527157 )
رفع اشکال
- Using
getBackStackEntry
andpreviousBackStackEntry
inside composable(), in conjunction withremember()
, will no longer cause an exception for no destination being on the back stack. ( I75138 , b/194313238 ) - Navigation Compose now properly recomposes when changing back stack arguments and using
launchSingleTop=true
. ( Iebd69 , b/186392337 ) - There will no longer be an
ArrayIndexOutOfBoundsException
when callingsetGraph
with a graph with 13 or 29 destinations. ( I1a9f1 , b/195171984 ) - The SafeArgs java generator should no longer cause lint warnings when generating Args classes. ( I1a666 , b/185843837 )
مشارکت خارجی
- Thanks ospixd for ensuring that deep links verify that all required arguments (those without default values) are present in the
Uri
. ( #204 , b/185527157 )
Version 2.4.0-alpha07
18 آگوست 2021
androidx.navigation:navigation-*:2.4.0-alpha07
is released. Version 2.4.0-alpha07 contains these commits.
رفع اشکال
- Navigation Compose now properly saves state after configuration changes and when changing graphs while using the multiple back stack feature. ( If5a3d , b/195141957 )
- Re-selecting the same tab when using navigation compose with multiple back stacks will no longer result in a blank screen. ( I860dc , b/194925622 )
-
NavHost
now observes for changes in theLifecycle.State
ofNavBackStackEntry
s which means using aNavHost
in a fragment now will properly be recomposed as the lifecycle changes instead of resulting in a blank screen. ( I4eb85 , b/195864489 ) - Fixed an issue where dismissing a
DialogFragment
would not correctly update theNavController
state after recreating your activity (ie, after a configuration change). ( Icd72b ) - Fixed an issue where popping a dialog destination would not update the NavController's system back button handling, potentially causing the NavController to intercept the back button even though it does not have any back stack to pop. ( If3b34 )
- Safe-args now automatically generates a
toSavedStateHandle
method for arguments which can be used to test yourViewModel
code. ( If1e2d , b/193353880 )
Version 2.4.0-alpha06
4 آگوست 2021
androidx.navigation:navigation-*:2.4.0-alpha06
is released. Version 2.4.0-alpha06 contains these commits.
تغییرات API
- The
requireSlidingPaneLayout()
andrequireDetailPaneNavHostFragment()
methods onAbstractListDetailFragment
have been renamed togetSlidingPaneLayout()
andgetDetailPaneNavHostFragment()
, respectively. ( I34a08 )
تغییرات رفتار
- When navigating with animations (like
Crossfade
), the new destination'sLifecycle
will now only reach theRESUMED
when the animation completes. ( If0543 , b/172112072 , b/194301889 ) - Navigation Compose's
NavHost
now sets the graph as part of the first composition. ( Ieb7be )
رفع اشکال
- Popping the last destination of a navigation graph no longer throws a
ClassCastException
. ( If0543 , b/172112072 , b/194301889 ) - Fixed a
NullPointerException
that would occur when adding a deep link without aUri
and navigating via a route or deep link. ( 938a0c , b/193805425 ) - Fixed an issue in Navigation Compose where a deep linked
NavBackStackEntry
would not reach theRESUMED
state. ( I192c5 ) - Fixed an issue where popping a dialog destination would not update the NavController's system back button handling, potentially causing the NavController to intercept the back button even though it does not have any back stack to pop. ( aosp/1782668 )
Version 2.4.0-alpha05
21 جولای 2021
androidx.navigation:navigation-*:2.4.0-alpha05
is released. Version 2.4.0-alpha05 contains these commits.
تغییرات رفتار
- Navigation Compose's
NavHost
now always uses Crossfades when navigating through destinations. ( I07049 , b/172112072 ) - You can now make changes to the graph of a NavHost. Graphs with the same startDestination and destinations in the graph will be considered equal and will not clear the
NavController
back stack. ( I0b8db , b/175392262 )
رفع اشکال
- Fixed a
NoSuchElementException
when callingpopBackStack()
from within aLifecycleObserver
attached to aNavBackStackEntry
caused by reentrant updates to the NavController's state. ( I64621 ) -
AbstractListDetailFragment
now allowsSlidingPaneLayout
to be completely stripped from your APK whenAbstractListDetailFragment
is not used. ( I611ad ) -
NavGraph
andNavDestination
now override the equals method so two objects with the same values will be considered equal. ( I166eb , b/175392262 )
Version 2.4.0-alpha04
1 ژوئیه 2021
androidx.navigation:navigation-*:2.4.0-alpha04
is released. Version 2.4.0-alpha04 contains these commits.
ویژگی های جدید
- The
navigation-fragment
artifact now contains a prebuilt implementation of a two pane layout via the newAbstractListDetailFragment
. This fragment uses aSlidingPaneLayout
to manage a list pane (which your subclass provides) and a detail pane, which uses aNavHostFragment
as its implementation, as seen in our example implementation . ( Iac4be , b/191276636 ) - The
NavHost
of thenavigation-compose
artifact now supportsdialog
destinations in addition tocomposable
destinations. These dialog destinations will each be shown within a ComposableDialog
, floating above the currentcomposable
destination. ( 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()
}
}
}
تغییرات API
- The
add
function inNavigatorState
has been renamed topush
. All current calls toadd()
will need to be changed to push(). ( Ie89fc , b/172112072 ) - Custom
Navigator
instances can now use thepushWithTransaction
andpopWithTransition
APIs onNavigatorState
to push or pop a destination asynchronously. Note that this APIs are not yet used by any of the included navigators. ( Ic4d7c , b/172112072 )
تغییرات رفتار
-
NavDeepLinkBuilder
now addsPendingIntent.FLAG_IMMUTABLE
to thePendingIntent
returned bycreatePendingIntent()
, ensuring that this API works as expected when targeting Android 12. ( If8c52 )
رفع اشکال
- Fixed an issue with
<include-dynamic>
where arguments passed to the graph would not be correctly passed to the dynamically included graph. ( I3e115 ) - Fixed a
NullPointerException
when navigating to a destination using astring[]
argument with a default value of@null
. ( I1fbe8 ) - Add ProGuard rules for
@Navigator.Name
, fixing issues when using R8 3.1 full mode. ( I2add9 , b/191654433 ) - SafeArgs will no longer fail when building your app with
Kotlin
versions before1.5.0
. ( Icd1ff , b/190739257 )
Version 2.4.0-alpha03
16 ژوئن 2021
androidx.navigation:navigation-*:2.4.0-alpha03
is released. Version 2.4.0-alpha03 contains these commits.
رفع اشکال
- Fixed an issue where two
navigate()
calls were needed to navigate to an included dynamic graph. ( I7785c , b/188859835 ) - Fixed a regression introduced in Navigation
2.4.0-alpha01
wheresetupActionBarWithNavController()
would not properly remove the Up icon when you are on a top level destination. ( I5d443 , b/189868637 ) - Fixed an
IllegalStateException
when callingpopBackStack()
after previously popping the root graph of the NavController. ( I2a330 , b/190265699 ) - ProGuard rules for
by navArgs()
now properly apply when usingnavigation-common
or any artifacts that depend on it. ( I68800 , b/190082521 ) - An
OnDestinationChangedListener
that callsnavigate()
the first time it receives a callback now properly get a second callback with the destination it navigated to. ( Ie5f9e , b/190228815 ) - Safe Args no longer crashes when using it with dynamic feature modules and AGP 7.0+. ( I69518 , b/189966576 )
موضوع شناخته شده
- Safe Args will fail with an
Unable to find method ''java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)''
error when using Gradle6.7.0
due to a dependency on an older version of Kotlin. This can be worked around by updating to use Gradle 7.0. ( b/190739257 )
Version 2.4.0-alpha02
2 ژوئن 2021
androidx.navigation:navigation-*:2.4.0-alpha02
is released. Version 2.4.0-alpha02 contains these commits.
ویژگی های جدید
- Routes are now supported for Activity, Fragment and Dialog destinations, as well as throughout the DynamicNavigation Kotlin DSL. ( Ib5544 , Ia617b , I22f96 , b/188914648 , b/188901565 )
-
NavigationUI
has temporarily added experimental APIs to allow opting out of saving your state. While always saving the state is the correct behavior, there are still uses of deprecated libraries (ie retained fragments), that cannot be supported when saving the state so this gives an opportunity for apps to slowly convert away from any unsupported APIs. ( Idf93c ) Navigation now provides
findDestination()
andgetHierarchy()
APIs that can be used to help implement custom NavigationUI.findDestination()
is an extension function onNavGraph
that will locate a destination within the graph.getHierarchy()
is a function onNavDestination
that can be used to verify if a given destination is within the hierarchy of another.( I2932f , b/188183365 )val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
NavigationUI methods that took a
BottomNavigationView
have been updated to instead take its superclass introduced in Material1.4.0
,NavigationBarView
. This allows these methods to be used with theNavigationRailView
. ( Ib0b36 , b/182938895 )When inflating an
<action>
element via XML, animation attributes can use attributes pulled from your theme using theapp:enterAnim="?attr/transitionEnter"
syntax. ( I07bc1 , b/178291654 )
تغییرات API
- Kotlin DSL builders that use an ID have been deprecated and should be replaced with builders that use routes ( I85b42 , b/188816479 ) ( I9f58f , b/188816479 )
رفع اشکال
-
DialogFragmentNavigator
now uses theNavigatorState.pop()
API to inform theNavController
when a dialog is dismissed by hitting the system back button or clicking outside of it, ensuring that theNavController
state is always in sync with the Navigator's state. ( I2ead9 ) Navigation no longer gives a
ConcurrentModificationException
when using manipulating the list ofOnDestinationChangedListeners
from with anonDestinationChanged
callback. ( Ib1707 , b/188860458 )Safe Args no longer crashes when attempting to generate direction properties in Kotlin. ( Id2416 , b/188564435 )
The setId method on NavDestination is now properly annotated with
@IdRes
, so it only accepts resource ids. ( I69b80 )The int parameter of
findNode
is nowresId
instead ofresid
. ( I7711d )
به روز رسانی وابستگی
- Safe-Args now depends on Android Gradle Plugin 4.2.0. This means you should no longer get the using
applicationIdTextResource
warning. ( I6d67b , b/172824579 )
Version 2.4.0-alpha01
18 مه 2021
androidx.navigation:navigation-*:2.4.0-alpha01
is released. Version 2.4.0-alpha01 contains these commits.
ویژگی های جدید
- The
currentBackStackEntryAsFlow()
method onNavController
provides aFlow
that emits whenever the currentNavBackStackEntry
changes. This flow can be used as an alternative to manually managing anOnDestinationChangedListener
. ( I19c4a , #89 , b/163947280 )
Multiple back stacks
The NavController is responsible for managing the back stack of destinations, adding destinations to the back stack when you navigate()
to them and removing them when you call popBackStack()
or trigger the system back button. The existing NavOptions
class and the integration into <action>
entries in the navigation graph XML has been expanded to support saving and restoring the back stack. ( b/80029773 )
As part of this change, the NavigationUI
methods of onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
and NavigationView.setupWithNavController()
now automatically save and restore the state of popped destinations, enabling support for multiple back stacks without any code changes. When using Navigation with Fragments, this is the recommended way to integrate with multiple back stacks. ( Ie07ca )
The underlying APIs for saving and restoring the state are exposed via a number of surfaces:
In Navigation XML, the
<action>
element can now use the boolean attributes ofapp:popUpToSaveState
andapp:restoreState
to save the state of any destinations popped viaapp:popUpTo
and restore the state associated with the destination passed as theapp: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” />
In the
navOptions
Kotlin DSL , you can add therestoreState
boolean property and thesaveState
boolean property on thepopUpTo
builder :// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
In manually building a
NavOptions
object via theNavOptions.Builder
, you can use thesetRestoreState()
and new overload tosetPopUpTo()
that takes an additionalsaveState
parameter.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Programmatic calls to
popBackStack()
can now include an additionalsaveState
parameter.
In all cases, the NavController
will save and restore the state of each NavBackStackEntry
, including any navigation destination scoped ViewModel
instances. The Navigator
APIs have been updated to enable each Navigator
to support saving and restoring their own state.
The ComposeNavigator
used for composable
destinations in Navigation Compose and the FragmentNavigator
and DynamicFragmentNavigator
used for <fragment>
destinations in Navigation with Fragments have both been updated to use the new Navigator APIs and support saving and restoring state.
Navigation Routes
A route is a String
that uniquely identifies a destination. While previously only used in Navigation Compose , this concept has now graduated to become a part of the core Navigation APIs. This provides an alternative to using integer IDs when constructing your graph through the Navigation Kotlin DSL . ( b/172823546 )
All APIs that used to only take an ID now have an overload that takes a route String
. This includes navigate()
, popBackStack()
, popUpTo()
, and getBackStackEntry()
.
This has had some API implications:
- The
popUpTo
kotlin property on the Kotlin DSL has been deprecated in favor ofpopUpToId
. ( I59c73 , b/172823546 ) - The
getStartDestination()
API has been deprecated in favor ofgetStartDestinationId()
. ( I0887f , b/172823546 )
For developers upgrading from previous versions of Navigation Compose to Navigation Compose 2.4.0-alpha01
, this means that the following imports on extension methods are no longer necessary and should be removed:
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
The KEY_ROUTE
argument has been replaced with the route
property on NavDestination
, allowing you to call navBackStackEntry.destination.route
directly.
تغییرات API
- All Navigation artifacts have been rewritten in Kotlin. This has improved the nullability of classes using generics (such as
NavType
subclasses). All Kotlin extension functions that used to be part of the-ktx
artifacts have been moved to their respective main artifacts. The-ktx
artifacts will continue to be published, but are completely empty. ( b/184292145 ) -
NavDeepLinkBuilder
now supports adding multiple distinct destinations to the generated back stack. ( I3ee0d , b/147913689 ) - Add factory functions for
DynamicNavHostFragment
( Icd515 , b/175222619 ) - The unique ID of a
NavBackStackEntry
is now exposed as part of its public API. ( Ie033a ) - The
name
andargument
fields and destructuring functions ofNamedNavArgument
are now public. ( #174 , b/181320559 ) - Introduced a new
NavBackStackEntry#provideToCompositionLocals
extension that provides theNavBackStackEntry
to the relevant composition locals. ( #175 , b/187229439 )
Safe Args
Safe Args now generates a
fromSavedStateHandle()
method for eachNavArgs
class. ( #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) }
Updated Safe Args to depend on KotlinPoet
1.8.0
. ( #172 , b/183990444 )
تغییرات رفتار
- Navigation now depends on Lifecycle
2.3.1
and now markssetGraph()
,popBackStack()
,navigateUp()
, andnavigate()
, the methods that update theNavBackStackEntry
Lifecycle
, as@MainThread
, aligning Navigation with the main thread enforcement introduced in Lifecycle2.3.0
. ( b/171125856 ) - Parsing Enum arguments from deep links is now case insensitive, allowing a deep link like
http://www.example.com/red
to match awww.example.com/{color}
deep link even when the enum has the value ofRED
. ( #152 , b/135857840 )
Compose Compatibility
-
androidx.navigation:navigation-compose:2.4.0-alpha01
is only compatible with Compose version1.0.0-beta07
and above.
رفع اشکال
- Fixed an issue where trailing argument placeholders would take precedence over deep links that have a matching exact suffix. ( #153 , b/184072811 )
-
NavHostFragment
now supports custom Navigators that use the same@Navigator.Name("dialog")
as the defaultDialogFragmentNavigator
. ( Ib1c2c , b/175979140 ) - Improved the behavior of
NavigatorProvider#addNavigator
to ensure that calling it repeatedly with the same instance does not cause issues. ( #176 , b/187443146 )
External Contributions
- Thanks simonschiller for building support for Safe Args generating a
fromSavedStateHandle()
method for eachNavArgs
class. ( #122 , b/136967621 ) - Thanks Bradleycorn for making parsing Enum arguments from deep links case insensitive. ( #152 , b/135857840 )
- Thanks osipxd for fixing an issue where trailing argument placeholders would take precedence over deep links that have a matching exact suffix. ( #153 , b/184072811 )
- Thanks tatocaster for updating Safe Args to depend on KotlinPoet
1.8.0
. ( #172 , b/183990444 ) - Thanks jossiwolf for making the
name
andargument
fields and destructuring functions ofNamedNavArgument
public. ( #174 , b/181320559 ) - Thanks jossiwolf for introducing a new
NavBackStackEntry#provideToCompositionLocals
extension that provides theNavBackStackEntry
to the relevant composition locals. ( #175 , b/187229439 ) - Thanks jossiwolf for improved the behavior of
NavigatorProvider#addNavigator
to ensure that calling it repeatedly with the same instance does not cause issues. ( #176 , b/187443146 )
Navigation Compose Version 1.0.0
نسخه 1.0.0-alpha10
7 آوریل 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
is released. نسخه 1.0.0-alpha10 حاوی این commit ها است.
تغییرات API
-
NavHost
now accepts aModifier
, which is passed down to the composable container that wraps the destination composables. ( I85aca , b/175125483 )
رفع اشکال
-
NavHost
now works even when anOnBackPressedDispatcherOwner
is not found, such is the case when previewing theNavHost
. ( I7d8b4 ) - Navigation Compose now depends on Navigation
2.3.5
, fixing an issue when usingBackHandler
inside aNavHost
destination. ( I7e63b , b/182284739 )
نسخه 1.0.0-alpha09
10 مارس 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
is released. نسخه 1.0.0-alpha09 حاوی این commit ها است.
تغییرات API
-
LocalViewModelStoreOwner.current
now returns a nullableViewModelStoreOwner
to better determine whether aViewModelStoreOwner
is available in the current composition. APIs that require aViewModelStoreOwner
, such asviewModel()
andNavHost
, still throw an exception if aViewModelStoreOwner
is not set. ( Idf39a )
رفع اشکال
- Navigation Compose now depends on Navigation 2.3.4 which includes the fix for attempting to set the same ViewModelStore object after the graph has been set. ( I65c24 , b/177825470 )
نسخه 1.0.0-alpha08
24 فوریه 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
is released. نسخه 1.0.0-alpha08 حاوی این commit ها است.
ویژگی های جدید
-
NavHost
now populates theLocalSavedStateRegistryOwner
CompositionLocal with that destination'sNavBackStackEntry
, ensuring that any state directly saved into theSavedStateRegistry
will be saved and restored alongside the destination. ( I435d7 , b/179469431 )
نسخه 1.0.0-alpha07
10 فوریه 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
is released. نسخه 1.0.0-alpha07 حاوی این commit ها است.
به روز رسانی های وابستگی
- Navigation Compose now depends on Lifecycle ViewModel Compose 1.0.0-alpha01 to provide
viewModel()
support tocomposable
destinations. ( I7a374 ) -
NavHost
now uses the newLocalOnBackPressedDispatcherOwner
from Activity-Compose 1.3.0-alpha01 to get theOnBackPressedDispatcher
that is set on theNavController
. ( I65b12 )
نسخه 1.0.0-alpha06
28 ژانویه 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
is released. نسخه 1.0.0-alpha06 حاوی این commit ها است.
تغییرات API
- Added a
getBackStackEntry(route: String)
extension method onNavController
that returns the associatedNavBackStackEntry
. ( If8931 )
نسخه 1.0.0-alpha05
13 ژانویه 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
is released. Version 1.0.0-alpha05 contains these commits.
Updated to depend on Compose 1.0.0-alpha10.
نسخه 1.0.0-alpha04
16 دسامبر 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
is released. Version 1.0.0-alpha04 contains these commits.
- Updated for compatibility with Compose
1.0.0-alpha09
.
نسخه 1.0.0-alpha03
2 دسامبر 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
is released. نسخه 1.0.0-alpha03 شامل این تعهدات است.
رفع اشکال
- Fixed an issue where
popBackStack()
andnavigateUp()
would not work after a configuration change or process death and recreation. ( Icea47 , b/173281473 ) - Navigating to a nested graph within your NavHost now works properly. ( I0948d , b/173647694 )
نسخه 1.0.0-alpha02
11 نوامبر 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
is released. نسخه 1.0.0-alpha02 حاوی این commit ها است.
تغییرات API
- Navigation compose now support NavOptions for using popUpTo and launchSingleTop operations ( If96c3 , b/171468994 )
- Added a navigation function that takes a route instead of an ID that allows you to construct nested graphs in the Navigation Compose DSL. ( I1661d )
- startDestination now comes before the route in the list of a parameters for a NavHost ( Ie620e )
- You can now create a graph using the route as a start destination outside of a NavHost composable. ( Iceb75 )
نسخه 1.0.0-alpha01
28 اکتبر 2020
android.navigation:navigation-compose:1.0.0-alpha01
is released. نسخه 1.0.0-alpha01 حاوی این commit ها است.
ویژگی های جدید
The navigation-compose
artifact provides integration between the Navigation Component and Jetpack Compose . It uses @Composable
functions as the destinations in your application.
This initial release provides:
- A
NavHost
composable that allows you to construct your navigation graph via a Kotlin DSL. - Scoping of lifecycle,
ViewModel
, and remembered state at the destination level. - Automatic integration with the system back button.
- Support for passing arguments, attaching deep links to destinations, and returning a result to previous destinations.
- Compose specific helpers in
rememberNavController()
andcurrentBackStackEntryAsState()
to allow hoisting state and connecting theNavController
to composables outside of theNavHost
(such as a bottom navigation bar).
See the Compose Navigation guide for more information.
نسخه 2.3.5
نسخه 2.3.5
7 آوریل 2021
androidx.navigation:navigation-*:2.3.5
is released. Version 2.3.5 contains these commits.
ویژگی های جدید
- When navigating using a
NavDeepLinkRequest
orUri
, you can now access theUri
, action, and mime type in the resulting destination by getting the intent from arguments viaKEY_DEEP_LINK_INTENT
, mirroring the functionality already available for external deep linking. ( I975c3 , b/181521877 )
رفع اشکال
-
OnBackPressedCallbacks
added to a dispatcher with theNavBackStackEntry
as the LifecycleOwner now properly intercept back after the Activity Lifecycle isSTOPPED
, thenSTARTED
( Iff94f , b/182284739 ) - Deep link domain parsing is now case insensitive, ensuring that
www.example.com
matches bothwww.example.com
andwww.Example.com
. Note that query parameter names are still case sensitive. ( #144 , b/153829033 ) - Fixed a
NullPointerException
that could occur when a destination has multiple non-nullable default arguments and you navigate to that destination while only overriding a subset of those arguments. ( aosp/1644827 )
به روز رسانی های وابستگی
- The Navigation Safe Args Gradle Plugin now depends on Kotlin Gradle Plugin 1.4.31. ( aosp/1661058 , b/181156413 )
مشارکت خارجی
- Thanks
bentrengrove
for the pull request making deep link domain parsing case insensitive. ( #144 , b/153829033 )
نسخه 2.3.4
نسخه 2.3.4
10 مارس 2021
androidx.navigation:navigation-*:2.3.4
is released. Version 2.3.4 contains these commits.
ویژگی های جدید
-
ReferenceType
arguments can now be properly parsed when sent as part of a deeplink URI. This supports both the raw integer value as well as hex values prefixed by0x
. ( #127 , b/179166693 ) - The
android:defaultValue
for an argument withapp:argType="float"
now supports integer default values, allowing you to useandroid:defaultValue="0"
rather than requiring the use of0.0
. ( #117 , b/173766247 )
رفع اشکال
- Fix stuck installation progress when using Navigation's support for dynamic features. ( Ib27a7 , b/169636207 )
- Calling
setViewModelStore
orsetLifecycleOwner
with the same object that has already been set will now be a no-op ( Idf491 , b/177825470 ) - Safe-Args now adds suppress annotations on the proper methods when using java. ( I8fbc5 , b/179463137 )
External Contributions
- Thanks
JvmName
for the pull request to ensure thatReferenceType
arguments can now be properly parsed when sent as part of a deeplink URI. ( #127 , b/179166693 ) - Thanks
tatocaster
for the pull request to allow thedefaultValue
for an argument withapp:argType=”float”
now supports integer default values. ( #117 , b/173766247 )
نسخه 2.3.3
نسخه 2.3.3
27 ژانویه 2021
androidx.navigation:navigation-*:2.3.3
is released. Version 2.3.3 contains these commits.
رفع اشکال
- There is no longer a crash when popping a
NavBackStackEntry
before itsLifecycle
is moved toCREATED
. ( Ie3ba3 ) - Fixed regression caused by b/171364502 where navigating to an activity with an animation resource value of
0
caused aResourceNotFoundException
. ( I7aedb , b/176819931 )
نسخه 2.3.2
نسخه 2.3.2
2 دسامبر 2020
androidx.navigation:navigation-*:2.3.2
is released. Version 2.3.2 contains these commits.
رفع اشکال
- Fixed a regression in
NavigationUI
where using an<activity>
destination withonNavDestinationSelected
would fail to navigate to the Activity. ( I22e34 , b/171364502 ) - Fixed an issue where
navigation-dynamic-features-fragment
would result in navigating to the newly installed destination multiple times. ( aosp/1486056 , b/169636207 ) - Fixed an issue where default arguments would not be sent to
OnDestinationChangedListener
instances when usinglaunchSingleTop
. ( I2c5cb ) - Fixed an issue where navigating to a nested navigation graph would not create a new graph instance on the back stack. ( Ifc831 )
- Fixed an issue where using
navigate()
with apopUpTo
that removed the last destination in a navigation graph would not immediately destroy and remove the navigation graph itself from the back stack. ( I910a3 ) - Navigation SafeArgs now uses KotlinPoet version 1.7.2 which adds support for Kotlin's explicit API mode. ( I918b5 )
-
NavHostFragment.findNavController(Fragment)
now also checks the root decor view of a DialogFragment in addition to the existing checks of the Fragment hierarchy and Fragment's view hierarchy. This allows you to test dialog fragments that use Navigation withFragmentScenario
andNavigation.setViewNavController()
. ( I69e0d )
نسخه 2.3.1
نسخه 2.3.1
14 اکتبر 2020
androidx.navigation:navigation-*:2.3.1
is released. Version 2.3.1 contains these commits.
ویژگی های جدید
- Default Animator resources have been added to Navigation UI and are recommended over the default animation resources. ( b/167430145 )
- NavOptions now overrides the hashcode and equals methods ( b/161586466 )
- Navigation now includes the current destination in the “No destination with ID” IllegalArgumentException, which should improve the developer debugging experience. ( b/168311416 )
رفع اشکال
- Safe Args will no longer wrap the return line, even if the generated argument class name is longer than 100 characters. ( b/168584987 )
Dependency Changes
-
navigation-ui
now depends on DrawerLayout 1.1.1 , ensuring thatNavigationUI
is able to open the drawer even when usingLOCK_MODE_LOCKED_CLOSED
orLOCK_MODE_LOCKED_OPEN
. ( b/162253907 ) - Safe Args now depends on KotlinPoet 1.6.0 ( aosp/1435911 )
- Safe Args now depends on AGP 4.0.1 ( aosp/1442337 )
نسخه 2.3.0
نسخه 2.3.0
24 ژوئن 2020
androidx.navigation:navigation-*:2.3.0
is released. Version 2.3.0 contains these commits.
Major changes since 2.2.0
- Feature Module integration : The
navigation-dynamic-features-runtime
andnavigation-dynamic-features-fragment
artifacts allow you to navigate to destinations that are defined in feature modules, automatically handling the installation of the feature modules as needed. See Navigate with feature modules for more information. - Navigation Testing : The
navigation-testing
artifact provides aTestNavHostController
that allows you to set the current destination and verify the back stack after navigation operations. See Test Navigation for more information. - Returning a Result : The
NavBackStackEntry
associated with each destination on the Navigation back stack now allows you to access aSavedStateHandle
suitable for storing small amounts of saved state that should be associated with a particular back stack entry. See Returning a result to the previous Destination for more information. -
NavigationUI
support forOpenable
: All usages ofDrawerLayout
inNavigationUI
have been replaced with the more genericOpenable
interface added in CustomView1.1.0
and implemented byDrawerLayout
in DrawerLayout1.1.0
. - Action and Mime Type support in deep links : Deep linking has been expanded to support
app:action
andapp:mimeType
in addition to theapp:uri
previously available.NavController
now supports navigating by any combination of these fields via the newNavDeepLinkRequest
class. See Navigate using NavDeepLinkRequest for more information.
مسائل شناخته شده
- Support for deep link actions and mime types is not yet available in Manifest Merger . Until that work is completed, any generated
<intent-filter>
elements from the<nav-graph>
element in your manifest won't include your mime type in its<data>
element or your custom<action>
. You must manually add an appropriate<intent-filter>
to your manifest.
Version 2.3.0-rc01
10 ژوئن 2020
androidx.navigation:navigation-*:2.3.0-rc01
is released. Version 2.3.0-rc01 contains these commits.
رفع اشکال
- Fixed a
NullPointerException
when replacing an instance of a destination with no arguments with another instance with arguments withsingleTop
. ( b/158006669 ) - All
destination is unknown
exceptions thrown byNavController
now have additional debugging information to help determine the state of theNavController
. ( b/157764916 )
Version 2.3.0-beta01
20 مه 2020
androidx.navigation:navigation-*:2.3.0-beta01
are released. Version 2.3.0-beta01 contains these commits.
رفع اشکال
- Fixed an issue where the
Lifecycle
of theNavBackStackEntry
would not be properly updated after process death. ( b/155218371 ) -
OnDestinationChangedListener
instances registered before callingsetGraph()
are now properly sent the restored destination after a process death. ( b/155218371 ) - When using
singleTop
, theNavBackStackEntry
now correctly has its arguments updated and the updated arguments are sent to allOnDestinationChangeListener
instances. ( b/156545508 )
به روز رسانی های وابستگی
- The
NavigationUI
artifact now depends on CustomView1.1.0-rc01
and DrawerLayout1.1.0-rc01
. ( aosp/1309696 )
Version 2.3.0-alpha06
29 آوریل 2020
androidx.navigation:navigation-*:2.3.0-alpha06
is released. ( Version 2.3.0-alpha06 contains these commits. )
ویژگی های جدید
- Deep linking has been expanded to support
app:action
andapp:mimeType
in addition to theapp:uri
previously available. NavController now supports navigating by any combination of these fields via the newNavDeepLinkRequest
class. ( b/136573074 , b/135334841 )
تغییرات API
- Greatly expanded the Kotlin DSL support for Dynamic Navigation destinations. ( b/148969800 )
رفع اشکال
- Fixed an issue where deep link Intents would be ignored when using a nested start destination. ( b/154532067 )
Version 2.3.0-alpha05
15 آوریل 2020
androidx.navigation:navigation-*:2.3.0-alpha05
is released. Version 2.3.0-alpha05 contains these commits.
ویژگی های جدید
- For dynamic graph includes using
<include-dynamic>
, you no longer need to specifyapp:graphPackage
and a default one will be used by addingmoduleName
suffix to theapplicationId
after a dot. If you do need to customize yourgraphPackage
, an${applicationId}
placeholder is now supported. ( b/152696768 ) - The Navigation Graph Kotlin DSL now exposes a
defaultArguments
Map
for actions, mirroring the ability to set default values on<action>
elements in Navigation XML files. ( b/150345605 )
رفع اشکال
- From Navigation 2.2.2 : Fixed an
IllegalStateException
when deep linking to the start destination of your graph when you have multipleNavHostFragment
instances in your Activity. ( b/147378752 )
به روز رسانی وابستگی
- Navigation now depends on Fragment
1.2.4
. ( aosp/1277325 ) - Dynamic Navigation now depends on Play Core
1.7.2
. ( aosp/1282257 )
Version 2.3.0-alpha04
18 مارس 2020
androidx.navigation:navigation-*:2.3.0-alpha04
is released. Version 2.3.0-alpha04 contains these commits.
ویژگی های جدید
- Added support for feature module activity and fragment destinations in the Navigation Kotlin DSL. ( b/148969800 )
تغییرات API
- The
DynamicExtras
class no longer uses a builder pattern and can now be constructed directly. ( aosp/1253671 ) -
DynamicActivityNavigator
now takes aContext
in its constructor rather than anActivity
. ( aosp/1250252 )
رفع اشکال
-
NavigationUI
no longer ignores empty labels (ie, a destination withandroid:label=””
) and now correctly sets the title to an empty string. ( b/148679860 )
به روز رسانی های وابستگی
- The Navigation Dynamic Features artifacts now depend on Play Core
1.6.5
. ( b/149556401 )
Version 2.3.0-alpha03
4 مارس 2020
androidx.navigation:navigation-*:2.3.0-alpha03
is released. Version 2.3.0-alpha03 contains these commits.
تغییرات API
- Instead of relying on the concrete
DrawerLayout
class,AppBarConfiguration
now uses theOpenable
interface introduced in CustomView1.1.0-alpha02
(whichDrawerLayout
implements as of DrawerLayout1.1.0-alpha04
), allowing you to use custom implementations ofOpenable
withNavigationUI
. ( b/129030452 )
رفع اشکال
- The
navigation-common-ktx
ProGuard rules now correctly only keep theNavArgs
classes that are used rather than allNavArgs
instances. ( b/150213558 )
Dependency changes
- Navigation has reverted its dependency on Core
1.2.0
and now depends on Core1.1.0
to avoid forcing developers to move to a newer dependency when Navigation does not depend on any new APIs in Core1.2.0
.
Version 2.3.0-alpha02
19 فوریه 2020
androidx.navigation:navigation-*:2.3.0-alpha02
is released. Version 2.3.0-alpha02 contains these commits.
ویژگی های جدید
- The
NavBackStackEntry
now allows you to access aSavedStateHandle
suitable for storing small amounts of saved state that should be associated with a particular back stack entry. See Returning a result for an example use case. ( b/79672220 )
تغییرات API
- Convenience methods of
getCurrentBackStackEntry()
andgetPreviousBackStackEntry()
have been added to make it easier to retrieve aNavBackStackEntry
for the current and previous destinations. ( b/79672220 )
رفع اشکال
-
navigateUp()
now passes the current destination's arguments and theKEY_DEEP_LINK_INTENT
to the previous destination when launching your app on your own task stack. ( b/147456890 )
Dependency changes
- Navigation now depends on Core
1.2.0
.
Version 2.3.0-alpha01
5 فوریه 2020
androidx.navigation:navigation-*:2.3.0-alpha01
is released. Version 2.3.0-alpha01 contains these commits .
ویژگی های جدید
- The new
navigation-testing
artifact provides aTestNavHostController
class. This class provides an alternative to using a mockNavController
when testing Navigation that allows you to set the current destination and verify the back stack after navigation operations. ( b/140884273 ) - The new
navigation-dynamic-features-fragment
(and its transitive dependency,navigation-dynamic-features-runtime
) allows you to include destinations or entire navigation graphs (via<include-dynamic>
) from feature modules , providing seamless installation of on-demand feature modules when navigating to those destinations. See Navigate with feature modules for more information. ( b/132170186 )
رفع اشکال
- From Navigation
2.2.1
: Deep links without query parameters now correctly ignore any query parameters rather than appending them to trailing{argument}
elements or not matching the deep link. ( b/147447512 ) - From Navigation
2.2.1
: Thenavigation-ui
ProGuard rules forDrawerArrowDrawable
have been updated to ensure thatandroid.enableJetifier=true
is not required. ( b/147610424 ) - From Navigation
2.2.1
: Thenavigation-common-ktx
module now has a unique manifest package name instead of sharing the same manifest package name asnavigation-runtime-ktx
. ( aosp/1141947 )
به روز رسانی وابستگی
- From Navigation
2.2.1
: Navigation2.2.1
now depends on Lifecycle ViewModel SavedState2.2.0
and Fragment1.2.1
.
نسخه 2.2.2
نسخه 2.2.2
15 آوریل 2020
androidx.navigation:navigation-*:2.2.2
are released. Version 2.2.2 contains these commits.
رفع اشکال
- Fixed an
IllegalStateException
when deep linking to the start destination of your graph when you have multipleNavHostFragment
instances in your Activity. ( b/147378752 ) -
NavigationUI
no longer ignores empty labels (ie, a destination withandroid:label=””
) and now correctly sets the title to an empty string. This was previously released in Navigation 2.3.0-alpha04 . ( b/148679860 ) - The
navigation-common-ktx
ProGuard rules now correctly only keep theNavArgs
classes that are used rather than allNavArgs
instances. This was previously released in Navigation 2.3.0-alpha03 . ( b/150213558
به روز رسانی وابستگی
- Navigation now depends on Fragment
1.2.4
. ( aosp/1277325 )
نسخه 2.2.1
نسخه 2.2.1
5 فوریه 2020
androidx.navigation:navigation-*:2.2.1
is released. Version 2.2.1 contains these commits .
رفع اشکال
- Deep links without query parameters now correctly ignore any query parameters rather than appending them to trailing
{argument}
elements or not matching the deep link. ( b/147447512 ) - The
navigation-ui
ProGuard rules forDrawerArrowDrawable
have been updated to ensure thatandroid.enableJetifier=true
is not required. ( b/147610424 ) - The
navigation-common-ktx
module now has a unique manifest package name instead of sharing the same manifest package name asnavigation-runtime-ktx
. ( aosp/1141947 )
به روز رسانی وابستگی
- Navigation
2.2.1
now depends on Lifecycle ViewModel SavedState2.2.0
and Fragment1.2.1
.
نسخه 2.2.0
نسخه 2.2.0
22 ژانویه 2020
androidx.navigation:navigation-*:2.2.0
is released. Version 2.2.0 contains these commits .
Important changes since 2.1.0
- NavBackStackEntry : You can now call
NavController.getBackStackEntry()
, passing in the ID of a destination or navigation graph on the back stack. The returnedNavBackStackEntry
provides a Navigation-drivenLifecycleOwner
,ViewModelStoreOwner
(the same returned byNavController.getViewModelStoreOwner()
), andSavedStateRegistryOwner
, in addition to providing the arguments used to start that destination. - Lifecycle ViewModel SavedState Integration :
SavedStateViewModelFactory
is now the default factory used when usingby navGraphViewModels()
or theViewModelProvider
constructor with aViewModelStoreOwner
returned byNavController.getBackStackEntry()
orNavController.getViewModelStoreOwner()
. - Query Parameter Support for Deep Links : Deep links with query parameters now support reordered query parameters; arguments that have a default value or are nullable are now optional when matching deep links.
- Improved Animation Support :
NavHostFragment
now usesFragmentContainerView
from Fragment 1.2.0 , fixing animation z-ordering issues and window insets dispatching to Fragments.
Version 2.2.0-rc04
18 دسامبر 2019
androidx.navigation:navigation-*:2.2.0-rc04
is released. Version 2.2.0-rc04 contains these commits .
رفع اشکال
- Adjusted the default fade animations used by
navigation-ui
to match the adjusted fade animations in Fragment1.2.0-rc04
. ( b/145769814 )
Version 2.2.0-rc03
4 دسامبر 2019
androidx.navigation:navigation-*:2.2.0-rc03
is released. Version 2.2.0-rc03 contains these commits .
رفع اشکال
- Fixed an issue with deep link parsing when using query parameters and an argument as the last part of the path that prevented more than one character of the final path argument from being parsed. ( b/144554689 )
- Fixed an issue with deep link parsing where optional parameters would receive
"@null"
instead ofnull
. ( b/141613546 ) -
NavHostFragment
now correctly restores the graph after a configuration change when used withFragmentContainerView
. ( b/143752103 )
Dependency changes
- Navigation now depends on Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.1.0-rc03
, and Fragment1.2.0-rc03
where appropriate.
Version 2.2.0-rc02
7 نوامبر 2019
androidx.navigation:navigation-*:2.2.0-rc02
is released. Version 2.2.0-rc02 contains these commits .
Dependency changes
- Navigation now depends on androidx.lifecycle
2.2.0-rc02
.
Version 2.2.0-rc01
23 اکتبر 2019
androidx.navigation:navigation-*:2.2.0-rc01
is released with no changes since 2.2.0-beta01
. Version 2.2.0-rc01 contains these commits .
Version 2.2.0-beta01
9 اکتبر 2019
androidx.navigation:navigation-*:2.2.0-beta01
is released. Version 2.2.0-beta01 contains these commits .
ویژگی های جدید
-
NavDestination
and its subclasses now overridetoString()
to provide more helpful information when debugging. ( b/141264986 )
تغییر رفتار
- Extra query parameters are now ignored when matching deep links rather than causing the match to fail. ( b/141482822 )
رفع اشکال
- Fixed an issue where arguments in a deep link's path would be ignored if query parameters were also specified. ( b/141505755 )
- The
navArgs()
Kotlin extension onActivity
now has a better error message when there are no extras. ( b/141408999 ) - Safe Args generated
Directions
Java classes now contain default values. ( b/141099045 ) - Safe Args generated
Args
Java classes now contain default values. ( b/140123727 ) - When using a
Toolbar
,NavigationUI
no longer animates the text change when moving between two top level destinations. ( b/140848160 )
Version 2.2.0-alpha03
18 سپتامبر 2019
androidx.navigation:navigation-*:2.2.0-alpha03
is released. Version 2.2.0-alpha03 contains these commits .
تغییر رفتار
- Calling
setViewModelStore()
after callingsetGraph
now results in anIllegalStateException
. This should always be set by theNavHost
as part of the initial setup to ensure that allNavBackStackEntry
instances have a consistent storage forViewModel
instances. ( aosp/1111821 )
رفع اشکال
- Fixed a
ConcurrentModificationException
when usingViewModel
instances attached to multiple different navigation graph scopedViewModelStore
instances. ( aosp/1112257 )
Version 2.2.0-alpha02
5 سپتامبر 2019
androidx.navigation:navigation-*:2.2.0-alpha02
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
ویژگی های جدید
- Deep links with query parameters now support reordered query parameters; arguments that have a default value or are nullable are now optional when matching deep links. ( b/133273839 )
- You can now call
NavController.getBackStackEntry()
, passing in the ID of a destination or navigation graph on the back stack. The returnedNavBackStackEntry
provides a Navigation-drivenLifecycleOwner
,ViewModelStoreOwner
(the same returned byNavController.getViewModelStoreOwner()
), andSavedStateRegistryOwner
, in addition to providing the arguments used to start that destination. ( aosp/1101691 , aosp/1101710 )
رفع اشکال
- Fixed an issue where adding a
NavHostFragment
toViewPager2
failed with anIllegalArgumentException
. ( b/133640271 ) -
NavInflater
now avoids callinggetResourceName()
unnecessarily, speeding up inflation time by up to 40%. ( b/139213740 )
Version 2.2.0-alpha01
7 آگوست 2019
androidx.navigation:navigation-*:2.2.0-alpha01
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
ویژگی های جدید
-
SavedStateViewModelFactory
is now the default factory used when usingby navGraphViewModels()
or theViewModelProvider
constructor with aViewModelStoreOwner
returned byNavController.getViewModelStoreOwner()
. ( b/135716331 )
API تغییر می کند
- From Navigation
2.1.0-rc01
: The deprecatedgetViewModelStore()
API onNavController
introduced in2.1.0-alpha02
has been removed. ( aosp/1091021 )
رفع اشکال
-
NavHostFragment
now usesFragmentContainerView
, fixing animation z-ordering issues and window insets dispatching to Fragments. ( b/137310379 )
نسخه 2.1.0
نسخه 2.1.0
5 سپتامبر 2019
androidx.navigation:navigation-*:2.1.0
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
Important changes since 2.0.0
- Scoping ViewModels to a navigation graph : You can now create ViewModels that are scoped at the navigation graph level using the
by navGraphViewModels()
property delegate for Kotlin users using the-ktx
libraries or by using thegetViewModelStoreOwner()
API added toNavController
. See Share UI-related data between destinations for more information. - Dialog destinations : You can now create
<dialog>
destinations that will show aDialogFragment
when younavigate
to them.NavHostFragment
supports dialog destinations by default. See Create a destination from a DialogFragment for more information. - Navigating by Uri : You can now
navigate
using aUri
, which uses the<deepLink>
you've added to a destination to navigate there. See Navigate using Uri for more information. - NavHostController : APIs used specifically for constructing a custom
NavHost
have been moved toNavHostController
, allowing implementations to connect theirNavController
to the hostingLifecycleOwner
,OnBackPressedDispatcher
, andViewModelStore
.
Version 2.1.0-rc01
7 آگوست 2019
androidx.navigation:navigation-*:2.1.0-rc01
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
API تغییر می کند
- The deprecated
getViewModelStore()
API onNavController
introduced in2.1.0-alpha02
has been removed. ( aosp/1091021 )
Version 2.1.0-beta02
19 جولای 2019
androidx.navigation:*:2.1.0-beta02
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
رفع اشکال
- Removed unintentional jacoco dependency that was introduced in
2.1.0-beta01
. ( b/137782950 )
Version 2.1.0-beta01
17 جولای 2019
androidx.navigation:*:2.1.0-beta01
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
ویژگی های جدید
-
NavigationUI
now animates the removal of the Up button when usingsetupWithNavController()
with aToolbar
orCollapsingToolbarLayout
. ( b/131403621 )
رفع اشکال
- Fixed a timing issue when using multiple NavHostFragments with the same container with
findNavController()
. ( b/136021571 )
Version 2.1.0-alpha06
2 جولای 2019
androidx.navigation:*:2.1.0-alpha06
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
ویژگی های جدید
- The
app:navGraph
attribute used by NavHostFragment has now been moved to thenavigation-runtime
artifact. Custom navigators that can be added via XML should use this attribute to gain integration with the Navigation Editor's Host panel. ( b/133880955 )
API تغییر می کند
- The
getViewModelStore()
API onNavController
has been deprecated in favor of the newgetViewModelStoreOwner()
method that returns aViewModelStoreOwner
. ( aosp/987010 ) - The implementation of floating window destinations, such as
<dialog>
destinations, has been generalized into a marker interface,FloatingWindow
, that all<dialog>
destinations now implement. NavigationUI methods for interacting with the top app bar now ignoreFloatingWindow
destinations. ( b/133600763 )
تغییر رفتار
- Navigation now correctly keeps its state in sync with what is seen on the screen when using a
<dialog>
destination. As a consequence, Navigation now automatically pops<dialog>
destinations when you navigate to a non-dialog and non-activity destination, such as a<fragment>
destination. ( b/134089818 )
رفع اشکال
- Navigation now suppresses the animation that occurs when recreating the activity when handling a deep link, fixing a visual flash. ( b/130362979 )
- Fixed a bug where the Navigation back stack would be out of sync when popping a Fragment as the initial fragment is being added. ( b/133832218 )
Version 2.1.0-alpha05
5 ژوئن 2019
androidx.navigation:*:2.1.0-alpha05
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
API تغییر می کند
- Host related APIs on
NavController
have been renamed and moved to a new subclass ofNavController
,NavHostController
. ( aosp/966091 ) - The
NavController
setHostOnBackPressedDispatcherOwner()
method has been replaced withNavHostController
'ssetOnBackPressedDispatcher()
method and now requires that you callsetLifecycleOwner()
prior to calling it. ( aosp/965409 ) -
NavHostController
now contains aenableOnBackPressed(boolean)
method that replaces theNavHostOnBackPressedManager
class that was previously returned bysetHostOnBackPressedDispatcherOwner()
. ( aosp/966091 )
رفع اشکال
- Fixed an issue where the back stack was not correct after navigating by URI. ( b/132509387 )
- Deep links automatically handled by NavController now only trigger once. ( b/132754763 )
Version 2.1.0-alpha04
16 مه 2019
androidx.navigation:*:2.1.0-alpha04
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
رفع اشکال
-
NavHostFragment
correctly respectsapp:defaultNavHost
when intercepting the system Back button events, fixing a regression in Navigation2.1.0-alpha03
. b/132077777 -
DialogFragmentNavigator
now correctly handlespopBackStack()
andnavigateUp()
operations. b/132576764 - Fixed an
IllegalStateException: unknown destination during restore
issue when repeatedly navigating between nested graphs. b/131733658
Version 2.1.0-alpha03
7 مه 2019
androidx.navigation:*:2.1.0-alpha03
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
مسائل شناخته شده
- NavHostFragment continues to intercept the system Back button despite using
app:defaultNavHost="false"
b/132077777
ویژگی های جدید
- You can now create
<dialog>
destinations that will show aDialogFragment
when younavigate
to them.NavHostFragment
supports dialog destinations by default. b/80267254 - In addition to calling
navigate
with a resource id or aNavDirections
instance, you can now navigate via aUri
, which uses the<deepLink>
you've added to a destination to navigate to the correct destination. b/110412864
تغییر رفتار
- The default animations provided by NavigationUI have been sped up from 400ms to 220ms to match the default animation speed of activities and fragments. b/130055522
API تغییر می کند
- The
createFragmentNavigator()
method ofNavHostFragment
has been deprecated and its functionality moved to the newonCreateNavController()
method to make it more clear that this is the correct entry point of adding custom Navigators when subclassingNavHostFragment
. b/122802849 - A
hasDeepLink()
method has been added toNavDestination
to allow you to check if a givenUri
can be handled by that destination or, in the case of aNavGraph
, any destination in the navigation graph. b/117437718
رفع اشکال
- Default arguments are now correctly passed to
OnDestinationChangedListener
instances. b/130630686 -
NavHostFragment
now intercepts system Back events using theOnBackPressedDispatcher
, fixing an issue when doing conditional navigation in Fragment lifecycle methods upon returning to a Fragment. b/111598096 - For Safe Args, an
android:defaultValue=”@null”
with an unspecifiedapp:argType
is now properly inferred as astring
argument. b/129629192
Version 2.1.0-alpha02
3 آوریل 2019
androidx.navigation:*:2.1.0-alpha02
is released. commit های موجود در این نسخه را می توانید در اینجا بیابید.
ویژگی های جدید
- You can now create ViewModels that are scoped at a navigation graph level via the
by navGraphViewModels()
property delegate for Kotlin users or by using thegetViewModelStore()
API added toNavController
. b/111614463
API تغییر می کند
- You can now add an
app:targetPackage
to an<activity>
destination to limit the matching package name. It supportsapp:targetPackage="${applicationId}"
for restricting the package to your own application id. b/110975456
رفع اشکال
- The
android:name
for<activity>
destinations is no longer parsed into a Class at inflation time, preventing ClassNotFoundExceptions when using dynamic features. b/124538597
Version 2.1.0-alpha01
19 مارس 2019
This is the first alpha release of Navigation 2.1.0
.
Dependency changes
- Navigation now depends on
androidx.core:core:1.0.1
andandroidx.fragment:fragment:1.1.0-alpha05
. This release also removes the dependency onandroidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
تغییرات API
- A new
Navigation.createNavigateOnClickListener(NavDirections)
method has been added as an alternative to creating a click listener with a resource ID and Bundle. b/127631752 -
FragmentNavigator.instantiateFragment
is now deprecated. The default implementation now usesFragmentFactory
to instantiate Fragments. b/119054429
رفع اشکال
- Navigation no longer sends a null
Bundle
when there are arguments attached to a destination, fixing an issue when usingandroid:defaultValue="@null"
. b/128531879 - Safe Args now depends on KotlinPoet 1.1.0, fixing an issue with extremely long package names. b/123654948
نسخه 2.0.0
نسخه 2.0.0
14 مارس 2019
Navigation 2.0.0
is released with no changes from 2.0.0-rc02
.
Version 2.0.0-rc02
6 مارس 2019
Navigation 2.0.0-rc02 provides new artifacts with the androidx.navigation
group ID and changes its dependencies to the AndroidX equivalents.
The behavior of 2.0.0-rc02 is identical to behavior to Navigation 1.0.0-rc02 and no changes to your code should be required to update from 1.0.0-rc02 besides updating your dependencies to match the new dependencies .
Your project must have migrated to AndroidX to use 2.X releases of Navigation. Navigation 1.0 stable will be the last release using the Support Library dependencies; all future development beyond 1.0 will be based on AndroidX and build upon the 2.0 stable release.
Pre-AndroidX Dependencies
For the pre-AndroidX versions of Navigation, include these dependencies:
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
}
For Safe args , add the following classpath in your top level build.gradle
file
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
نسخه 1.0.0
نسخه 1.0.0
14 مارس 2019
Navigation 1.0.0
is released with no changes from 1.0.0-rc02
.
Version 1.0.0-rc02
26 فوریه 2019
This is the second release candidate for Navigation's 1.0.0 stable release. This release contains a number of bug fixes.
رفع اشکال
- Fixed an issue where
popBackStack()
would be ignored if the root graph did not have an ID b/126251695 -
navigateUp()
now correctly handles navigating back to your app's task when called after handling a deep link withoutFLAG_ACTIVITY_NEW_TASK
b/126082008 - Fixed an issue with
ActivityNavigator.applyPopAnimationsToPendingTransition
not applying the correct pop exit animation b/126237567 - Kotlin code generated by Safe Args now properly escapes Kotlin keywords such as
in
andfun
in the package name associated with theR
class. b/126020455
نسخه 1.0.0-RC01
21 فوریه 2019
This is a release candidate for Navigation's 1.0.0 stable release. This release contains one bug fix.
رفع اشکال
- Fixed an issue when using Fragments and
singleTop
navigation operations b/124294805
نسخه 1.0.0-beta02
12 فوریه 2019
This release includes a number of minor improvements and important bug fixes.
ویژگی های جدید
- You can now use
0
as anandroid:defaultValue
forreference
arguments. b/124248602
تغییر رفتار
- Exact deep link matches are now prioritized over deep links with
.*
or argument matches. b/123969518
رفع اشکال
-
popBackStack()
andnavigateUp
now correctly returnfalse
when popping the last destination on the back stack, fixing a regression introduced in1.0.0-beta01
. b/123933201 - Navigation now correctly sets the
ClassLoader
during restoration of saved instance state, avoiding issues when using custom classes inNavigator
saved state or in arguments sent to aNavDestination
. b/123893858 - Safe Args generated NavArgs classes no longer crash when restoring a
Parcelable[]
argument from saved instance state. b/123963545 - Safe Args now properly cleans up unnecessary generated Kotlin classes. b/124120883
نسخه 1.0.0-beta01
4 فوریه 2019
This is the first beta release of Navigation; moving forward, the Navigation API is expected to stay stable until the next version unless there is a critical problem. This release contains some bug fixes and behavior changes.
تغییر رفتار
- Navigation now ensures that argument default values are treated identically at runtime and through Safe Args. As a consequence, only arguments with an
app:argType="reference"
can have a default value point to another resource (for example,@color/colorPrimary
). Attempting to use a reference default value with a differentapp:argType
will result in an exception when parsing the navigation XML. b/123551990 - Safe Args now depends on Android Gradle Plugin 3.3.0 aosp/888413
- Safe Args now depends on Kotlin 1.3.20 aosp/888414
رفع اشکال
- Safe Args can now be used in library and feature modules on all versions of the Android Gradle Plugin. b/121304903
- Fixed a regression that would cause a single
popBackStack()
operation to pop all copies of a destination off the top of the back stack, rather than just a single destination at a time. b/123552990 - Fixed an issue where the
FragmentNavigator
state would desynchronize with theNavController
's state, causing anIllegalStateException
when attempting to restore the back stack. b/123803044 - Fixed an issue where the
NavigationUI
handled back arrow would not appear when using ProGuard with obfuscation. b/123449431 - The code generated by Safe Args now properly handles using an
app:argType
pointing to a static inner class in the format.OuterClass$InnerClass
. b/123736741 - The Java code generated by Safe Args now properly handles global actions and deeply nested destinations. b/123347762
نسخه 1.0.0-alpha11
23 ژانویه 2019
This is a hotfix release of 1.0.0-alpha10
that fixes an issue with Safe Args.
رفع اشکال
- Fixes an issue where Safe Args would fail to import the Directions class associated with global actions. b/123307342
نسخه 1.0.0-alpha10
23 ژانویه 2019
مسائل شناخته شده
- Safe Args fails to import the Directions class associated with global actions. b/123307342
This release contains breaking API changes; please see the Breaking Changes section below.
ویژگی های جدید
- Kotlin users can now use the
by navArgs()
property delegate to lazily get a reference to a Safe Args generatedNavArgs
class in anActivity
orFragment
. b/122603367 - Safe Args now allows you to generate Kotlin code by applying the
androidx.navigation.safeargs.kotlin
plugin. The Kotlin code is built specifically for Kotlin only modules, using default arguments and immutable classes over the builder pattern that is still available via the previousandroidx.navigation.safeargs
plugin. b/110263087
تغییرات رفتار
- Matching deep links are now biased towards the deep link that has the most matching arguments. b/118393029
- Calling
setGraph()
on aNavController
will now reset the back stack. b/111450672 - Unknown deep links no longer throw an
IllegalStateException
, but are ignored, fixing issues with nested or multipleNavHostFragment
s. b/121340440
شکستن تغییرات
- The
NavOptions.applyPopAnimationsToPendingTransition()
method for applying pop animations to an Activity has been moved toActivityNavigator
. b/122413117 - Safe Args now avoids duplicating identical classes for actions without arguments. The return type for no argument methods in generated NavDirections classes is now
NavDirections
. b/123233147 - Safe Args generated Directions classes no longer have a public constructor - you should only be interacting with the generated static methods. b/123031660
- Safe Args generated
NavDirections
classes no longer have a public constructor - they should only be generated via the static methods in the generated Directions classes. b/122963206 - The returned
Bundle
fromNavDirections
'getArguments()
is now marked as@NonNull
rather than@Nullable
. b/123243957
رفع اشکال
-
NavDeepLinkBuilder
now correctly handles multiple simultaneousPendingIntent
s to the same destination by using the arguments you pass in to determine the uniqueness. b/120042732 -
NavController
now correctly handlespopBackStack()
operations when using a nestedNavHostFragment
or other child Fragments with a back stack. b/122770335 -
NavigationUI
now correctly sets the content description of the Up button. b/120395362 - Safe Args generated Directions classes now correctly handle global actions that have the same id as an action on a destination. b/122962504
- Safe Args generated
NavDirections
classes now correctly have equalhashCode()
values whenequals()
would return true. b/123043662 -
FragmentNavigator
now throws a better error message if you attempt to do customFragmentTransactions
on theNavHostFragment
'sFragmentManager
. You should always usegetChildFragmentManager()
. b/112927148
نسخه 1.0.0-alpha09
18 دسامبر 2018
This release contains breaking API changes; please see the Breaking Changes section below.
We have chosen not to continue development of the android.arch.navigation:navigation-testing
artifact. While it has proven helpful for internal testing of NavController
, we strongly recommend alternate testing strategies, such as mocking the NavController
instance in order to verify that the correct navigate()
calls are being done. This approach is discussed in detail in the Single Activity talk at AndroidDevSummit 2018 and we'll be working on additional documentation specifically around testing with Navigation.
ویژگی های جدید
-
MenuItem
s withmenuCategory="secondary"
will no longer pop the back stack when used withNavigationUI
methods. b/120104424 -
AppBarConfiguration
now allows you to set a fallbackOnNavigateUpListener
instance which will be called whennavController.navigateUp()
returnsfalse
. b/79993862 b/120690961
شکستن تغییرات
- When using an
<argument>
with anargType="reference"
, Navigation no longer parses the reference, instead providing the raw resource ID itself. b/111736515 -
onNavDestinationSelected()
now pops back to the start destination of your navigation graph by default, making them consistent with thesetup
methods. AddmenuCategory="secondary"
to yourMenuItem
to avoid popping the back stack. aosp/852869 - The
fromBundle()
methods of generatedArgs
classes now take a non-nullBundle
instead of a nullableBundle
aosp/845616
رفع اشکال
- Arguments are now properly parsed from deep links as the correct
argType
instead of always as strings b/110273284 - Navigation now correctly exports its public resources b/121059552
- Safe Args is now compatible with Android Gradle Plugin 3.4 Canary 4 and higher b/119662045
نسخه 1.0.0-alpha08
6 دسامبر 2018
This release contains breaking API changes; please see the Breaking Changes section below.
ویژگی های جدید
- Destination labels, when used with
NavigationUI
methods, will now automatically replace{argName}
instances in yourandroid:label
with the correct argument b/80267266 - Navigation now depends on Support Library 28.0.0 b/120293333
شکستن تغییرات
-
OnNavigatedListener
has been renamed toOnDestinationChangedListener
b/118670572 -
OnDestinationChangedListener
now also passes theBundle
of arguments aosp/837142 - The
app:clearTask
andapp:launchDocument
attributes and their associated methods have been removed. Useapp:popUpTo
with the root of your graph to remove all destinations from your back stack. b/119628354 -
ActivityNavigator.Extras
now uses aBuilder
pattern and adds the ability to set anyIntent.FLAG_ACTIVITY_
flags aosp/828140 -
NavController.onHandleDeepLink
has been renamed tohandleDeepLink
aosp/836063 - Many classes and methods not meant for subclassing, such as
NavOptions
,NavInflater
,NavDeepLinkBuilder
, andAppBarConfiguration
, have been madefinal
aosp/835681 - The deprecated
NavHostFragment.setGraph()
method has been removed aosp/835684 - The deprecated
NavigationUI.navigateUp(DrawerLayout, NavController)
method has been removed. aosp/835684 - Fragment creation has been moved to
FragmentNavigator
, making it easier to delegate Fragment creation to aFragmentFactory
. b/119054429 - The constructor for
NavGraphNavigator
no longer takes aContext
aosp/835340 - NavigatorProvider is now a class, rather than an interface. The
NavigatorProvider
returned bygetNavigatorProvider()
has not changed its functionality. aosp/830660 -
NavDestination.navigate()
has been removed. Callnavigate()
on theNavigator
instead. aosp/830663 - Significant refactoring of
Navigator
, removing the need forOnNavigatorNavigatedListener
and instead havingnavigate
return theNavDestination
that was navigated to. -
Navigator
instances can no longer send pop events to theNavController
. Consider using aOnBackPressedCallback
to intercept back button presses and callnavController.popBackStack()
. aosp/833716
رفع اشکال
-
popUpTo
now works consistently when the destination is a<navigation>
element b/116831650 - Fixed a number of bugs that resulted in an
IllegalArgumentException
when using nested graphs b/118713731 b/113611083 b/113346925 b/113305559 - The
dataPattern
attribute of<activity>
destinations will now populate arguments from non-String arguments by callingtoString()
b/120161365
Safe Args
- Safe Args supports Serializable objects, including Enum values. Enum types can set a default value by using the enum literal without the class name (eg
app:defaultValue="READ"
) b/111316353 - Safe Args supports arrays of all supported types b/111487504
- Safe Args now ignores subfolders of resource directories b/117893516
- Safe Args adds
@Override
annotations where appropriate b/117145301
نسخه 1.0.0-alpha07
29 اکتبر 2018
ویژگی های جدید
- A new AppBarConfiguration class allows you to customize which destinations are considered top-level destinations. برای جزئیات به مستندات به روز شده مراجعه کنید. b/117333663
- You can now pass arguments to the start destination of your graph b/110300470
- Deep links now support custom schemes with periods, hyphens, and plus signs. b/112806402
شکستن تغییرات
- The
navigation-testing-ktx
module has been folded into thenavigation-testing artifact
and will no longer be published. - The
navigation-testing
artifact now has a dependency on the Kotlin standard library. The API has been changed to be more consistent with Kotlin conventions, but you can continue to use it for tests written in Java. - Metadata manifest registered navigation graphs are no longer supported. b/118355937
- Actions can no longer be attached to <activity> destinations. aosp/785539
رفع اشکال
- Deep links now correctly parse query parameters. b/110057514
- Activity destinations now correctly apply all enter and exit animations. b/117145284
- Fixed crash that occurs after configuration changes when using custom Navigators. b/110763345
Safe Args
- Safe args now have a fixed dependency on Android Gradle Plugin 3.2.1. b/113167627
- Directions can now be generated for inner classes. b/117407555
- Fixed an issue with generating Directions to an <include> graph. b/116542123
نسخه 1.0.0-alpha06
20 سپتامبر 2018
ویژگی های جدید
- Shared Element Transitions for Fragment and Activity destinations are now supported b/79665225 . For more information, see Implement navigation with the Navigation Architecture Component
- Selecting an item in
NavigationView
will now close any containing bottom sheet b/112158843
تغییرات API
- Breaking Change: The Navigator
navigate()
method now takes aNavigator.Extras
parameter. - NavController's
getGraph()
method is nowNonNull
b/112243286
رفع اشکال
-
NavigationUI.setupWithNavController()
no longer leaks views if used with views from individual destinations b/111961977 - Navigator
onSaveState()
is now only called once b/112627079
Safe Args
- Navigation destination Directions classes now extend their parent's Directions class if it exists b/79871405
- Directions and Args classes now have a useful
toString()
implementation b/111843389
نسخه 1.0.0-alpha05
10 آگوست 2018
رفع اشکال
- Fix a bug which cause incorrect backstack behavior. b/111907708
- Fix a bug in
equals()
of Generated Args classes. b/111450897 - Fix a build failure in Safe Args. b/109409713
- Fix a conversion from resource identifiers to java names b/111602491
- Fix error messages about nullability in Safe Args plugin.
- Add missing nullability annotations.
نسخه 1.0.0-alpha04
19 جولای 2018
Navigation 1.0.0-alpha04
and the associated Safe Args gradle plugin contains a number of API changes, behavior changes, and bug fixes.
API / Behavior Changes
- NavHostFragment will always set the current Fragment as the primary navigation fragment, ensuring that child fragment managers are popped before the outer NavController is popped b/111345778
Safe Args
- Breaking Change:
app:type
has been changed toapp:argType
to avoid conflicts with other libraries such as ConstraintLayout 2.0.0-alpha1 b/111110548 - Error messages from Safe Args are now clickable b/111534438
- Args classes now confirms that
NonNull
attributes are actually not null b/111451769 - Additional
NonNull
annotations have been added to NavDirections and Args generated classes b/111455455 b/111455456
رفع اشکال
- Fixed an issue with the system back button after deep linking to a fragment destination b/111515685
نسخه 1.0.0-alpha03
12 جولای 2018
Navigation 1.0.0-alpha03
and the associated Safe Args gradle plugin contains a number of API changes, behavior changes, and bug fixes.
API / Behavior Changes
- A NavigationUI.setupWithNavController method for Toolbar has been added b/109868820
- A NavigationUI.setupWithNavController method for CollapsingToolbarLayout has been added b/110887183
- popBackStack() now returns false when the back stack is empty or when the given destination ID is not in the back stack b/110893637
- FragmentNavigator now ignores navigation operations after FragmentManager has saved state, avoiding “Can not perform this action after onSaveInstanceState” exceptions b/110987825
Safe Args
- Breaking Change: Non-alphanumeric characters in action and argument names will be replaced by camel casing in the respective NavDirections method names
- Eg
DemoController.index
will becomesetDemoControllerIndex
b/79995048 - Eg
action_show_settings
will becomeactionShowSettings
b/79642240
- Eg
- Breaking Change: Arguments are now considered non-null by default. To allow null values on string and parcelable arguments, add
app:nullable="true"
b/79642307 - You can now use
app:type="long"
with defaultValues in the form of “123L” b/79563966 - Parcelable arguments are now supported, using a fully qualified class name for
app:type
. The only default value supported is"@null"
b/79563966 - Args classes now implement
equals()
andhashCode()
b/79642246 - The Safe Args plugin can now be applied to library projects b/80036553
- The Safe Args plugin can now be applied to feature projects b/110011752
رفع اشکال
- Fixed issues when navigating during Fragment lifecycle methods b/109916080
- Fixed issues when navigating through nested graphs multiple times b/110178671
- Fixed issues when using
setPopUpTo
with the first destination in the graph b/109909461 - Fixed issue where all
app:defaultValue
values were being passed as Strings b/110710788 - aapt2 bundled with Android Gradle Plugin 3.2 Beta 01 now adds keep rules for every
android:name
attribute in Navigation XML files b/79874119 - Fixed memory leak when replacing the default FragmentNavigator b/110900142
نسخه 1.0.0-alpha02
7 ژوئن 2018
تغییرات رفتار
FragmentNavigator
now usessetReorderingAllowed(true)
. b/109826220Navigation now URLDecodes arguments parsed from deep links URLs. b/79982454
رفع اشکال
Fixed an
IllegalStateException
when calling navigate from Fragment lifecycle methods. b/79632233Navigation now depends on Support Library 27.1.1 to fix flickering when using animations. b/80160903
Fixed an
IllegalArgumentException
when using defaultNavHost="true" as a child fragment. b/79656847Fixed a
StackOverflowError
when using NavDeepLinkBuilder. b/109653065Fixed an
IllegalArgumentException
when navigating back to a nested graph. b/80453447Fixed an issue with overlapping Fragments when using
launchSingleTop
. b/79407969Navigation now builds the correct synthetic back stack for nested graphs. b/79734195
NavigationUI will now highlight the correct item when using a nested graph as a
MenuItem
. b/109675998
تغییرات API
The
clearTask
attribute for actions and the associated API inNavOptions
has been deprecated. b/80338878The
launchDocument
attribute for actions and the associated API inNavOptions
has been deprecated. b/109806636
نسخه 1.0.0-alpha01
8 مه 2018
Navigation provides a framework for building in-app navigation. This initial release is 1.0.0-alpha01
.