Navigasi
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 24 September 2025 | 2.9.5 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Navigation, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi
aplikasi atau modul Anda:
Groovy
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.9.5" // 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" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.5" // 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
Untuk menambahkan Safe Args ke project Anda, sertakan build.gradle berikut ke file classpath tingkat teratas Anda:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.5" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Anda juga harus menerapkan salah satu dari dua plugin yang tersedia.
Untuk menghasilkan kode bahasa Java yang sesuai bagi modul Java atau modul campuran Java dan Kotlin, tambahkan
baris berikut ke file build.gradle aplikasi atau modul Anda:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Atau, untuk menghasilkan kode Kotlin yang sesuai bagi modul khusus Kotlin, tambahkan:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Anda harus memiliki android.useAndroidX=true dalam
file gradle.properties seperti yang dijelaskan dalam
Bermigrasi ke AndroidX.
Untuk informasi tentang cara menggunakan ekstensi Kotlin, lihat dokumentasi ktx.
Untuk informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 2.9
Versi 2.9.5
24 September 2025
androidx.navigation:navigation-*:2.9.5 dirilis. Versi 2.9.5 berisi commit ini.
Perbaikan Bug
- Navigation Safe Args kini dapat menangani dukungan AGP 9.0 untuk kotlin bawaan. (I1d9d76)
Pembaruan Dependensi
- Plugin Navigation Safe Args kini bergantung pada Plugin Android Gradle versi 8.4.2. (b/431847270, I5932a)
Versi 2.9.4
10 September 2025
androidx.navigation:navigation-*:2.9.4 dirilis. Versi 2.9.4 berisi commit ini.
Perbaikan Bug
- Mencegah error saat peristiwa kembali prediktif dikirimkan di tengah frame setelah pengendali dinonaktifkan dalam transisi
NavHost. (I5667c, b/384186542)
Versi 2.9.3
30 Juli 2025
androidx.navigation:navigation-*:2.9.3 dirilis. Versi 2.9.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki error di
NavControlleryang menyebabkanConcurrentModificationExceptionsaat menggunakanOnDestinationChangedListeners. (If7406, b/417784831) - Memperbaiki error saat menggunakan
navigate(uri, navOptions,navigationExtras)yang menyebabkan ekstra diabaikan. (I67fb7, b/430336813)
Versi 2.9.2
16 Juli 2025
androidx.navigation:navigation-*:2.9.2 dirilis. Versi 2.9.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat entri tidak dilanjutkan ketika dialog di atas entri ditutup (Idb20e, b/418746335)
- Memperbaiki error
MissingFieldExceptionsaat mengujiSavedStateHandledengan rute aman jenis saat menggunakanNavTypeskustom. (I2f843, b/421002511)
Versi 2.9.1
2 Juli 2025
androidx.navigation:navigation-*:2.9.1 dirilis. Versi 2.9.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan
NavEntriesyang di-instantiate menggunakan single top tidak pernah melampaui CREATED diLifecycle.State-nya. (I043ba, b/421095236)
Versi 2.9.0
7 Mei 2025
androidx.navigation:navigation-*:2.9.0 dirilis. Versi 2.9.0 berisi commit ini.
Perubahan penting sejak versi 2.8.0
- Tindakan Navigation Safe Args kini dibuat dengan anotasi
@CheckResultuntuk memastikan tindakan tersebut digunakan.
Antarmuka SupportingPane
- Navigator Kustom kini dapat menandai tujuannya sebagai penerapan antarmuka
SupportingPaneyang menunjukkan keNavControllerbahwa tujuan ini akan ditampilkan bersama tujuan lain. Dengan menggunakan antarmuka ini, beberapa tujuan dapatRESUMEDsecara bersamaan, misalnya.
Multiplatform Kotlin Compose
- Navigation kini menawarkan fungsi
NavController.handleDeepLink()umum baru yang menggunakanNavDeepLinkRequest, bukanIntent. Hal ini memungkinkan platform selain Android menangani deep link dengan benar. Terima kasih, Konstantin Tskhovrebov! - Navigation kini menawarkan
NavUri, fungsi parser umum baru yang merupakan API yang kompatibel untuk URI Android di platform lain. Hal ini memungkinkan pembuatan URI dengan cara yang tidak bergantung pada platform. Terima kasih, Konstantin Tskhovrebov!
Fungsi Type Safe
- API dengan keamanan jenis yang sebelumnya hanya dapat diakses melalui metode
reified, yaitu:composable<YourScreen>kini memiliki versi yang tidak diwujudkan yang secara langsung mengambil instanceKClass. - Keamanan jenis Navigation kini mendukung class nilai sebagai rute atau sebagai jenis argumen rute.
Versi 2.9.0-rc01
23 April 2025
androidx.navigation:navigation-*:2.9.0-rc01 dirilis. Versi 2.9.0-rc01 berisi commit ini.
Perbaikan Bug
- Menghapus semua target platform non-Android dari Jetpack Navigation karena target tersebut sebenarnya tidak berfungsi. Stub untuk platform yang berbeda kini disediakan.(I2877d)
Versi 2.9.0-beta01
9 April 2025
androidx.navigation:navigation-*:2.9.0-beta01 dirilis. Versi 2.9.0-beta01 berisi commit ini.
Perubahan API
- API umum
parseStringAsNavUritelah diubah menjadi fungsi factoryNavUriyang menggunakan String. (I4db6e, b/403616316)
Update Dependensi
- Library ini kini menargetkan tingkat bahasa Kotlin 2.0 dan memerlukan KGP 2.0.0 atau yang lebih baru. (Idb6b5)
Versi 2.9.0-alpha09
26 Maret 2025
androidx.navigation:navigation-*:2.9.0-alpha09 dirilis. Versi 2.9.0-alpha09 berisi commit ini.
Fitur Baru
- Modul
navigation-testingkini mendukung desktop, Linux, macOS, dan iOS selain Android. (I2b770, b/398265336) NavTypekini didukung di desktop, Linux, macOS, dan iOS selain Android. (I297d8)
Versi 2.9.0-alpha08
12 Maret 2025
androidx.navigation:navigation-*:2.9.0-alpha08 dirilis. Versi 2.9.0-alpha08 berisi commit ini.
Perbaikan Bug
- Dari Navigation
2.8.9: Memperbaiki regresi yang ditemukan di Navigation 2.8.8 yang mengharuskan deep link cocok dengan semua kolom permintaan atau intent deep link secara persis agar dianggap cocok. Hal ini menyebabkan deep link yang berisi kecocokan kolom parsial dan tidak memiliki kolom lainnya tidak lagi berfungsi. (Ie5e36, b/399826566)
Kontribusi Eksternal
- Fungsi parser umum baru untuk membuat
NavUri. Terima kasih, Konstantin Tskhovrebov! (If0a6a)
Versi 2.9.0-alpha07
26 Februari 2025
androidx.navigation:navigation-*:2.9.0-alpha07 dirilis. Versi 2.9.0-alpha07 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat mencoba
saveStatedengan pop non-inklusif akan menghasilkan savedState null yang dapat menyebabkan error saat pemulihan. (I9f3e8, b/395091644) - Dari Navigation 2.8.8: Pencocokan
NavDeepLinktelah diperbaiki, dengan deep link dan permintaan deep link harus cocok persis pada URI, tindakan, dan MIME. Pencocokan tidak lagi diizinkan jika hanya satu atau dua kolom yang cocok. (I3b029, b/395712033) - Dari Navigation 2.8.8: Memperbaiki bug saat rute dengan jalur wildcard tidak cocok dengan deep link yang ditambahkan (I7ea92, b/389970341)
Kontribusi Eksternal
- Ekstrak API navigation-common, navigation-runtime, dan navigation-compose ke platform umum. Terima kasih, Konstantin Tskhovrebov! (I1e626, Ica76f, Idf479)
Masalah Umum
- Karena upaya untuk mengatasi b/395712033, deep link secara keliru diwajibkan untuk memiliki semua kolom yang sama dengan permintaan deep link dan/atau
Intent. Deep link hanya perlu mencocokkan kolom yang dimilikinya, dan kolom yang tidak disertakan harus diabaikan. Masalah ini telah diperbaiki untuk rilis mendatang sebagai bagian dari b/399826566.
Versi 2.9.0-alpha06
12 Februari 2025
androidx.navigation:navigation-*:2.9.0-alpha06 dirilis. Versi 2.9.0-alpha06 berisi commit ini.
Fitur Baru
- Tindakan Navigation Safe Args kini dibuat dengan anotasi
@CheckResultuntuk memastikan tindakan tersebut digunakan. (I14d4c, b/356323084)
Perbaikan Bug
- Memperbaiki error di
NavControllersaat status backStack salah dicoba dipulihkan ke dalam array saat disimpan ke dalam daftar. (Idfb9b) - Dari Navigation
2.8.7: Navigation Safe Args kini memberikan dukungan untuk tujuan composable. (I35320, b/362791955)
Versi 2.9.0-alpha05
29 Januari 2025
androidx.navigation:navigation-*:2.9.0-alpha05 dirilis. Versi 2.9.0-alpha05 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan animasi penskalaan yang tidak terduga saat menggunakan Navigation Compose. (I480f4, b/353294030)
- Dari Navigation
2.8.6: LabelNavDestinationyang disediakan melalui XML akan diuraikan melaluiNavType.getuntuk memastikan logikaNavTypekustom dipatuhi. (I7ec2f, b/388100796) - Dari Navigation
2.8.6: Saat menavigasi ke aktivitas dengandataPattern,ActivityNavigatorkini akan mencoba mengenkode nilai argumen denganNavTypeargumen. (I16376, b/383616432) - Dari Navigation
2.8.5: Memperbaiki masalah yang menyebabkan animasi penskalaan yang tidak terduga saat menggunakan Navigation Compose dan memanggil navigasi dalam frame yang sama dengan akhir animasi saat ini. (I26cb1, b/353294030)
Versi 2.9.0-alpha04
11 Desember 2024
androidx.navigation:navigation-*:2.9.0-alpha04 dirilis. Versi 2.9.0-alpha04 berisi commit ini.
Fitur Baru
- API dengan keamanan jenis yang sebelumnya hanya dapat diakses melalui metode
reified, yaitu:composable<YourScreen>kini memiliki versi non-reifikasi yang secara langsung mengambil instanceKClass.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
Tabel di bawah ini menyediakan API yang di-reifikasi dan KClass.
| direifikasi | 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) |
Perubahan API
- Overload
NavGraph.setStartDestinationkhusus Kotlin untuk keamanan jenis disembunyikan dari sumber Java. (Ic640c, b/364634035)
Perbaikan Bug
- Dari Navigation
2.8.5: Memperbaiki masalah saatNavHostdapat memunculkan pengecualian di dalamPredictiveBackHandlerjika data sebelumnya dikeluarkan hingga 1 entri dan kembali ke sistem dipicu dalam frame yang sama. (I1a429, b/375343407) - Dari Navigation
2.8.5: MemperbaikiNavDestinationNullPointerExceptionsaat memperbaruistartDestinationgrafik. (I99421, b/361560785)
Kontribusi Eksternal
- Dari Navigation
2.8.5: Keamanan jenis navigasi kini mendukungList<Enum>sebagai jenis argumen rute tanpa memerlukanNavTypekustom. Terima kasih Csaba Kozák. (GH-725, b/375559962)
Versi 2.9.0-alpha03
13 November 2024
androidx.navigation:navigation-*:2.9.0-alpha03 dirilis. Versi 2.9.0-alpha03 berisi commit ini.
Fitur Baru
- Keamanan jenis Navigation kini mendukung class nilai sebagai rute atau sebagai jenis argumen rute. (I9344a, b/374347483)
Perbaikan Bug
- Memperbaiki
ConcurrentModificationExceptionyang dapat terjadi saatLifecycleObserveryang dilampirkan keNavBackStackEntrymemicu perubahan pada data sebelumnya saatLifecycleOwnerhost seperti Aktivitas atau Fragmen yang berisi mengubah status siklus prosesnya. (Ia9494)
Versi 2.9.0-alpha02
30 Oktober 2024
androidx.navigation:navigation-*:2.9.0-alpha02 dirilis. Versi 2.9.0-alpha02 berisi commit ini.
Kontribusi Eksternal
- Metode
NavController.handleDeepLink(request: NavDeepLinkRequest)umum baru. Terima kasih, Konstantin Tskhovrebov! (I3e228)
Versi 2.9.0-alpha01
16 Oktober 2024
androidx.navigation:navigation-*:2.9.0-alpha01 dirilis. Versi 2.9.0-alpha01 berisi commit ini.
Fitur Baru
- Navigator Kustom kini dapat menandai tujuannya sebagai penerapan antarmuka
SupportingPaneyang menunjukkan keNavControllerbahwa tujuan ini akan ditampilkan bersama tujuan lain. Dengan menggunakan antarmuka ini, beberapa tujuan dapatRESUMEDsecara bersamaan, misalnya. (Id5559) - Dari Navigation
2.8.3: Menambahkan pemeriksaan lint baru untuk modulnavigation-common,navigation-runtime, dannavigation-composeguna membantu mengidentifikasi rute aman jenis yang tidak diberi anotasi dengan benar menggunakan@Serializable. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilderdanNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Dari Navigation
2.8.3: Menambahkan pemeriksaan lint baru untuk modulnavigation-common,navigation-runtime, dannavigation-composeuntuk membantu mengidentifikasi semua rute yang aman untuk jenis dengan argumen Enum yang tidak diberi anotasi dengan benar menggunakan@Keep. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilderdanNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Perubahan Perilaku
- Mencoba menggunakan
NavControlleryang sebelumnya telahDESTROYEDkini akan menyebabkanIllegalStateException. (I520da, b/369616172)
Perbaikan Bug
- Perbarui pengecualian class Enum tidak ditemukan untuk menyarankan penggunaan anotasi
@Keepjika class Enum dihapus dalam build yang di-minify. (I90e79, b/358137294)
Masalah Umum
- Ada masalah dengan aturan lint baru yang ditambahkan di
Navigation 2.8.*yang menyebabkan errorObsolete custom lint checksaat mencoba menjalankan lint dengan Plugin Android Gradle 8.4+. (b/368070326, b/371463741)
Versi 2.8
Versi 2.8.9
12 Maret 2025
androidx.navigation:navigation-*:2.8.9 dirilis. Versi 2.8.9 berisi commit ini.
Perbaikan Bug
- Memperbaiki regresi yang ditemukan di Navigation 2.8.8 yang mengharuskan deep link cocok dengan semua kolom permintaan atau intent deep link secara persis agar dianggap cocok. Hal ini menyebabkan deep link yang berisi kecocokan kolom parsial dan tidak memiliki kecocokan kolom lainnya tidak lagi berfungsi. (Ie5e36, b/399826566)
Versi 2.8.8
26 Februari 2025
androidx.navigation:navigation-*:2.8.8 dirilis. Versi 2.8.8 berisi commit ini.
Perbaikan Bug
- Memperbaiki bug saat rute dengan jalur karakter pengganti tidak cocok dengan deep link yang ditambahkan. (I7ea92, b/389970341)
- Pencocokan
NavDeepLinktelah diperbaiki, dengan deeplink dan permintaan deeplink harus cocok persis pada uri, tindakan, dan MIME. Pencocokan tidak lagi diizinkan jika hanya satu atau dua kolom yang cocok. (I3227f, b/395712033)
Masalah Umum
- Karena upaya untuk mengatasi b/395712033, deep link secara keliru diwajibkan untuk memiliki semua kolom yang sama dengan permintaan deep link dan/atau
Intent. Deep link hanya perlu mencocokkan kolom yang dimilikinya, dan kolom yang tidak disertakan harus diabaikan. Masalah ini telah diperbaiki untuk rilis mendatang sebagai bagian dari b/399826566.
Versi 2.8.7
12 Februari 2025
androidx.navigation:navigation-*:2.8.7 dirilis. Versi 2.8.7 berisi commit ini.
Perbaikan Bug
- Navigation Safe Args kini menyediakan dukungan untuk tujuan composable. (I35320, b/362791955)
Versi 2.8.6
29 Januari 2025
androidx.navigation:navigation-*:2.8.6 dirilis. Versi 2.8.6 berisi commit ini.
Perbaikan Bug
- Label
NavDestinationyang diberikan melalui XML akan diuraikan melaluiNavType.getuntuk memastikan logikaNavTypekustom dipatuhi. (Id366d, b/388100796) - Saat menavigasi ke aktivitas dengan
dataPattern,ActivityNavigatorkini akan mencoba mengenkode nilai argumen denganNavTypeargumen. (I1a71d, b/383616432)
Versi 2.8.5
11 Desember 2024
androidx.navigation:navigation-*:2.8.5 dirilis. Versi 2.8.5 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat
NavHostdapat memunculkan pengecualian di dalamPredictiveBackHandlerjika data sebelumnya dimunculkan hingga 1 entri dan kembali ke sistem dipicu dalam frame yang sama. (I1a429, b/375343407) - Memperbaiki
NavDestinationNullPointerExceptionsaat memperbaruistartDestinationgrafik. (I99421, b/361560785) - Memperbaiki masalah yang menyebabkan animasi skala yang tidak terduga saat menggunakan Navigation Compose dan memanggil navigasi dalam frame yang sama dengan akhir animasi saat ini. (I26cb1, b/353294030)
- Memperbaiki
ConcurrentModificationExceptionyang dapat terjadi saatLifecycleObserveryang dilampirkan keNavBackStackEntrymemicu perubahan pada data sebelumnya saatLifecycleOwnerhost seperti Aktivitas atau Fragmen yang berisi mengubah status siklus prosesnya. (Ia9494)
Kontribusi Eksternal
- Keamanan jenis navigasi kini mendukung
List<Enum>sebagai jenis argumen rute tanpa memerlukanNavTypekustom. Terima kasih Csaba Kozák. (GH-725, b/375559962)
Versi 2.8.4
13 November 2024
androidx.navigation:navigation-*:2.8.4 dirilis. Versi 2.8.4 berisi commit ini.
Fitur Baru
- Dari Navigation
2.9.0-alpha03: Keamanan jenis Navigation kini mendukung class nilai sebagai rute atau sebagai jenis argumen rute (I9344a, b/374347483)
Perbaikan Bug
- Dari Navigation
2.9.0-alpha01: Mencoba menggunakanNavControlleryang sebelumnya telahDESTROYEDkini akan menyebabkanIllegalStateException. (I520da, b/369616172)
Versi 2.8.3
16 Oktober 2024
androidx.navigation:navigation-*:2.8.3 dirilis. Versi 2.8.3 berisi commit ini.
Fitur Baru
- Menambahkan pemeriksaan lint baru untuk modul
navigation-common,navigation-runtime, dannavigation-composeuntuk membantu mengidentifikasi rute aman jenis yang tidak diberi anotasi dengan benar menggunakan@Serializable. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilderdanNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Menambahkan pemeriksaan lint baru untuk modul
navigation-common,navigation-runtime, dannavigation-composeuntuk membantu mengidentifikasi rute aman jenis dengan argumen Enum yang tidak diberi anotasi dengan benar menggunakan@Keep. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilderdanNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Perbaikan Bug
- Memperbaiki masalah saat aturan lint baru yang ditambahkan di
Navigation 2.8.*akan menyebabkan errorObsolete custom lint checksaat mencoba menjalankan lint dengan Plugin Android Gradle 8.4+. (I1be3d, b/368070326, b/371463741)
Masalah Umum
- Lint navigasi akan memunculkan error pemeriksaan lint kustom yang sudah tidak berlaku saat mencoba menjalankan lint dengan Lint 16 (AGP 8.7) atau yang lebih tinggi. (b/371926651)
Versi 2.8.2
2 Oktober 2024
androidx.navigation:navigation-*:2.8.2 dirilis. Versi 2.8.2 berisi commit ini.
Fitur Baru
- Keamanan Jenis Navigasi kini mendukung class yang dapat diserialkan yang menyertakan
Double,Double?,DoubleArray,DoubleArray?,List<Double>, danList<Double>?tanpa memerlukanNavTypekustom. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Perbaikan Bug
- Meningkatkan pesan error saat Navigasi gagal memetakan argumen rute ke
NavType, pesan error baru akan berisi nama argumen, nama lengkap argumen, dan nama lengkap rute. (Id8416, b/346264232)
Versi 2.8.1
18 September 2024
androidx.navigation:navigation-*:2.8.1 dirilis. Versi 2.8.1 berisi commit ini.
Fitur Baru
- Menambahkan aturan lint baru untuk memastikan penggunaan fungsi
popBackStackyang mengambil jenis class yang di-reifikasi saat mencobapopBackStackmenggunakan API yang aman untuk jenis. (Ief161, b/358095343)
Perbaikan Bug
- Navigasi kini mengharuskan rute yang diteruskan ke
NavGraph'sstartDestinationberisi nilai untuk semua argumen yang diperlukan, yang mencakup argumen yang tidak dapat bernilai null dan tidak memiliki nilai default. (I18e74, b/362594265) - Argumen aman navigasi telah menambahkan dukungan untuk string yang tidak dapat bernilai null sehingga nilai "null" akan diuraikan dan disimpan ke dalam paket apa adanya. Hal ini berbeda dengan perilaku yang ada, di mana nilai "null" diuraikan menjadi objek null. Perubahan ini hanya berlaku untuk jenis String yang tidak dapat bernilai null. String nullable tidak berubah. (I08b4a, b/348936238)
NavDestinationtidak dapat lagi di-deep link kecuali melalui deep link yang ditambahkan secara eksplisit ke tujuan. Artinya, Anda hanya dapat menavigasi ke rute tujuan dengan kelebihan beban fungsi navigasi yang mengambil rute string. Perbaikan ini mengatasi kerentanan yang memungkinkan deep link ke tujuan yang berpotensi dilindungi. (Ie30e6)
Pembaruan Dependensi
- Navigation Safe Args kini bergantung pada Kotlin 1.9.24, bukan Kotlin 2.X, sehingga memastikan developer tidak dipaksa untuk melakukan update. (a4129a)
- Navigation Compose kini bergantung pada Compose
1.7.2.
Versi 2.8.0
4 September 2024
androidx.navigation:navigation-*:2.8.0 dirilis. Versi 2.8.0 berisi commit ini.
Perubahan penting sejak versi 2.7.0
Keamanan Jenis DSL Kotlin Navigation
- Navigation kini menyediakan keamanan jenis untuk DSL Kotlin (yang digunakan oleh Navigation Compose) menggunakan Kotlin Serialization untuk memungkinkan Anda menentukan tujuan dalam grafik navigasi melalui objek dan class data yang aman jenis:
// 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)
}
}
Lihat postingan blog Navigation Compose memenuhi Keamanan Jenis untuk mengetahui informasi selengkapnya.
Kembali Prediktif Navigation Compose
- Navigation Compose kini menyediakan dukungan untuk Kembali dalam aplikasi prediktif melalui API
SeekableTransitionStatebaru dari compose-animation. Dengan begitu, Anda dapat menggunakan gestur kembali untuk melihat tujuan sebelumnya dengan Transisi kustom sebelum memutuskan untuk melakukan transaksi melalui gestur yang telah selesai atau membatalkan.
Composable Fragmen Navigasi
- Menambahkan artefak
navigation-fragment-composebaru yang menyertakan alternatifComposableNavHostFragmentuntukNavHostFragmentyang memungkinkan Anda menambahkan tujuan composable ke file XML Navigasi. Setiap tujuancomposableharus dinyatakan sebagai metode@Composablelevel teratas tanpa argumen yang nama lengkapnya digunakan sebagai atributandroid:namedi setiap tujuan. Saat menavigasi ke salah satu tujuan ini, fragmen penampung dibuat untuk menampilkan konten composable.
// 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" />
Perubahan Lainnya
- Navigation Compose kini bergantung pada Compose 1.7.0.
- Navigation kini menyediakan class
CollectionNavType<T>baru, subclass dariNavType<T>untuk argumen berbasis koleksi seperti daftar, array, peta. Semua arrayNavTypedefault (IntArrayType,LongArrayType,FloatArrayType,BoolArrayType, danStringArrayType) kini diwarisi dari class baru ini. NavTypekini memiliki dukungan bawaan untuk Daftar Int, String, Boolean, Float, dan Long.
Versi 2.8.0-rc01
21 Agustus 2024
androidx.navigation:navigation-*:2.8.0-rc01 dirilis. Versi 2.8.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki error navigasi saat meneruskan class Enum tingkat teratas sebagai argumen yang aman untuk jenis. (I0ba76, b/358137294)
- Navigation 2.8 kini berfungsi dengan benar dengan SDK 34 dan tidak akan beralih ke SDK 35 hingga rilis 2.9 bersama dengan library AndroidX lainnya. (b/358798728)
Versi 2.8.0-beta07
7 Agustus 2024
androidx.navigation:navigation-*:2.8.0-beta07 dirilis. Versi 2.8.0-beta07 berisi commit ini.
Masalah Umum
- Karena b/358137294, hanya Enum yang di-nesting dalam class lain yang didukung secara langsung. Enum tingkat teratas akan didukung dalam rilis berikutnya.
Perbaikan Bug
- Saat bernavigasi ke tujuan duplikat atau bersama, navigasi akan memprioritaskan tujuan yang paling cocok dan terdekat dari lokasi saat ini dalam grafik. (Ic89a4, b/352006850)
- Navigasi di safe args kini telah menambahkan
NavType.EnumTypebaru. Artinya, jenisEnumtidak lagi memerlukanNavTypekustom. Perhatikan bahwaEnum’sSerialNameharus menjadi nama yang sepenuhnya memenuhi syarat secara default. (I66d22, b/346475493) - Navigasi di safe args telah menambahkan dukungan bawaan untuk jenis argumen yang dapat bernilai null, termasuk
Int?,Long?,Float?,Boolean?, danEnum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) startDestinationNavGraphkini akan menggunakan nilai argumen default jika rutestartDestinationyang diteruskan keNavGraphsama persis denganstartDestination.route. (I13762, b/354046047)
Versi 2.8.0-beta06
24 Juli 2024
androidx.navigation:navigation-*:2.8.0-beta06 dirilis. Versi 2.8.0-beta06 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan pemeriksaan lint
WrongStartDestinationTypetidak memeriksa objek Companion pada jenis class yang diteruskan, sehingga menyebabkan lint gagal mendeteksi error. (I92b09)
Versi 2.8.0-beta05
10 Juli 2024
androidx.navigation:navigation-*:2.8.0-beta05 dirilis. Versi 2.8.0-beta05 berisi commit ini.
Perbaikan Bug
- Memperbaiki error navigasi
singleTopsaatNavGraphsbertingkat berbagi rutestartDestinationyang sama. (I17b94, b/294408596)
Versi 2.8.0-beta04
26 Juni 2024
androidx.navigation:navigation-*:2.8.0-beta04 dirilis. Versi 2.8.0-beta04 berisi commit ini.
Perbaikan Bug
- Navigation kini mendukung navigasi dengan string kosong dalam argumen jalur. (Ic5dbd, b/339481310)
- Meningkatkan pesan error untuk serializer kustom yang dideklarasikan langsung di kolom class melalui
@Serializable(with =...)untuk mengklarifikasi bahwa fitur ini saat ini tidak didukung. (I052b0, b/341319151) - API pengujian
SavedStateHandleFactorykini dapat digunakan dalam pengujian non-Android, tetapi akan memerlukan Robolectric untuk mendukung parsing argumen dengan Bundle. (I76cdc, b/340966212) - Memperbaiki error saat memulihkan status saat melanjutkan aplikasi setelah proses dihentikan dengan menggunakan Navigasi yang Aman untuk Jenis di Compose. (Ia8f38, b/341801005)
- Memperbaiki masalah di Navigation Compose saat setelah membatalkan Gestur Kembali Prediktif,
NavBackStackEntryyang dikunjungi pengguna tidak pernah kembali ke Status Siklus ProsesRESUMED. Hal ini juga memastikan tujuan yang kembali dianimasikan dengan benar, bukan langsung muncul setelah menggeser. (I97a0c, b/346608857) - Saat menggunakan Kembali prediktif dengan Navigation Compose, tujuan yang dimunculkan kini akan memiliki urutan z yang tepat, yang menganimasikan dengan benar di atas tujuan yang masuk. (I2077b, b/345993681)
Versi 2.8.0-beta03
12 Juni 2024
androidx.navigation:navigation-*:2.8.0-beta03 dirilis. Versi 2.8.0-beta03 berisi commit ini.
Perubahan API
CollectionNavTypememiliki metodeemptyCollection()abstrak baru. Ganti metode ini untuk menangani koleksi kosong yang diteruskan sebagai argumen. (Ie4d84, b/341723133)
Perbaikan Bug
- Menambahkan dokumentasi tentang
NavType.serializeAsValuedanserializeAsValuesuntuk menekankan bahwa output akhir harus dienkode Uri. (Ida6bd, b/344943214) - Memperbaiki error saat memanggil
toRoute<T>dengan argumenCollectionNavTypenull. Saat menavigasi denganCollectionNavTypenull, argumen output akan menjadi nilai default yang dideklarasikan di class Serializable Anda, atau nilai yang ditampilkan dariemptyCollection()jika tidak ada nilai default. (I84158, Id630f, b/342672856)
Versi 2.8.0-beta02
29 Mei 2024
androidx.navigation:navigation-*:2.8.0-beta02 dirilis. Versi 2.8.0-beta02 berisi commit ini.
Perbaikan Bug
- Memperbaiki error
ClassCastExceptionsaat menggunakanNavBackStackEntry.toRoutedenganNavTypekustom yang dapat bernilai null. (I1c29b, b/342239473) - Memperbaiki masalah pemulihan status back stack Navigation yang disebabkan saat mencoba memulihkan entri back stack yang tidak dapat dijangkau melalui ID dari tujuan saat ini. Karena rute didukung oleh ID, tujuan yang dibuat dengan rute juga terpengaruh. Hal ini juga memperbaiki error yang disebabkan oleh panggilan
clearBackStack()yang memiliki masalah pokok yang sama. (I423c3, b/339908057)
Versi 2.8.0-beta01
14 Mei 2024
androidx.navigation:navigation-*:2.8.0-beta01 dirilis. Versi 2.8.0-beta01 berisi commit ini.
Perubahan API
SavedStateHandle.toRoute()kini menggunakan parametertypeMapuntuk jenis argumen kustom. (Ie39fb, b/339026523)- Menambahkan API pengujian ke
navigation-testinguntuk membuatSavedStateHandledari objek Kotlin yang Dapat Diserialisasi. (Id4867, b/339080702)
Perbaikan Bug
- Dokumen parameter yang tidak ada untuk fungsi Navigation Kotlin DSL telah ditambahkan. (I26a36)
Versi 2.8.0-alpha08
1 Mei 2024
androidx.navigation:navigation-*:2.8.0-alpha08 dirilis. Versi 2.8.0-alpha08 berisi commit ini.
Safe Args di Navigation Compose
- Pekerjaan untuk mendukung keamanan jenis waktu kompilasi untuk Navigation Compose dan pengguna Navigation Kotlin DSL berdasarkan Kotlin Serialization telah selesai dan API yang sebelumnya bersifat eksperimental kini stabil. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Fungsi ini menggunakan Serialisasi Kotlin untuk memungkinkan Anda menentukan tujuan dalam grafik navigasi melalui objek dan class data yang aman untuk jenis:
// 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)
}
}
Lihat postingan blog Navigation Compose memenuhi Keamanan Jenis untuk mengetahui informasi selengkapnya.
Fitur Baru
- Artefak
navigation-fragment-composekini menyediakan lokal komposisiLocalFragmentuntuk metode composable dalamComposableFragment. (If35e5) NavTypekini memiliki dukungan bawaan untuk Daftar Int, String, Boolean, Float, dan Long. (I4b6dd, Ia914c, b/188693139)
Versi 2.8.0-alpha07
17 April 2024
androidx.navigation:navigation-*:2.8.0-alpha07 dirilis. Versi 2.8.0-alpha07 berisi commit ini.
Fitur Baru
Menambahkan artefak
navigation-fragment-composebaru yang menyertakan alternatifComposableNavHostFragmentuntukNavHostFragmentyang memungkinkan Anda menambahkan tujuancomposableke file XML Navigasi. Setiap tujuancomposableharus dinyatakan sebagai metode@Composablelevel teratas tanpa argumen yang nama lengkapnya digunakan sebagai atributandroid:namedi setiap tujuan. Saat menavigasi ke salah satu tujuan ini, fragmen penampung dibuat untuk menampilkan konten composable. (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" />
Perubahan API
- Dukungan untuk Safe Args di Navigation Compose menggunakan pendekatan berdasarkan Kotlin Serialization dilanjutkan. API ini belum selesai dan ditandai dengan anotasi
ExperimentalSafeArgsApi. Anotasi ini akan dihapus saat seluruh permukaan API selesai dalam rilis mendatang. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Versi 2.8.0-alpha06
3 April 2024
androidx.navigation:navigation-*:2.8.0-alpha06 dirilis. Versi 2.8.0-alpha06 berisi commit ini.
Perubahan API
- Dukungan untuk Safe Args di Navigation Compose menggunakan pendekatan berdasarkan Kotlin Serialization telah dimulai. API ini belum selesai dan ditandai dengan anotasi
ExperimentalSafeArgsApi. Anotasi ini akan dihapus saat seluruh permukaan API selesai dalam rilis mendatang. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Perbaikan Bug
NavHostkini menggunakanAlignment.TopStartsebagai argumen contentAlignment default. Hal ini menyelaraskannya dengan default untukAnimatedContentdan memperbaiki beberapa instance skala yang tidak terduga dari transisi tengah. (I09e72, b/330111602)- Saat menggeser gestur kembali prediktif sambil menggunakan Navigation Compose,
NavHostkini akan menyelesaikan transisi kustom dengan benar, bukan langsung mengakhirinya. (I99017, b/327292110)
Versi 2.8.0-alpha05
20 Maret 2024
androidx.navigation:navigation-*:2.8.0-alpha05 dirilis. Versi 2.8.0-alpha05 berisi commit ini.
Fitur Baru
- Sekarang Anda dapat meneruskan argumen ke
startDestinationNavGraphsecara langsung di rutestartDestinationtanpa mengandalkandefaultValue. Hal ini juga berlaku untukNavGraphstartDestinationsbertingkat. (I0e0b5, b/109505019, b/188693139)
Perubahan API
- Menambahkan class
CollectionNavType<T>abstrak baru, subkelasNavType<T>untuk argumen berbasis koleksi seperti daftar, array, peta. (Ic6d63, b/188693139) - Semua array
NavTypedefault (IntArrayType,LongArrayType,FloatArrayType,BoolArrayType, danStringArrayType) kini berjenisCollectionNavType(Idcf79, b/188693139) NavTypekini menyediakan APIvalueEqualsterbuka baru yang menentukan apakah dua nilai dengan jenis yang sama sama dengan satu sama lain. (I6cb97, b/327229511)
Perbaikan Bug
- Parameter kueri di deep link kini memungkinkan nilai dalam bentuk tanda kurung kurawal di sekitar nama argumen (yaitu
{argName}) sebagai nilai yang valid untukNavTypesberbasis string. Hal ini memperbaiki masalah saat nilai tersebut akan dianggap tidak valid (atau tidak adanya nilai) untuk semua jenis. (I18302, b/327274038) - Fungsi
NavControlleryang mendukung rute sepertinavigateataupopBackStackkini dapat mencocokkan rute yang diisi dengan argumen ArrayNavTypesdengan benar. (Iea805, b/327229511)
Versi 2.8.0-alpha04
6 Maret 2024
androidx.navigation:navigation-*:2.8.0-alpha04 dirilis. Versi 2.8.0-alpha04 berisi commit ini.
Fitur Baru
- Anda kini dapat menentukan
SizeTranformuntuk transisi di Navigation Compose dengan menentukannya sebagai bagian dari inisialisasi untuk fungsicomposabledan/ataunavigation. (I91062, b/296912651)
Perbaikan Bug
- Memperbaiki masalah saat
NavHostdi Navigation Compose gagal menampilkan transisi dengan benar saat menggunakan Kembali Sistem tanpa gestur. (Iceeae, b/325998468)
Versi 2.8.0-alpha03
21 Februari 2024
androidx.navigation:navigation-*:2.8.0-alpha03 dirilis. Versi 2.8.0-alpha03 berisi commit ini.
Perubahan API
NavBackStackEntry.savedStateHandlekini ditandai sebagai@MainThreadkarena menggunakan kode yang harus berada di thread utama. (Ibb988, b/299523245)
Perbaikan Bug
- Memperbaiki masalah di Navigation yang menyebabkan ViewModel
NavGraphmenjadiDESTROYEDterlalu cepat karenaViewModelentri terkait tidak menjadi bagian dari status tersimpan. (Ib6bb7, b/317581849)
Pembaruan Dependensi
- Navigation Compose sekarang bergantung pada Compose 1.7.0-alpha03.
Versi 2.8.0-alpha02
7 Februari 2024
androidx.navigation:navigation-*:2.8.0-alpha02 dirilis. Versi 2.8.0-alpha02 berisi commit ini.
Fitur Baru
- Navigation Compose kini menyediakan dukungan untuk Kembali dalam aplikasi prediktif melalui API
SeekableTransitionStatebaru dari compose-animation. Dengan begitu, Anda dapat menggunakan gestur kembali untuk melihat tujuan sebelumnya dengan Transisi kustom sebelum memutuskan untuk melakukan transaksi melalui gestur yang telah selesai atau membatalkan. (I8b8e9)
Versi 2.8.0-alpha01
24 Januari 2024
androidx.navigation:navigation-*:2.8.0-alpha01 dirilis. Versi 2.8.0-alpha01 berisi commit berikut.
Perbaikan Bug
- Memperbaiki kebocoran
BackStackStatesaat beberapa panggilansaveStatedi tujuan akan menyebabkan beberapa status disimpan, tetapi hanya status pertama yang dapat dipulihkan. (I598b0, b/309559751) - Memperbaiki masalah saat argumen non-String tidak ditampilkan dengan benar saat menggunakan helper
NavigationUIuntuk mengisi judul panel aplikasi. (#636, b/316676794)
Pembaruan Dependensi
- Navigation Compose kini bergantung pada Compose
1.7.0-alpha01yang memperbaiki masalah yang dapat menyebabkan animasi skala yang tidak terduga. (b/297258205)
Kontribusi Eksternal
- Terima kasih SimonMarquis karena telah memperbaiki masalah tampilan untuk argumen non-String saat menggunakan helper
NavigationUIuntuk mengisi judul panel aplikasi.
Versi 2.7.7
Versi 2.7.7
7 Februari 2024
androidx.navigation:navigation-*:2.7.7 dirilis. Versi 2.7.7 berisi commit ini.
Perbaikan Bug
- Di-backport dari Navigation
2.8.0-alpha01: Memperbaiki kebocoranBackStackStatesaat beberapa panggilansaveState()pada satuNavBackStackEntryakan menyebabkan beberapa status disimpan, tetapi hanya status tersimpan pertama yang dapat dipulihkan. (I598b0, b/309559751) - Di-backport dari Navigation
2.8.0-alpha01: Memperbaiki masalah saat argumen non-String tidak ditampilkan dengan benar saat menggunakan helperNavigationUIuntuk mengisi judul panel aplikasi. (#636, b/316676794)
Kontribusi Eksternal
- Terima kasih SimonMarquis karena telah memperbaiki masalah tampilan untuk argumen non-String saat menggunakan helper
NavigationUIuntuk mengisi judul panel aplikasi.
Versi 2.7.6
Versi 2.7.6
13 Desember 2023
androidx.navigation:navigation-*:2.7.6 dirilis. Versi 2.7.6 berisi commit ini.
Perbaikan Bug
- Fungsi
NavGraphequals()kini mempertimbangkan node grafik lain dengan benar, bukan hanya grafik yang memanggil. Hal ini akan memastikan bahwa grafik yang memiliki node dengan ID berbeda tidak lagi dianggap sama (I401cb, b/311414915)
Versi 2.7.5
Versi 2.7.5
1 November 2023
androidx.navigation:navigation-*:2.7.5 dirilis. Versi 2.7.5 berisi commit ini.
Peningkatan Performa
- Meningkatkan performa (baik dari segi waktu maupun jumlah alokasi) dalam membandingkan dua grafik. Artinya, panggilan seperti
setGraphyang secara internal membandingkan grafik baru dengan grafik yang ada jauh lebih cepat dan menghasilkan lebih sedikit frame yang dilewati. Terima kasih kepada Michał Z atas analisis menyeluruh yang menghasilkan peningkatan ini. (I6ad62) NavHostkini akan merender tujuan awal pada proses komposisi pertama, bukan harus menunggu proses kedua untuk membaca status yang diperbarui. (I439a7, b/304852206)
Perbaikan Bug
- Memperbaiki masalah saat data sebelumnya akan dimunculkan jika Anda memanggil
setGraphlebih dari sekali dengan grafik yang sama persis hanya jika ada tujuan dalam grafik yang berisi tindakan yang menautkan dua tujuan. (Ieaed7) - Dialog yang dibuka dan ditutup secara berurutan tidak akan lagi bocor ke dalam daftar
NavController.visibleEntries. (I67586, b/287969970) - Saat entri dikeluarkan dari stack, diikuti dengan perubahan konfigurasi,
ViewModelentri kini akan dibersihkan dengan benar jikasaveStatebernilai salah (false). (Idf242, b/298164648) - Memperbaiki masalah yang menyebabkan
NavControllerdapat menangani deep link yang sama lebih dari sekali jika stack kembali benar-benar kosong sebelum perubahan konfigurasi atau panggilan kesetGraphhanya saat Intent yang masuk memiliki setelan flagFLAG_ACTIVITY_NEW_TASK. (I73c7f)
Update Dependensi
- Navigasi dengan Fragmen kini bergantung pada Fragment 1.6.2, yang memperbaiki masalah saat instance
ViewModeldari fragmen bertingkat tidak dihapus saat memanggilclearBackStack.
Versi 2.7.4
Versi 2.7.4
4 Oktober 2023
androidx.navigation:navigation-*:2.7.4 dirilis. Versi 2.7.4 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk
popUpToagar menggunakan rute dengan argumen untuk memungkinkan kembali ke entri tertentu yang menggunakan argumen persis tersebut, yang cocok dengan dukungan yang ditemukan dipopBackStack. (I731f4, b/299255572)
Perbaikan Bug
- Memperbaiki masalah saat menghentikan navigasi dengan navigasi lain menggunakan
popUpToakan menyebabkanFragmentNavigatorerror. (I3c848, b/301887045) - Memperbaiki masalah saat tombol kembali sistem menyebabkan
currentDestinationtidak diupdate dengan benar agar sesuai dengan Fragment yang ditampilkan. (Id0d6c, b/289877514) - Siklus proses
DialogFragmentkini akan berpindah dengan benar ke statusRESUMEDsaat dialog di atasnya ditutup. (I88f0d, b/301811387)
Versi 2.7.3
Versi 2.7.3
20 September 2023
androidx.navigation:navigation-*:2.7.3 dirilis. Versi 2.7.3 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah di Navigation dengan Fragment yang menyebabkan daftar
visibleEntriesberisi entri yang salah. (I5caa9, b/288520638) - Memperbaiki masalah yang menyebabkan tujuan Floating Window (yaitu
Dialogs,Bottomsheets, dll.) tidak pernah mendapatkan callback Siklus ProsesRESUMED. (I3b866, b/287505132)
Versi 2.7.2
Versi 2.7.2
6 September 2023
androidx.navigation:navigation-*:2.7.2 dirilis. Versi 2.7.2 berisi commit ini.
Perbaikan Bug
- Navigation kini bergantung pada Lifecycle
2.6.2, yang memperbaiki interaksi antararememberSaveabledanNavHostNavigation Compose yang akan menyebabkan statusrememberSaveabletujuan dan instanceSavedStateHandleyang dimilikiViewModeltidak dipulihkan dengan benar setelah proses dihentikan dan dibuat ulang. (b/298059596, b/289436035) - Memperbaiki masalah saat menampilkan beberapa dialog di Navigation Compose secara bersamaan, di mana dialog yang sebagian tertutup (misalnya, bukan dialog teratas) akan berada dalam status Siklus Proses
CREATED, bukan statusSTARTED. (aosp/2728520, b/289257213) - Memperbaiki masalah saat menampilkan beberapa dialog di Navigation Compose secara bersamaan saat menutup dialog teratas akan menyebabkan dialog teratas baru tetap berada di status Siklus Proses
STARTED, bukan berpindah dengan benar keRESUMED. (aosp/2629401, b/286371387) - Navigation Safe Args tidak lagi membuat instance tugasnya dengan segera jika tidak benar-benar dijalankan. (I0e385, b/260322841)
Pembaruan Dependensi
- Navigation Compose sekarang bergantung pada Compose 1.5.1.
Versi 2.7.1
Versi 2.7.1
23 Agustus 2023
androidx.navigation:navigation-*:2.7.1 dirilis. Versi 2.7.1 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah di Navigation with Compose saat menggunakan
Scaffold, yang memungkinkan terjadinya error karena mencoba mengaksesLifecycle.State.DESTROYEDViewModel. (I1dc11, b/268422136)
Versi 2.7.0
Versi 2.7.0
9 Agustus 2023
androidx.navigation:navigation-*:2.7.0 dirilis. Versi 2.7.0 berisi commit ini.
Perubahan penting sejak 2.6.0
Animasi dari Accompanist
Setelah AnimatedContent stabil, kita dapat memindahkan kode dari Accompanist Navigation Animation kembali ke Navigation Compose itu sendiri.
Artinya, semua dukungan untuk menyetel transisi kustom yang ada di AnimatedNavHost didukung langsung di NavHost.
Tidak ada perubahan tambahan yang akan dilakukan pada Animasi Navigasi Accompanist dan kami akan segera menghentikan penggunaannya secara resmi, beserta panduan tentang cara bermigrasi kembali ke Navigation Compose itu sendiri, tetapi akan menjadi kebalikan dari panduan migrasi tanpa memerlukan perubahan API lain jika Anda sudah menggunakan Accompanist alfa terbaru (0.31.2-alpha). (b/197140101)
Perbaikan Bug
- NavHost di Navigation Compose kini dengan benar mengintersep panggilan kembali sistem meskipun setelah Aktivitas DIHENTIKAN dan DILANJUTKAN. (Icb6de, b/279118447)
Update Dependensi
- Navigation kini bergantung pada Compose
1.5.0dari1.1.0.
Versi 2.7.0-rc01
26 Juli 2023
androidx.navigation:navigation-*:2.7.0-rc01 dirilis. Versi 2.7.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat lambda
EnterTransitiondanExitTransitionyang dibuat sebagai bagian dariNavHostberpotensi tetap berada dalam memori meskipun setelahNavHostdihapus dari komposisi. (I893d0)
Masalah Umum
- Ada masalah dari Navigation 2.6.x yang saat menavigasi dengan popUpTo dapat menyebabkan
IllegalArgumentException. Pengecualian ini dapat dihindari dengan menyusun ulang grafik, serupa dengan saran yang diberikan di sini. (b/287133013)
Versi 2.7.0-beta02
28 Juni 2023
androidx.navigation:navigation-*:2.7.0-beta02 dirilis. Versi 2.7.0-beta02 berisi commit ini.
Perbaikan Bug
- Navigation Compose kini memiliki urutan z yang tepat untuk transisi kustom yang menggunakan navigasi dengan opsi
popUpTo.(/Ib1c3a, b/285153947)
Versi 2.7.0-beta01
7 Juni 2023
androidx.navigation:navigation-*:2.7.0-beta01 dirilis. Versi 2.7.0-beta01 berisi commit ini.
Perbaikan Bug
NavHostdi Navigation Compose kini mengintersep panggilan kembali sistem dengan benar meskipun setelahActivitydi-STOPPEDdanRESUMED. (Icb6de, b/279118447)
Versi 2.7.0-alpha01
24 Mei 2023
androidx.navigation:navigation-*:2.7.0-alpha01 dirilis. Versi 2.7.0-alpha01 berisi commit ini.
Animasi dari Accompanist
Setelah AnimatedContent stabil, kita dapat memindahkan kode dari Accompanist Navigation Animation kembali ke Navigation Compose itu sendiri.
Artinya, semua dukungan untuk menyetel transisi kustom yang ada di AnimatedNavHost didukung langsung di NavHost.
Tidak ada perubahan tambahan yang akan dilakukan pada Animasi Navigasi Accompanist dan kami akan segera menghentikan penggunaannya secara resmi, beserta panduan tentang cara bermigrasi kembali ke Navigation Compose itu sendiri, tetapi akan menjadi kebalikan dari panduan migrasi tanpa memerlukan perubahan API lain jika Anda sudah menggunakan Accompanist alfa terbaru (0.31.2-alpha). (b/197140101)
Perbaikan Bug
- Dari Navigation
2.6.0-rc02: Memperbaiki masalah pada Navigation di Fragment saat bernavigasi denganpopUpTodan mengeluarkan fragment dari data sebelumnya tanpa membuat ulang tampilannya akan menyebabkan tombol kembali sistem berhenti berfungsi. (Ieb8d4, b/281726455)
Update Dependensi
- Navigation kini bergantung pada Compose
1.5.0-beta01.
Versi 2.6.0
Versi 2.6.0
7 Juni 2023
androidx.navigation:navigation-*:2.6.0 dirilis. Versi 2.6.0 berisi commit ini.
Perubahan penting pada Navigation sejak versi 2.5.0
NavBackStackEntryargumentsdanargumentsyang diteruskan keOnDestinationChangedListenersekarang hanya merupakan salinan argumen yang tidak dapat diubah yang dibuat saat Anda membuka tujuan. Artinya, setiap perubahan yang dilakukan pada Paket tersebut tidak akan diterapkan dalam akses berikutnya ke instanceargumentsatauOnDestinationChangedListenerlainnya.NavDeepLinkkini mendukung nilai default untuk array, yang memungkinkan dukungan bagi parameter kueri berulang yang akan dipetakan ke jenis array argumen.NavTypekini juga menyertakan metode default yang dapat diganti untuk menggabungkan dua nilai yang diuraikan.- Subclass kustom
NavTypekini dapat menggantiserializeAsValueuntuk melakukan serialisasi nilai ke dalam String, yang memungkinkan serialisasi dan deserialisasi (melaluiparseValue) dienkapsulasi sepenuhnya dalam classNavType.StringTypekini mengganti metode ini untuk memanggilUri.encodepadaStringtertentu.
Perubahan penting pada Navigation Compose sejak versi 2.5.0
- Saat melihat pratinjau composable dengan
NavHost, composable tersebut kini akan menampilkanstartDestinationNavGraph secara default. NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)kini mendukung rute dengan argumen yang terisi sebagian atau sepenuhnya. Perhatikan bahwa argumen harus sama persis dengan argumen entri.- Mencoba membuat
NavDeepLinkkosong menggunakannavDeepLinkKotlin DSL kini akan menghasilkan peringatan lint yang menunjukkan bahwa deep link memerlukan uri, action, dan/atau mimetype yang valid.
Perubahan penting pada Navigasi dengan Fragmen sejak versi 2.5.0
NavHostFragmenttidak lagi mengintersep tombol kembali sistem itu sendiri. Hal ini memungkinkanFragmentManageryang mendasarinya menangani kembali sistem. Hal ini memungkinkan Fragment1.7.0-alpha01dan yang lebih tinggi untuk menyediakan animasi Kembali Prediktif Dalam Aplikasi di perangkat Android U.- Saat menggunakan Navigation dengan Fragment, upaya untuk melakukan
FragmentTransactionsecara manual yang menambahkan fragmen ke data sebelumnyaFragmentManagerkini akan memunculkanIllegalArgumentException. Anda harus selalu menambahkan fragmen melaluinavigate()API. - Saat menggunakan string yang sama persis dengan
${applicationId}sebagai placeholder di atributapp:datadanapp:dataPatterndalam elemen aktivitas file XML navigasi, placeholder akan otomatis diisi denganpackageNamekonteks setelah inflasi. FragmentNavigatorkini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries. Hal ini berartiNavBackStackEntryLifecyclekini akan menunggu penyelesaian efek khusus fragmen masuk dan keluar sebelum memindahkanLifecycle.Stateakhir.DialogFragmentNavigatorkini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries. Hal ini berartiNavBackStackEntryLifecyclekini akan menungguDialogFragmentLifecycledipindahkan keDESTROYEDsebelum beralih keDESTROYEDitu sendiri.NavHostFragmentkini memungkinkan Anda mengambilNavControllersegera setelahNavHostFragmentdilampirkan keFragmentManager, bukan hanya setelahonCreate().- Dukungan Navigasi untuk Modul Fitur Dinamis kini bergantung pada Library Play Feature Delivery yang terperinci.
- Safe Args Navigasi kini bergantung pada Plugin Android Gradle versi 7.3.0. Artinya, Safe Args kini hanya kompatibel dengan versi 7.3.0+.
Perubahan penting pada NavigationUI sejak versi 2.5.0
- Saat meneruskan ID grafik navigasi ke
AppBarConfiguration(seperti melaluiMenu),NavigationUIsekarang hanya mempertimbangkan tujuan awal grafik navigasi tersebut sebagai tujuan tingkat atas, bukan salah menandai setiap tujuan dalam grafik sebagai tujuan tingkat atas. Perilaku meneruskan ID setiap tujuan tidak berubah. Fungsi yang sama ini tersedia untuk kode Anda sendiri melalui fungsiisTopLevelDestinationbaru padaAppBarConfiguration. - Integrasi
setupWithNavControllerdiNavigationUIagar berfungsi dengan panel aplikasi atas kini akan mengurai nilaiR.stringuntuk argumenReferenceTypeyang ditemukan diandroid:labelke dalam nilai String-nya, bukan menghasilkan output bilangan bulat resource yang dibuat otomatis. NavigationUIkini menyediakan log jika gagal menavigasi melaluiMenuItemyang dipilih.
Versi 2.6.0-rc02
24 Mei 2023
androidx.navigation:navigation-*:2.6.0-rc02 dirilis. Versi 2.6.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah pada Navigation in Fragments saat bernavigasi dengan
popUpTodan memunculkan fragmen dari data sebelumnya tanpa membuat ulang tampilannya akan menyebabkan tombol kembali sistem berhenti berfungsi. (Ieb8d4, b/281726455)
Versi 2.6.0-rc01
10 Mei 2023
androidx.navigation:navigation-*:2.6.0-rc01 dirilis. Versi 2.6.0-rc01 berisi commit berikut ini.
Perbaikan Bug
- Memperbaiki masalah di Navigation dengan fragmen saat menghapus fragmen melalui navigasi dengan
popUpTodi callback siklus prosesonResume()akan menyebabkanIllegalStateException. (I21884, b/279644470)
Versi 2.6.0-beta01
19 April 2023
androidx.navigation:navigation-*:2.6.0-beta01 dirilis. Versi 2.6.0-beta01 berisi commit ini.
Fitur Baru
NavBackStackEntrykini menyediakan implementasitoStringkustom. (Iff00b)
Perbaikan Bug
- Saat menggunakan Navigation dengan Fragment, upaya untuk melakukan
FragmentTransactionsecara manual yang menambahkan fragmen ke data sebelumnyaFragmentManagerkini akan memunculkanIllegalArgumentException. Anda harus selalu menambahkan fragmen melaluinavigate()API. (I6d38e) - Jika ada
navigateyang menambahkan entri danpopBackStackyang menghapusnya dalam frame yang sama, entri teratas yang dihasilkan pada data sebelumnya kini akan secara konsisten kembali keRESUMEDLifecycle.State. (Id8067, b/276495952)
Versi 2.6.0-alpha09
5 April 2023
androidx.navigation:navigation-*:2.6.0-alpha09 dirilis. Versi 2.6.0-alpha09 berisi commit ini.
Perbaikan Bug
- Memperbaiki pemeriksaan untuk rute yang tidak valid sehingga jika
NavDestinationberisiNavArgumentyang tidak dapat bernilai null, rute tujuan ini harus berisi placeholder untuk argumen yang diberi nama sama denganNavArgumentyang tidak dapat bernilai null. (Ic62bf, b/274697949) - Navigasi deep link berdasarkan
Action/MimeTypekini akan gagal jika operasi navigasi tidak memilikiNavArgumentyang tidak dapat bernilai null dan diperlukan olehNavDestinationyang cocok denganAction/MimeType. (Ibfa17, b/271777424) - Saat menetapkan grafik dengan rute dan tujuan yang sama seperti grafik sebelumnya,
NavControllerkini akan mengganti node grafik saat ini dan tujuan tumpukan belakangnya dengan instance baru dengan benar. Perubahan ini memperbaiki error saat menggunakanonLaunchSingleToptanpa menyimpan status di Navigation Compose. Hal ini juga memperbaiki error saat menavigasi ke tujuan yang terkait dengan grafik root membangun dan salah menempatkan data sebelumnya. (I5bc58, b/275258161, b/275407804)
Versi 2.6.0-alpha08
22 Maret 2023
androidx.navigation:navigation-*:2.6.0-alpha08 dirilis. Versi 2.6.0-alpha08 berisi commit ini.
Fitur Baru
NavHostFragmentkini memungkinkan Anda mengambilNavControllersegera setelahNavHostFragmentdilampirkan keFragmentManager, bukan hanya setelahonCreate(). (Ic6382, b/220186282)
Perbaikan Bug
- Memperbaiki
NullPointerExceptionsaat memunculkan grafik bertingkat yang menyertakan argumen yang tidak boleh null. (6b3581, b/249988437) - Saat menggunakan tombol kembali sistem setelah melakukan navigasi dengan
popUpTo, statusNavControllerakan muncul ke entri yang benar. (I3a8ec, b/270447657) FragmentNavigatorkini akan memunculkan entri dengan benar saat data sebelumnya dimunculkan melalui kembali sistem ataupopBackStack()dan apakah transaksi menggunakan efek untuk fragmen atau tidak. (I81bdf)- Menambahkan fragmen ke
FragmentManagerFragmentNavigatortanpa menggunakan navigasi tidak akan lagi menyebabkan error. (b17204, b/274167493)
Update Dependensi
- Navigation kini bergantung pada Lifecycle
2.6.1. (586fe7) - Navigation kini bergantung pada SavedState
1.2.1. (078e4e) - Navigation kini bergantung pada ProfileInstaller
1.3.0. (512f0c)
Versi 2.6.0-alpha07
8 Maret 2023
androidx.navigation:navigation-*:2.6.0-alpha07 dirilis. Versi 2.6.0-alpha07 berisi commit ini.
Perbaikan Bug
- Varian API
getBackStackEntry,popBackStack,clearBackStackyang menggunakan rute kini menggunakan pola rute dengan argumen yang dapat bernilai null dan parameter kueri yang dapat bernilai null (I22294, b/269302500) - Memperbaiki masalah saat memanggil
clearBackStack()dariNavControllertidak akan menghapus status tersimpan di pengelola fragmen yang terkait dengan data sebelumnya yang dihapus. (Ic1cce, b/271190202) - Memperbaiki regresi di 2.6.0-alpha06 yang menyebabkan
MenuItemyang salah diBottomNavigationViewdisorot saat menggunakan Kembali sistem di antara tab. (I634f6, b/270447657) - Memperbaiki regresi di 2.6.0-alpha06 yang menyebabkan
NavBackStackEntrytidak dipindahkan ke status RESUMED saat menggunakanAnimation. (Ib3589, b/269646882)
Versi 2.6.0-alpha06
22 Februari 2023
androidx.navigation:navigation-*:2.6.0-alpha06 dirilis. Versi 2.6.0-alpha06 berisi commit ini.
Fitur baru
- Saat melihat pratinjau composable dengan
NavHost, composable tersebut kini akan menampilkanstartDestinationNavGraph secara default. (I2b89f)
Perubahan API
- Semua overload
NavControllernavigatesekarang dianotasi dengan@MainThreaduntuk memastikan overload tersebut dipanggil pada thread utama. (I2c0b0, b/263427111)
Perbaikan Bug
- Memperbaiki error saat mencoba menavigasi menggunakan Navigasi Fragmen Dinamis. (I3ee29, b/268360479)
- Memperbaiki bug yang menyebabkan menavigasi ke fragmen lain melalui tombol kembali sistem tidak memperbarui panel bawah ke item yang dipilih yang benar (If559f, b/269044426)
Masalah Umum
- Saat menggunakan Navigation dengan Fragmen, Siklus Proses
NavBackStackEntrygagal mencapaiRESUMEDsaat menggunakanAnimationAPI. (b/269646882) - Saat menggunakan Navigation dengan Fragment, dan melakukan navigasi dengan
BottomNavigation, jika Anda mencoba memulihkan data sebelumnya dengan beberapa entri,BottomMenuItemtidak diperbarui dengan benar. (b/270447657) - Saat menggunakan Navigation dengan Fragment, setelah memulihkan status,
NavBackStackEntryLifecycletidak mendapatkanDESTROYEDsaat fragmennyaDESTROYED. (b/270610768)
Versi 2.6.0-alpha05
8 Februari 2023
androidx.navigation:navigation-*:2.6.0-alpha05 dirilis. Versi 2.6.0-alpha05 berisi commit ini.
Fitur Baru
NavController.popBackStack(route),NavController.getBackStackEntry(route),NavController.clearBackStack(route)kini mendukung rute dengan argumen yang terisi sebagian atau sepenuhnya. Perhatikan bahwa argumen harus sama persis dengan argumen entri. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigatorkini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries. Hal ini berartiNavBackStackEntryLifecyclekini akan menunggu penyelesaian efek khusus fragmen masuk dan keluar sebelum memindahkanLifecycle.Stateakhir. (I3cb19, b/238686802)DialogFragmentNavigatorkini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries. Hal ini berartiNavBackStackEntryLifecyclekini akan menungguDialogFragmentLifecycledipindahkan keDESTROYEDsebelum beralih keDESTROYEDitu sendiri. (I53ee5, b/261213893)
Perubahan API
NavigatorStatekini menyediakanprepareForTransitionAPI untuk memungkinkanNavigatormemindahkanNavBackStackEntrieskeLifecycle.Statemenengah. (I42c21, b/238686802)- Anda kini dapat mengakses data sebelumnya yang terkait dengan
NavGraphNavigatoratauComposeNavigatormelalui propertibackstack.ComposeNavigatorkini juga menampilkan callbackonTransitionComplete()untuk menandaiNavBackStackEntryyang telah menjalankan navigasi atau operasipopBackStacksebagai selesai. (I02062, I718db, b/257519195)
Perbaikan Bug
- Status navigator kini tidak akan beroperasi saat menggunakan
push/popWithTransitionAPI dan entri sudah ditangani. (Iadbfa, b/261213893) - Saat menggunakan
launchSingleTopdenganNavGraphbertingkat, semua tujuan yang dimulai dari tujuan asli kestartDestinationhanya akan ditambahkan dengan benar ke bagian atas data sebelumnya. (Id4bea, b/253256629) - Navigation kini akan mengganti instance
DialogFragmentdengan benar saat membuka tujuan yang sama dan menyetel flaglaunchSingleTopsebagai benar (true). (I45b5a, b/149572817) - Navigation SafeArgs tidak akan lagi menyebabkan error kompilasi saat menggunakan argumen yang panjangnya tepat 19 karakter. (Id60bc, b/257110095)
Versi 2.6.0-alpha04
9 November 2022
androidx.navigation:navigation-*:2.6.0-alpha04 dirilis. Versi 2.6.0-alpha04 berisi commit ini.
Fitur Baru
- Subclass kustom
NavTypekini dapat menggantiserializeAsValueuntuk melakukan serialisasi nilai ke dalam String, yang memungkinkan serialisasi dan deserialisasi (melaluiparseValue) dienkapsulasi sepenuhnya dalam classNavType.StringTypekini mengganti metode ini untuk memanggilUri.encodepadaStringtertentu. (Ie5213, b/247637434) NavigationUIkini menyediakan log jika gagal menavigasi melaluiMenuItemyang dipilih. (I2af5a, b/247730357)
Perbaikan Bug
- Deep link navigasi kini diuraikan dengan lambat, bukan pada inisialisasi grafik, yang dapat meningkatkan performa aplikasi saat diluncurkan. (Iab0ab)
- Memperbaiki error yang disebabkan oleh navigasi ke atas setelah deep linking ke tujuan dengan argumen default null. (I51c24, b/243183636)
Pembaruan Dependensi
- Dukungan Navigasi untuk Modul Fitur Dinamis kini bergantung pada Library Play Feature Delivery yang terperinci. (Ib4ddc)
- Safe Args Navigasi kini bergantung pada Plugin Android Gradle versi 7.3.0. Artinya, Safe Args kini hanya kompatibel dengan versi 7.3.0+. (I47e49)
Versi 2.6.0-alpha03
24 Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha03 dirilis. Versi 2.6.0-alpha03 berisi commit ini.
Perbaikan Bug
- Dari Navigation
2.5.3:NavHosttidak lagi menyebabkanNoSuchElementExceptionsaat tidak ada tujuan yang tersedia untuk ditulis olehCrossfade. Metode ini hanya akan melewati komposisi. (Ieb46e, b/253299416) - Dari Navigation
2.5.3: Memperbaiki masalah saat status Compose yang disimpan (misalnya, penggunaanrememberSaveable) tidak dilupakan dan dihapus saat tujuan dikeluarkan dari data sebelumnya. (I64949)
Update Dependensi
- Navigation kini bergantung pada Fragment
1.5.4. (Icd424)
Versi 2.6.0-alpha02
5 Oktober 2022
androidx.navigation:navigation-*:2.6.0-alpha02 dirilis. Versi 2.6.0-alpha02 berisi commit ini.
Perubahan Perilaku
- Saat meneruskan ID grafik navigasi ke
AppBarConfiguration(seperti melaluiMenu),NavigationUIsekarang hanya mempertimbangkan tujuan awal grafik navigasi tersebut sebagai tujuan tingkat atas, bukan salah menandai setiap tujuan dalam grafik sebagai tujuan tingkat atas. Perilaku meneruskan ID setiap tujuan tidak berubah. Fungsi yang sama ini tersedia untuk kode Anda sendiri melalui fungsiisTopLevelDestinationbaru padaAppBarConfiguration. (Ie936e, b/238496771)
Perbaikan Bug
- Komponen
navigation:navigation-fragmentkini bergantung pada Fragment versi1.5.2. (I00ba4) - Item menu yang dipilih tidak akan diperbarui lagi saat menavigasi ke tujuan
FloatingWindowseperti dialog. (I4cde8, b/240308330)
Versi 2.6.0-alpha01
7 September 2022
androidx.navigation:navigation-*:2.6.0-alpha01 dirilis. Versi 2.6.0-alpha01 berisi commit berikut.
Fitur Baru
- Integrasi
setupWithNavControllerdiNavigationUIagar berfungsi dengan panel aplikasi atas kini akan mengurai nilaiR.stringuntuk argumenReferenceTypeyang ditemukan diandroid:labelke dalam nilai String-nya, bukan menghasilkan output bilangan bulat resource yang dibuat otomatis. (I5f803, b/167959935) NavDeepLinkkini mendukung nilai default untuk array, yang memungkinkan dukungan bagi parameter kueri berulang yang akan dipetakan ke jenis array argumen.NavTypekini juga menyertakan metode default yang dapat diganti untuk menggabungkan dua nilai yang diuraikan. (Id68c3, b/209977108)- Saat menggunakan string yang sama persis dengan
${applicationId}sebagai placeholder di atributapp:datadanapp:dataPatterndalam elemen aktivitas file XML navigasi, placeholder akan otomatis diisi denganpackageNamekonteks setelah inflasi. (Iaabde, b/234223561) - Mencoba membuat
NavDeepLinkkosong menggunakannavDeepLinkKotlin DSL kini akan menghasilkan peringatan lint yang menunjukkan bahwa deep link memerlukan uri, action, dan/atau mimetype yang valid. (I08d2f, b/154038883)
Perubahan API
- Menambahkan fungsi ekstensi
NavDestinationbaru untuk mengurai label dinamis dengan argumen dalam bentukandroid:label="{arg}"menjadi String. Mendukung argumenReferenceTypedengan menguraikan nilaiR.stringke dalam nilai String-nya. (I07d89, b/236269380)
Perubahan Perilaku
argumentsNavBackStackEntry danargumentsyang diteruskan keOnDestinationChangedListenersekarang hanya merupakan salinan argumen yang tidak dapat diubah yang dibuat saat Anda membuka tujuan. Artinya, setiap perubahan yang dilakukan pada Paket tersebut tidak akan diterapkan dalam akses berikutnya ke instanceargumentsatauOnDestinationChangedListenerlainnya. (I676f5)
Perbaikan Bug
- Dari Navigation
2.5.2: Dynamic Navigation kini berupaya menginstal tujuan Activity dengan benar dari modul lain sebelum menuju ke sana. (Ia2c16, b/240292838) - Dari Navigation
2.5.2: Navigation kini akan mengganti instance Fragment dengan benar saat membuka tujuan yang sama dan menyetel flaglaunchSingleTopke benar (true). (I5a2f1, b/237374580) - Dari Navigation
2.5.2: MemperbaikiIllegalStateExceptionyang disebabkan oleh navigasi ke grafik bertingkat ganda yang berbagi induk dengan tujuan awal yang baru muncul. (I9f7cb, b/243778589)
Versi 2.5
Versi 2.5.3
24 Oktober 2022
androidx.navigation:navigation-*:2.5.3 dirilis. Versi 2.5.3 berisi commit ini.
Perbaikan Bug
NavHosttidak lagi menyebabkanNoSuchElementExceptionsaat tidak ada tujuan yang tersedia untuk ditulis olehCrossfade. Metode ini hanya akan melewati komposisi. (Ieb46e, b/253299416)- Memperbaiki masalah saat status Compose yang disimpan (misalnya, penggunaan
rememberSaveable) tidak dilupakan dan dihapus saat tujuan dikeluarkan dari data sebelumnya. (I64949)
Versi 2.5.2
7 September 2022
androidx.navigation:navigation-*:2.5.2 dirilis. Versi 2.5.2 berisi commit ini.
Perbaikan Bug
- Dynamic Navigation kini mencoba menginstal tujuan Activity dari modul lain dengan benar sebelum menuju ke sana. (Ia2c16, b/240292838)
- Navigation kini akan mengganti instance Fragment dengan benar saat membuka tujuan yang sama dan menyetel flag
launchSingleTopsebagai benar (true). (I5a2f1, b/237374580) - Memperbaiki
IllegalStateExceptionyang disebabkan oleh navigasi ke grafik bertingkat ganda yang berbagi induk dengan tujuan awal yang baru muncul. (I9f7cb, b/243778589)
Pembaruan Dependensi
2.5.2Navigation kini bergantung pada Fragment1.5.2. (aosp/2178734)
Versi 2.5.1
27 Juli 2022
androidx.navigation:navigation-*:2.5.1 dirilis. Versi 2.5.1 berisi commit ini.
Perbaikan Bug
Navigation Safe Argstidak lagi menyebabkan peringatan penghentian di class yang dihasilkan saat menggunakan jenis argumen kustom yang disimpan diBundle. (Id86ed, b/237725966)
Update Dependensi
- Library Navigation kini bergantung pada Lifecycle
2.5.1. (Ib4451) - Library Navigation kini bergantung pada Activity
1.5.1. (I3efe8) - Library Navigation kini bergantung pada Fragment
1.5.1. (I56177)
Versi 2.5.0
29 Juni 2022
androidx.navigation:navigation-*:2.5.0 dirilis. Versi 2.5.0 berisi commit ini.
Perubahan penting sejak versi 2.4.0
- Integrasi CreationExtras -
Navigationkini memiliki kemampuan untuk menyediakanViewModelProvider.Factorystateless melaluiCreationExtrasLifecycle2.5.0.
Navigation SafeArgs
Navigation Safe Argstelah mengupgrade dependensiAndroid Gradle Pluginuntuk bergantung pada7.0.4, sehingga kompatibilitas untuk versi AGP sebelum7.0akan diturunkan.- Menambahkan dukungan untuk atribut namespace build.gradle yang akan digunakan, bukan applicationId.
Perubahan Lainnya
visibleEntriesAPI tidak lagi bersifat eksperimental dan menyediakan fungsi untuk mengambil semua entri yang tujuannya saat ini terlihat sesuai denganNavController.
Versi 2.5.0-rc02
15 Juni 2022
androidx.navigation:navigation-*:2.5.0-rc02 dirilis. Versi 2.5.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki error yang disebabkan oleh peralihan cepat di antara tujuan bawah saat menggunakan Navigation Compose
NavHost. (I3979a, b/234054916) Navigation SafeArgstidak akan error lagi saat menggunakanapplicationIdSuffixdan namespace tanpaapplicationIdatau saatapplicationIddan namespace berbeda. (I754b1, b/233119646)NavArgumentkini memiliki fungsitoString()kustom untuk menampilkan nilai internal argumen. (I900a8)
Versi 2.5.0-rc01
11 Mei 2022
androidx.navigation:navigation-*:2.5.0-rc01 dirilis. Versi 2.5.0-rc01 berisi commit ini.
Fitur Baru
- Menambahkan aturan lint baru untuk memperingatkan agar tidak menempatkan elemen
<deeplink>di dalam elemen<activity>dalam filenavigation.xmlAnda.(Ic15a5, b/178403185)
Perbaikan Bug
- Cakupan composable di
NavHostdanDialogHostkini dibuang dalam urutan yang diharapkan, yaitu composable dalam dibuang sebelum composable luar. (I157e6) - Navigation SafeArgs kini menggunakan
PathSensitivity.RELATIVEdiArgumentsGenerationTaskuntuk memungkinkan kemampuan merelokasi cache. Ini berarti entri cache kini dapat digunakan kembali dari build CI ke build lokal. (I5f67c, b/173420454) - Aturan lint
UnrememberedGetBackStackEntryDetectortelah diperbarui untuk memastikan bahwa panggilanrememberyang mengelilingi panggilan kegetBackStackEntry()juga meneruskan objekNavBackStackEntrysebagai kunci.(Ib7081, b/227382831)
Versi 2.5.0-beta01
20 April 2022
androidx.navigation:navigation-*:2.5.0-beta01 dirilis. Versi 2.5.0-beta01 berisi commit ini.
Perbaikan Bug
DialogNavigatorsekarang menggunakanpopWithTransitionsaat menjalankan panggilandismiss(). Tindakan ini memperbaiki kondisi race saat menggunakanViewModeldalam tujuandialogyang akan menyebabkanIllegalStateExceptionketika menutup Dialog dengan menggunakan sistem kembali atau mengetuk di luar dialog untuk keluar. (Id7376, b/226552301)
Update Dependensi
- Navigasi kini bergantung pada Lifecycle
2.5.0-beta01, yang memperbaikiIllegalStateExceptionketika menyarangkan satuNavHostdalamNavHostlain di tab navigasi bawah non-utama saat menggunakan beberapa data sebelumnya.
Versi 2.5.0-alpha04
6 April 2022
androidx.navigation:navigation-*:2.5.0-alpha04 dirilis. Versi 2.5.0-alpha04 berisi commit ini.
Perubahan API
visibleEntriestidak lagi bersifat eksperimental. (I4829f, b/225394514)
Perbaikan Bug
- NavHost kini bergantung pada
visibleEntriesdariNavControlleruntuk menentukan entri mana yang akan ditulis. Ini berarti bahwa saat menggunakan NavHost bertingkat,NavHostkini akan dianimasikan dengan benar. (I4ba2b, b/225394514) visibleEntriesStateFlowyang disediakan olehNavControllerkini didasarkan pada status Siklus Proses maksimum entri, bukan status Siklus Proses saat ini. Artinya, meskipun siklus proses hostnavControllerberada di bawah STARTED, daftar keseluruhan yang terlihat akan tetap sama. (I9e2a8, b/225394514)SavedStateViewFactorysekarang mendukung penggunaanCreationExtrasmeskipun diinisialisasi denganSavedStateRegistryOwner. Jika tambahan disediakan, argumen yang diinisialisasi akan diabaikan. (I6c43b, b/224844583)NavDeepLinkkini dapat mengurai URI dengan parameter kueri tunggal tanpa nilai. (I0efe8, b/148905489)- String kosong kini dianggap sebagai argumen yang valid di deep link. (I70a0d, b/217399862)
Navigation Safe Argstidak akan lagi error saat menggunakan namespace dan tidak akan adaAndroidManifest.xml. (I17ccf, b/227229815)
Versi 2.5.0-alpha03
23 Februari 2022
androidx.navigation:navigation-*:2.5.0-alpha03 dirilis. Versi 2.5.0-alpha03 berisi commit ini.
Perubahan API
- Anda kini dapat meneruskan
CreationExtraskeby navGraphViewModelsuntuk membuatViewModel. (I29217, b/217618359)
Perbaikan Bug
NavDeepLinkskini mendukung karakter baris baru yang dienkode yang disematkan dalam rute/URI deep link dengan benar. (I513d1, b/217815060)CreationExtraskini berfungsi dengan benar saat digunakan denganNavBackStackEntriesuntuk membuat ViewModels. (I69161, b/217617710)- Navigation Safe Args kini mendukung penggunaan namespace yang ditentukan
di
build.gradlesebagai ganti paket di AndroidManifest. (I659ef, b/217414933)
Versi 2.5.0-alpha02
9 Februari 2022
androidx.navigation:navigation-*:2.5.0-alpha02 dirilis. Versi 2.5.0-alpha02 berisi commit ini.
Perbaikan Bug
- Dari Navigation
2.4.1:NavHostFragmentkini akan menetapkanOnBackPressedDispatcherdengan benar saat menggunakan viewbinding dengan grafik bertingkat. (Ifbb51, b/214577959) - Dari Navigation
2.4.1: Saat melakukan deep linking melalui beberapaNavGraphbertingkat, data sebelumnya kini akan menyertakan tujuan awal perantara dengan benar. (I504c0, b/214383060)
Versi 2.5.0-alpha01
26 Januari 2022
androidx.navigation:navigation-*:2.5.0-alpha01 dirilis. Versi 2.5.0-alpha01 berisi commit ini.
Fitur Baru
NavBackStackEntrykini terintegrasi dengan ViewModel CreationExtras, yang diperkenalkan sebagai bagian dari Lifecycle2.5.0-alpha01. (Ib9fe2, b/207012490)
Perbaikan Bug
- Memperbaiki masalah saat mengakses
ViewModelyang dibuat melaluiby navGraphViewModels()darionCreate()Fragment akan gagal denganIllegalStateException. (I8a14d) NavDeepLinktidak akan lagi mendekode argumen dua kali, yang berarti argumen yang tepat sekarang diteruskan ke tujuan akhir Anda. (I31b0a, b/210711399)
Safe Args
- Safe Args sekarang bergantung pada Plugin Android Gradle versi 7.0.4. Hal ini berarti Safe Args Navigation tidak akan kompatibel lagi dengan Android Studio versi sebelum 7.0, tetapi sekarang kompatibel dengan Plugin Android Gradle 7.1.0 dan yang lebih baru. (I41c88, b/213086135, b/207670704)
Versi 2.4.2
Versi 2.4.2
6 April 2022
androidx.navigation:navigation-*:2.4.2 dirilis. Versi 2.4.2 berisi commit ini.
Perbaikan Bug
- Di-backport dari Navigation
2.5.0-alpha03:NavDeepLinkskini mendukung karakter baris baru yang dienkode yang disematkan dalam rute/URI deep link dengan benar. (I513d1, b/217815060) - Di-backport dari Navigation
2.5.0-alpha03: Navigation SafeArgs kini mendukung penggunaan namespace yang ditentukan dibuild.gradlesebagai pengganti paket dalam AndroidManifest. (I659ef, b/217414933) - Di-backport dari Navigation
2.5.0-alpha04:Navigation Safe Argstidak akan error lagi saat menggunakan namespace dan tidak akan adaAndroidManifest.xml. (I17ccf, b/227229815) - Di-backport dari Navigation
2.5.0-alpha04: String kosong kini dianggap sebagai argumen yang valid di deep link. (I70a0d, b/217399862)
Versi 2.4.1
Versi 2.4.1
9 Februari 2022
androidx.navigation:navigation-*:2.4.1 dirilis. Versi 2.4.1 berisi commit ini.
Perbaikan Bug
NavHostFragmentkini akan menetapkanOnBackPressedDispatcherdengan benar saat menggunakan viewbinding dengan grafik bertingkat. (Ifbb51, b/214577959)- Saat melakukan deep linking melalui beberapa
NavGraphbertingkat, data sebelumnya kini akan menyertakan tujuan awal perantara dengan benar. (I504c0, b/214383060) - Di-backport dari Navigation
2.5.0-alpha01: Memperbaiki masalah saat mengakses ViewModel yang dibuat melaluiby navGraphViewModels()darionCreate()Fragment akan gagal denganIllegalStateException. (I8a14d) - Di-backport dari Navigation
2.5.0-alpha01:NavDeepLinktidak lagi mendekode argumen dua kali, yang berarti bahwa argumen yang didekode dengan benar sekarang diteruskan ke tujuan akhir Anda. (I31b0a, b/210711399) - Di-backport dari Navigation
2.5.0-alpha01: Safe Args kini bergantung pada Plugin Android Gradle versi 7.0.4. Artinya, Safe Args Navigation tidak akan kompatibel lagi dengan Android Studio versi sebelum 7.0, tetapi sekarang kompatibel dengan Plugin Android Gradle 7.1.0 dan yang lebih baru. (I41c88, b/213086135, b/207670704)
Versi 2.4.0
Versi 2.4.0
26 Januari 2022
androidx.navigation:navigation-*:2.4.0 dirilis. Versi 2.4.0 berisi commit ini.
Perubahan penting sejak versi 2.3.0
- Semua artefak Navigation telah ditulis ulang dalam Kotlin. Hal ini meningkatkan nullability class menggunakan generik (seperti subclass
NavType). Semua fungsi ekstensi Kotlin yang dulunya merupakan bagian dari artefak-ktxtelah dipindahkan ke artefak utamanya masing-masing. Artefak-ktxakan terus dipublikasikan, tetapi sepenuhnya kosong. - Artefak
navigation-fragmentsekarang berisi implementasi bawaan dari tata letak dua panel melaluiAbstractListDetailFragmentbaru. Fragmen ini menggunakanSlidingPaneLayoutuntuk mengelola panel daftar (yang disediakan oleh subclass Anda) dan panel detail, yang menggunakanNavHostFragmentsebagai implementasinya, seperti yang dapat dilihat di contoh implementasi kami. - Metode
currentBackStackEntryAsFlow()padaNavControllermenyediakanFlowyang akan muncul setiap kaliNavBackStackEntrysaat ini berubah. Alur ini dapat digunakan sebagai alternatif untuk mengelolaOnDestinationChangedListenersecara manual. - NavController sekarang menawarkan kemampuan untuk mengambil daftar semua instance
NavBackStackEntryyang terlihat sebagaiStateFlowmelalui propertivisibleEntrieseksperimental. - Sekarang Anda dapat memperluas class
NavTypeuntuk membuat NavTypes kustom. Jenis kustom hanya didukung saat membuat grafik navigasi secara terprogram, misalnya melalui Navigation Graph Kotlin DSL. Navigation kini menyediakan
findStartDestination()dangetHierarchy()API yang dapat digunakan untuk membantu menerapkan NavigationUI kustom.findStartDestination()adalah fungsi ekstensi diNavGraphyang akan menemukan tujuan awal sebenarnya yang akan ditampilkan saat Anda membuka grafik, meskipunstartDestinationitu sendiri merupakanNavGraphbertingkat.getHierarchy()adalah fungsi diNavDestinationyang dapat digunakan untuk memverifikasi apakah tujuan tertentu berada dalam hierarki tujuan lain.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }Metode
NavigationUIyang menggunakanBottomNavigationViewtelah diperbarui agar menggunakan superclass yang diperkenalkan di Material1.4.0,NavigationBarView. Hal ini memungkinkan metode ini untuk digunakan denganNavigationRailView.Saat meng-inflate elemen
<action>melalui XML, atribut animasi dapat menggunakan atribut yang diambil dari tema menggunakan sintaksisapp:enterAnim="?attr/transitionEnter".Safe Args sekarang menghasilkan metode
fromSavedStateHandle()untuk setiap classNavArgs. (#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) }
Rute Navigation dan Kotlin DSL
Versi Navigation sebelumnya bergantung pada setiap tujuan yang memiliki ID bilangan bulat konstan yang akan mengidentifikasinya secara unik dari tujuan yang setara dan memungkinkan Anda untuk melakukan navigate() ke tujuan tersebut secara langsung atau melalui tindakan. Meskipun sistem ini tetap valid dan berguna, terutama ketika Anda menentukan grafik navigasi dalam XML dan dapat menggunakan konstanta R.id yang dihasilkan otomatis atau Safe Args (yang menggunakan konstanta tersebut untuk menghasilkan kode pada waktu build), sistem bilangan bulat unik ini tidak memahami makna semantik dan ekspresi yang diperlukan untuk mendukung grafik dinamis sepenuhnya yang dibuat secara terprogram pada runtime melalui Navigation Kotlin DSL.
Rilis ini memperkenalkan opsi baru untuk mengidentifikasi tujuan secara unik dalam grafik navigasi menurut rute. Rute adalah String yang menentukan jalur unik ke suatu tujuan. Semua metode DSL Kotlin yang mengambil ID tujuan kini tidak digunakan lagi dan diganti dengan API setara yang menggunakan rute.
Setiap rute harus diperlakukan sebagai bagian 'jalur' dari Uri yang menentukan tujuan tersebut, misalnya, home, profile/{userId}, profile/{userId}/friends, dll. Saat identitas tujuan dikaitkan dengan bagian konten tertentu, argumen dinamis tersebut harus menjadi bagian dari rute yang mengikuti aturan yang sama seperti deep link implisit.
Semua NavController API yang sebelumnya hanya menggunakan ID sekarang memiliki overload yang menggunakan String rute. Ini termasuk navigate(), popBackStack(), popUpTo(), dan getBackStackEntry().
Hal ini memiliki beberapa implikasi API:
- Properti Kotlin
popUpTopada DSL Kotlin tidak digunakan lagi dan digantikan denganpopUpToId. getStartDestination()API tidak digunakan lagi dan digantikan dengangetStartDestinationId().
Tidak seperti saat menavigasi menurut ID, menavigasi menurut rute akan mengikuti aturan yang sama seperti deep link implisit karena Anda dapat langsung menavigasi ke tujuan mana pun dalam grafik bertingkat. Hal ini memastikan bahwa rute tersebut dapat digunakan dalam project multi-modul tanpa menambahkan deep link yang terlihat dari luar secara eksplisit ke setiap tujuan.
Navigation Compose
Artefak navigation-compose menyediakan integrasi antara Navigation Component dan Jetpack Compose. Artefak ini menggunakan fungsi @Composable sebagai tujuan dalam aplikasi Anda.
Rilis ini menyediakan:
- Composable
NavHostyang memungkinkan Anda membuat grafik navigasi melalui DSL Kotlin, menggunakan tujuancomposabledandialog, ditambah dukungan untuk Navigator opsional seperti yang berasal dari Accompanist Navigation Material. - Dukungan wajib untuk crossfading antar-tujuan. Accompanist Navigation Animation dapat digunakan untuk mengontrol transisi masuk dan keluar menggunakan API Compose eksperimental.
- Cakupan
Lifecycleke setiap tujuan composable. Setiap tujuan hanya mencapai statusRESUMEDsaat transisi masuk selesai dan langsung turun keSTARTEDsaat transisi keluar dimulai, sehingga memungkinkan Anda menghindari semua masalahIllegalStateExceptiondan multi-sentuh hanya dengan memicu panggilannavigateketika statusLifecycleadalahRESUMED. - Cakupan
ViewModel(melaluiviewModel()API dari Lifecycle ViewModel Compose2.4.0atauhiltViewModel()dari Hilt Navigation Compose1.0.0di tingkat tujuan, yang menyediakan cakupan yang bertahan dari perubahan konfigurasi dan berada di data sebelumnya (saat konten Composable Anda dibuang) serta sinyal dionCleared()ViewModel yang menunjukkan penghapusan permanen dan pembersihan status yang terkait denganNavBackStackEntry. - Cakupan status
rememberSaveabledi tingkat tujuan, yang memastikan bahwa semua status composable disimpan dan dipulihkan secara otomatis saat Anda kembali ke tujuan. - Dukungan penuh untuk menyimpan dan memulihkan status
NavControllerdan status tujuannya setelah penghentian dan pembuatan ulang proses. - Integrasi otomatis dengan tombol kembali sistem.
Dukungan untuk meneruskan argumen, melampirkan deep link ke tujuan, dan menampilkan hasil ke tujuan sebelumnya.
Helper khusus Compose di
rememberNavController()dancurrentBackStackEntryAsState()untuk memungkinkan pengangkatan status dan menghubungkanNavControllerke composable di luarNavHost(seperti menu navigasi bawah).
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()
}
}
}
Lihat panduan Navigation Compose untuk mengetahui informasi selengkapnya.
Beberapa data sebelumnya
NavController bertanggung jawab untuk mengelola data sebelumnya dari tujuan, menambahkan tujuan ke data sebelumnya saat Anda navigate() (mengarahkan) ke tujuan tersebut, dan menghapusnya saat Anda memanggil popBackStack() atau memicu tombol kembali sistem. Class NavOptions yang sudah ada dan integrasi ke elemen <action> dalam XML grafik navigasi telah diperluas untuk mendukung penyimpanan dan pemulihan data sebelumnya.
Sebagai bagian dari perubahan ini, metode NavigationUI dari onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), dan NavigationView.setupWithNavController() sekarang otomatis menyimpan dan memulihkan status tujuan yang muncul, sehingga memungkinkan dukungan untuk beberapa data sebelumnya tanpa perubahan kode apa pun. Saat menggunakan Navigation dengan Fragment, ini adalah cara yang disarankan untuk diintegrasikan dengan beberapa data sebelumnya.
API yang mendasari untuk menyimpan dan memulihkan status ditampilkan melalui sejumlah platform:
Dalam XML Navigation, elemen
<action>sekarang dapat menggunakan atribut booleanapp:popUpToSaveStatedanapp:restoreStateuntuk menyimpan status tujuan apa pun yang muncul melaluiapp:popUpTodan memulihkan status yang terkait dengan tujuan yang diteruskan sebagaiapp: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” />Dalam DSL Kotlin
navOptions, Anda dapat menambahkan properti booleanrestoreStatedan properti booleansaveStatedi builderpopUpTo:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }Dalam membuat objek
NavOptionssecara manual melaluiNavOptions.Builder, Anda dapat menggunakansetRestoreState()dan overload baru kesetPopUpTo()yang memerlukan parametersaveStatetambahan.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);Panggilan terprogram ke
popBackStack()kini dapat menyertakan parametersaveStatetambahan.Anda dapat menggunakan metode
clearBackStack()untuk menghapus status yang sebelumnya disimpan denganpopBackStack()ataupopUpToSaveState.
Dalam semua kasus, NavController akan menyimpan dan memulihkan status setiap NavBackStackEntry, termasuk instance ViewModel dengan cakupan tujuan navigasi apa pun. Navigator API telah diupdate untuk memungkinkan setiap Navigator mendukung penyimpanan dan pemulihan statusnya sendiri.
Perubahan perilaku
NavDeepLinkBuilderkini menambahkanPendingIntent.FLAG_IMMUTABLEkePendingIntentyang ditampilkan olehcreatePendingIntent(), memastikan bahwa API ini berfungsi seperti yang diharapkan saat menargetkan Android 12.- Navigation kini bergantung pada
Lifecycle
2.3.1dan menandaisetGraph(),popBackStack(),navigateUp(), dannavigate(), yakni metode yang mengupdateNavBackStackEntryLifecycle, sebagai@MainThread, dengan menyelaraskan Navigation terhadap penerapan thread utama yang diperkenalkan dalam Lifecycle2.3.0. - Deep link sekarang memverifikasi bahwa semua argumen yang diperlukan (yang tanpa nilai default) ada di
Uri. - Argumen yang diuraikan
NavDeepLinksekarang menganggap tanda pagar dengan cara yang sama seperti tanda tanya sebagai pemisah antarsegmen jalur, sehingga mencegah argumen membentang di sepanjang tanda pagar. - Saat membuat tindakan, kode Kotlin yang dihasilkan dari Safe Args kini menempatkan argumen tanpa nilai default sebelum argumen dengan nilai default sebagai parameter.
- Saat membuat argumen, Safe Args kini menetapkan parameter tanpa nilai default lebih dahulu sebelum menetapkan parameter dengan nilai default.
- Safe-Args sekarang bergantung pada Plugin Android Gradle 4.2.0. Ini berarti Anda tidak lagi mendapatkan peringatan penggunaan
applicationIdTextResource.
Masalah umum
- Perbaikan di Navigation
2.5.0-alpha01: mengaksesViewModelyang dibuat melaluiby navGraphViewModels()darionCreate()Fragment akan gagal denganIllegalStateException. (b/213504272) - Perbaikan di Navigation
2.5.0-alpha01: Safe Args 2.4.0 tidak kompatibel dengan Plugin Android Gradle 7.1.0 dan yang lebih baru. (b/213086135) - Deep linking dengan beberapa grafik navigasi bertingkat tidak membuat seluruh data sebelumnya dengan benar. (b/214383060)
Versi 2.4.0-rc01
15 Desember 2021
androidx.navigation:navigation-*:2.4.0-rc01 dirilis. Versi 2.4.0-rc01 berisi commit ini.
Perubahan perilaku
- Sekarang argumen yang diuraikan
NavDeepLinkakan menganggap tanda pagar sama seperti tanda tanya, yaitu sebagai pemisah antar-argumen. (I21309, b/180042703)
Perbaikan Bug
- Deeplink tidak akan lagi mengabaikan argumen dengan nilai yang sama dengan nama placeholder. (If8017, b/207389470)
NavControllertidak akan lagi error saat membuka tujuan bertingkat menggunakan transisi setelahNavControllerdipulihkan. (I0f7c9, b/205021623)- Sekarang, pesan error jika menggunakan
startDestinationyang tidak valid akan ditetapkan secara default ke rute tujuan awal, jika tersedia. (I86b9d, b/208041894)
Perbaikan Bug Navigation Compose
- Memperbaiki potensi error yang disebabkan oleh peralihan cepat antara tujuan awal dan tujuan lain menggunakan item menu navigasi bawah. (Ic8976, b/208887901)
- Sekarang tujuan dialog telah dipulihkan dengan benar di atas layar setelah perubahan konfigurasi atau penghentian proses. (I4c0dc, b/207386169)
- Memperbaiki masalah saat mencoba mengambil
ViewModeldariNavBackStackEntrydialog akan gagal saat dialog ditutup. (I6b96d, b/206465487) - Memperbaiki masalah saat menggunakan tujuan
activitydenganNavHostNavigation Compose yang akan menghasilkan rekomposisi tanpa batas. (I8f64c) - Memperbaiki kebocoran di Navigation Compose yang menyimpan referensi ke aktivitas lama setelah perubahan konfigurasi atau penghentian proses. (I4efcb, b/204905432)
Perbaikan Bug Safe Args
SafeArgstidak lagi error saat mencoba memulihkan array parcelable kustom setelah penghentian proses. (I618e8, b/207315994)- Memperbaiki bug dalam safe args yang tidak akan mengizinkan array boolean memiliki nilai
null. (I8c396, b/174787525)
Versi 2.4.0-beta02
3 November 2021
androidx.navigation:navigation-*:2.4.0-beta02 dirilis. Versi 2.4.0-beta02 berisi commit ini.
Perubahan API
- Penanganan deep link eksplisit dan implisit sekarang otomatis menambahkan flag
saveStatesaat menavigasi ke grafik lain, yang memastikan bahwa kode sepertiNavigationUI.setupWithNavControllerdan kode menggunakan beberapa data sebelumnya berfungsi seperti yang diharapkan. (Ic8807)
Perubahan Perilaku
- Pola deep link sekarang dikompilasi dengan lambat di NavDeepLink, bukan selama inflation. Ini akan mengoptimalkan waktu inflation grafik navigasi yang menyertakan deep link. (b8d257, b/184149935)
Perbaikan Bug
- Memperbaiki masalah ketika NavBackStackEntries yang didorong ke bawah ke
Lifecycle.State.CREATEDsetelah berpindah keLifecycle.State.STARTEDsaatNavHostditambahkan langsung kesetContent()aktivitas. (Ia5ac1, b/203536683) - Memperbaiki kondisi race saat
memunculkan tujuan
DialogFragmentdari data sebelumnya sebelum dialog benar-benar ditampilkan tidak akan benar-benar menutup dialog, sehingga terjadi error saat dialog yang salah ditutup secara manual oleh pengguna. (I687e5) - Memperbaiki masalah saat
onNavDestinationSelectedAPI diNavigationUIakan menampilkantruemeskipun Anda tidak benar-benarnavigate()ke grafik navigasi tersebut. Proses ini sekarang menggunakan logika yang sama yang digunakan secara internal olehsetupWithNavControllerhanya untuk memilihMenuItemyang terkait dengan tujuan saat ini menggunakanhierarchytujuan. (I2b053)
Versi 2.4.0-beta01
27 Oktober 2021
androidx.navigation:navigation-*:2.4.0-beta01 dirilis. Versi 2.4.0-beta01 berisi commit ini.
Fitur Baru
- Kini Anda dapat menggunakan
by navGraphViewModeldengan rute sebagai alternatif menggunakan ID sehingga akan memberikan dukungan yang lebih baik menggunakan DSL Kotlin Navigasi dengan Fragment. (I901e3, b/201446416)
Perubahan API
visibleEntriesAPI kini bersifat eksperimental. (I93f6f)
Perbaikan Bug
- ViewModels tidak akan dihancurkan lagi saat transisi terganggu dengan menavigasi bolak-balik di antara layar yang sama (Id52d8, b/200817333)
- Argumen
NavDeepLinknullable tidak lagi memerlukan nilai default saat menambahkan deep link keNavDestination. (I5aad4, b/201320030) - NavBackStackEntries sekarang dengan Lifecycle yang berbeda tidak lagi dianggap sama. Ini berarti NavHost akan merekomposisi semua tujuan dengan benar saat melakukan navigasi dengan singleTop dan ketika memilih ulang item menu bawah. (I1b351, b/196997433)
- Memperbaiki masalah terkait
AbstractListDetailFragmentyang menyebabkan atributlayout_widthdanlayout_weightpada panel daftar yang ditampilkan olehonCreateListPaneView()menjadi salah ditangani atau diabaikan. (f5fbf3) - Status visual tujuan dialog sekarang
tetap sinkron dengan status
DialogFragmentNavigator. Ini berarti memanggildismiss()API asinkron untukDialogFragmentsecara manual kini menghapus semua tujuan dialog di atas dialog yang kini ditutup. Hal ini tidak memengaruhi kasus ketika Anda menggunakanpopUpToataupopBackStack()untuk menutup dialog. (I77ba2) AbstractAppBarOnDestinationChangedListenersekarang memiliki pesan error yang lebih jelas untukonDestinationChanged(). (Ie742d)
Versi 2.4.0-alpha10
29 September 2021
androidx.navigation:navigation-*:2.4.0-alpha10 dirilis. Versi 2.4.0-alpha10 berisi commit ini.
Fitur Baru
- NavController sekarang menawarkan kemampuan untuk mengambil daftar semua instance
NavBackStackEntryyang terlihat melaluivisibleEntriesStateFlow (Ia964e) rememberNavController()sekarang menggunakan kumpulan instanceNavigatoropsional yang akan ditambahkan keNavControlleryang ditampilkan untuk mendukung Navigator opsional lebih baik seperti dari Accompanist Navigation Material. (I4619e)
Perbaikan Bug
- Navigation dinamis tidak akan lagi mengalami error saat Activity dibuat ulang. (Ifa6a3, b/197942869)
- Memperbaiki masalah dengan tombol kembali di sistem yang terjadi hanya setelah muncul kembali ke tujuan composable yang berisi
NavHost. (3ed148, b/195668143) - SafeArgs sekarang membuat argumen untuk
fromBundle()danfromSavedStateHandle()dalam urutan parameter yang benar. (I824a8, b/200059831)
Versi 2.4.0-alpha09
15 September 2021
androidx.navigation:navigation-*:2.4.0-alpha09 dirilis. Versi 2.4.0-alpha09 berisi commit ini.
Fitur Baru
- Kini Anda dapat menggunakan metode
clearBackStack()untuk menghapus status yang sebelumnya disimpan denganpopBackStack()ataupopUpToSaveState. (I80a0f) - Kini Anda dapat meneruskan daftar argumen dan/atau deep link ke builder grafik navigasi bertingkat dan akan otomatis ditambahkan ke grafik yang dihasilkan. (I8a470, b/182545357)
Perubahan API
- Fungsi DSL Kotlin
navArgumentkini menjadi bagian darinavigation-common, bukannavigation-compose. Anda perlu mengupdate impor untuk terus menggunakan fungsi ini. (I1d095)
Perubahan Perilaku
- Saat membuat argumen, Safe Args kini menetapkan parameter tanpa nilai default lebih dahulu sebelum menetapkan parameter dengan nilai default. (I89709, b/198493585)
Perbaikan Bug
- Saat menggunakan Navigation Compose, NavGraphs hanya akan menjadi
DESTROYEDsetelah semua turunannyaDESTROYED(dihancurkan). (I86552, b/198741720) - Argumen
NavDeepLinknullable tidak lagi memerlukan nilai default. (Ia14ef, b/198689811) - Memanggil
setGraph()dengan grafik baru kini juga akan menghapus data sebelumnya yang tersimpan selain perilaku sebelumnya yang memunculkan data sebelumnya. (I97f96) - Memperbaiki masalah saat
instance
OnDestinationChangedListenerdancurrentBackStackEntryFlowtidak diberi tahu saat menggunakanlaunchSingleTop. (Iaaebc)
Update Dependensi
- Navigation Compose sekarang bergantung pada Activity Compose 1.3.1. (I05829)
- Navigation Compose sekarang bergantung pada
Lifecycle ViewModel Compose
2.4.0-beta01. (Ib86a3)
Versi 2.4.0-alpha08
1 September 2021
androidx.navigation:navigation-*:2.4.0-alpha08 dirilis. Versi 2.4.0-alpha08 berisi commit ini.
Fitur Baru
- Sekarang Anda dapat memperluas class
NavTypeuntuk membuat NavTypes kustom. Jenis kustom hanya didukung saat membuat grafik navigasi secara terprogram, misalnya melalui Navigation Graph Kotlin DSL. (I78440, b/196871885)
Perubahan Perilaku
- Saat membuat tindakan, kode Kotlin yang dihasilkan dari Safe Args kini menempatkan argumen tanpa nilai default sebelum argumen dengan nilai default sebagai parameter. (Idb697, b/188855904)
- Deep link sekarang memverifikasi bahwa semua argumen yang diperlukan (yang tanpa nilai default) ada di
Uri. (#204, b/185527157)
Perbaikan Bug
- Penggunaan
getBackStackEntrydanpreviousBackStackEntrydi dalam composable(), bersama denganremember(), tidak akan lagi menyebabkan pengecualian jika tidak ada tujuan di data sebelumnya. (I75138, b/194313238) - Navigation Compose kini merekomposisi dengan benar saat mengubah argumen data
sebelumnya dan menggunakan
launchSingleTop=true. (Iebd69, b/186392337) - Tidak akan ada
ArrayIndexOutOfBoundsExceptionlagi saat memanggilsetGraphdengan grafik berisi 13 atau 29 tujuan. (I1a9f1, b/195171984) - Generator java SafeArgs seharusnya tidak lagi menyebabkan peringatan lint saat menghasilkan class Args. (I1a666, b/185843837)
Kontribusi Eksternal
- Terima kasih ospixd karena telah memastikan bahwa deep link memverifikasi bahwa semua argumen yang diperlukan (yang tanpa nilai default) ada di
Uri. (#204, b/185527157)
Versi 2.4.0-alpha07
18 Agustus 2021
androidx.navigation:navigation-*:2.4.0-alpha07 dirilis. Versi 2.4.0-alpha07 berisi commit ini.
Perbaikan Bug
- Navigation Compose kini menyimpan status dengan benar setelah konfigurasi berubah dan saat mengubah grafik ketika menggunakan beberapa fitur data sebelumnya. (If5a3d, b/195141957)
- Memilih kembali tab yang sama saat menggunakan navigasi Compose dengan beberapa data sebelumnya tidak akan lagi menghasilkan layar kosong. (I860dc, b/194925622)
NavHostkini mengamati perubahan dalamLifecycle.StateNavBackStackEntryyang berarti penggunaanNavHostdalam fragmen kini akan direkomposisi dengan benar, bukan menghasilkan layar kosong, karena siklus proses berubah. (I4eb85, b/195864489)- Memperbaiki masalah saat menutup
DialogFragmenttidak akan memperbarui statusNavControllerdengan benar setelah membuat ulang aktivitas (yaitu setelah perubahan konfigurasi). (Icd72b) - Memperbaiki masalah saat memunculkan tujuan dialog tidak akan memperbarui penanganan tombol kembali sistem NavController, yang berpotensi menyebabkan NavController mengintersep tombol kembali meskipun tidak memiliki data sebelumnya untuk dimunculkan. (If3b34)
- Safe-Args sekarang otomatis menghasilkan metode
toSavedStateHandleuntuk argumen yang dapat digunakan untuk menguji kodeViewModelAnda. (If1e2d, b/193353880)
Versi 2.4.0-alpha06
4 Agustus 2021
androidx.navigation:navigation-*:2.4.0-alpha06 dirilis. Versi 2.4.0-alpha06 berisi commit ini.
Perubahan API
- Metode
requireSlidingPaneLayout()danrequireDetailPaneNavHostFragment()diAbstractListDetailFragmentmasing-masing telah diubah namanya menjadigetSlidingPaneLayout()dangetDetailPaneNavHostFragment(). (I34a08)
Perubahan Perilaku
- Saat menavigasi dengan animasi (seperti
Crossfade),Lifecycletujuan baru sekarang hanya akan menjangkauRESUMEDketika animasi selesai. (If0543, b/172112072, b/194301889) NavHostNavigation Compose sekarang menyetel grafik sebagai bagian dari komposisi pertama. (Ieb7be)
Perbaikan Bug
- Memunculkan tujuan terakhir dalam grafik navigasi tidak lagi melemparkan
ClassCastException. (If0543, b/172112072, b/194301889) - Memperbaiki
NullPointerExceptionyang akan terjadi saat menambahkan deep link tanpaUridan menavigasi melalui rute atau deep link. (938a0c, b/193805425) - Memperbaiki masalah di Navigation Compose saat
NavBackStackEntryyang memiliki deep link tidak akan menjangkau statusRESUMED. (I192c5) - Memperbaiki masalah saat memunculkan tujuan dialog tidak akan memperbarui penanganan tombol kembali sistem NavController, yang berpotensi menyebabkan NavController mengintersep tombol kembali meskipun tidak memiliki data sebelumnya untuk dimunculkan. (aosp/1782668)
Versi 2.4.0-alpha05
21 Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha05 dirilis. Versi 2.4.0-alpha05 berisi commit ini.
Perubahan Perilaku
NavHostNavigation Compose sekarang selalu menggunakan Crossfade saat menavigasi tujuan. (I07049, b/172112072)- Anda sekarang dapat membuat perubahan pada grafik NavHost. Grafik
dengan startDestination dan tujuan yang sama pada grafik akan
dianggap setara dan tidak akan menghapus data
NavControllersebelumnya. (I0b8db, b/175392262)
Perbaikan Bug
- Memperbaiki
NoSuchElementExceptionsaat memanggilpopBackStack()dari dalamLifecycleObserveryang dilampirkan keNavBackStackEntryyang disebabkan oleh update reentrant ke status NavController. (I64621) AbstractListDetailFragmentkini memungkinkanSlidingPaneLayoutuntuk dihilangkan sepenuhnya dari APK Anda saatAbstractListDetailFragmenttidak digunakan. (I611ad)NavGraphdanNavDestinationkini mengganti metode yang setara, sehingga dua objek dengan nilai yang sama akan dianggap setara. (I166eb, b/175392262)
Versi 2.4.0-alpha04
1 Juli 2021
androidx.navigation:navigation-*:2.4.0-alpha04 dirilis. Versi 2.4.0-alpha04 berisi commit ini.
Fitur Baru
- Artefak
navigation-fragmentsekarang berisi implementasi bawaan dari tata letak dua panel melaluiAbstractListDetailFragmentbaru. Fragmen ini menggunakanSlidingPaneLayoutuntuk mengelola panel daftar (yang disediakan oleh subclass Anda) dan panel detail, yang menggunakanNavHostFragmentsebagai implementasinya, seperti yang dapat dilihat di contoh implementasi kami. (Iac4be, b/191276636) NavHostdari artefaknavigation-composesekarang mendukung tujuandialog, selain tujuancomposable. Setiap tujuan dialog ini akan ditampilkan dalam ComposableDialog, yang mengambang di atas tujuancomposablesaat ini. (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()
}
}
}
Perubahan API
- Fungsi
adddiNavigatorStatetelah diganti namanya menjadipush. Semua panggilan keadd()saat ini harus diubah ke push(). (Ie89fc, b/172112072) - Instance
Navigatorkustom kini dapat menggunakanpushWithTransactionAPI danpopWithTransitionAPI diNavigatorStateuntuk mendorong atau memunculkan tujuan secara asinkron. Perhatikan bahwa API ini belum digunakan oleh navigator yang disertakan. (Ic4d7c, b/172112072)
Perubahan Perilaku
NavDeepLinkBuilderkini menambahkanPendingIntent.FLAG_IMMUTABLEkePendingIntentyang ditampilkan olehcreatePendingIntent(), memastikan bahwa API ini berfungsi seperti yang diharapkan saat menargetkan Android 12. (If8c52)
Perbaikan Bug
- Memperbaiki masalah
<include-dynamic>saat argumen yang diteruskan ke grafik tidak akan diteruskan dengan benar ke grafik yang disertakan secara dinamis. (I3e115) - Memperbaiki
NullPointerExceptionsaat menavigasi ke tujuan menggunakan argumenstring[]dengan nilai default@null. (I1fbe8) - Menambahkan aturan ProGuard untuk
@Navigator.Name, yang memperbaiki masalah saat menggunakan mode lengkap R8 3.1. (I2add9, b/191654433) - SafeArgs tidak akan gagal lagi saat membuat aplikasi dengan
versi
Kotlinsebelum1.5.0. (Icd1ff, b/190739257)
Versi 2.4.0-alpha03
16 Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha03 dirilis. Versi 2.4.0-alpha03 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat dua panggilan
navigate()diperlukan untuk menavigasi ke grafik dinamis yang disertakan. (I7785c, b/188859835) - Memperbaiki regresi yang diperkenalkan di
Navigation
2.4.0-alpha01saatsetupActionBarWithNavController()tidak akan menghapus ikon Atas dengan benar saat Anda berada di tujuan level atas. (I5d443, b/189868637) - Memperbaiki
IllegalStateExceptionsaat memanggilpopBackStack()setelah sebelumnya menampilkan grafik root NavController. (I2a330, b/190265699) - Aturan ProGuard untuk
by navArgs()kini diterapkan dengan benar saat menggunakannavigation-commonatau artefak apa pun yang bergantung padanya. (I68800, b/190082521) OnDestinationChangedListeneryang memanggilnavigate()saat pertama kali menerima callback kini mendapatkan callback kedua dengan benar untuk tujuan yang dinavigasikan. (Ie5f9e, b/190228815)- Safe Args tidak lagi mengalami error saat digunakan dengan modul fitur dinamis dan AGP 7.0+. (I69518, b/189966576)
Masalah Umum
- Safe Args akan gagal dengan error
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’saat menggunakan Gradle6.7.0karena dependensi pada Kotlin versi lama. Hal ini dapat diatasi dengan memperbarui untuk menggunakan Gradle 7.0. (b/190739257)
Versi 2.4.0-alpha02
2 Juni 2021
androidx.navigation:navigation-*:2.4.0-alpha02 dirilis. Versi 2.4.0-alpha02 berisi commit ini.
Fitur Baru
- Rute sekarang didukung untuk tujuan Activity, Fragment, dan Dialog, serta di seluruh DSL Kotlin DynamicNavigation. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUItelah menambahkan API eksperimental untuk sementara guna memungkinkan tidak ikut menyimpan status Anda. Meskipun selalu menyimpan status merupakan perilaku yang benar, masih ada penggunaan library yang tidak digunakan lagi (yaitu fragmen yang dipertahankan) yang tidak dapat didukung saat menyimpan status, sehingga hal ini memberikan peluang bagi aplikasi untuk dikonversi secara perlahan dari API yang tidak didukung. (Idf93c)Navigation kini menyediakan API
findDestination()dangetHierarchy()yang dapat digunakan untuk membantu menerapkan NavigationUI kustom.findDestination()adalah fungsi ekstensi padaNavGraphyang akan menemukan tujuan dalam grafik.getHierarchy()adalah fungsi padaNavDestinationyang dapat digunakan untuk memverifikasi apakah tujuan tertentu berada dalam hierarki tujuan lain. (I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }Metode NavigationUI yang menggunakan
BottomNavigationViewtelah diperbarui agar menggunakan superclass yang diperkenalkan di Material1.4.0,NavigationBarView. Hal ini memungkinkan metode ini untuk digunakan denganNavigationRailView. (Ib0b36, b/182938895)Saat meng-inflate elemen
<action>melalui XML, atribut animasi dapat menggunakan atribut yang diambil dari tema menggunakan sintaksisapp:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)
Perubahan API
- Builder DSL Kotlin yang menggunakan ID tidak digunakan lagi dan harus diganti dengan builder yang menggunakan rute (I85b42, b/188816479) (I9f58f, b/188816479)
Perbaikan Bug
DialogFragmentNavigatorsekarang menggunakanNavigatorState.pop()API untuk memberi tahuNavControllersaat dialog ditutup dengan menekan tombol kembali sistem atau mengklik di luarnya, sehingga memastikan bahwa statusNavControllerselalu sinkron dengan status Navigator. (I2ead9)Navigation tidak lagi memberikan
ConcurrentModificationExceptionsaat menggunakan manipulasi daftarOnDestinationChangedListenersdari dengan callbackonDestinationChanged. (Ib1707, b/188860458)Safe Args tidak lagi mengalami error saat mencoba membuat properti arah di Kotlin. (Id2416, b/188564435)
Metode setId di NavDestination sekarang dianotasi dengan benar menggunakan
@IdRes, sehingga hanya menerima ID resource. (I69b80)Parameter int
findNodesekarang adalahresId, bukanresid. (I7711d)
Pembaruan Dependensi
- Safe-Args sekarang bergantung pada Plugin Android Gradle 4.2.0. Ini berarti Anda tidak lagi mendapatkan peringatan penggunaan
applicationIdTextResource. (I6d67b, b/172824579)
Versi 2.4.0-alpha01
18 Mei 2021
androidx.navigation:navigation-*:2.4.0-alpha01 dirilis. Versi 2.4.0-alpha01 berisi commit ini.
Fitur Baru
- Metode
currentBackStackEntryAsFlow()padaNavControllermenyediakanFlowyang akan muncul setiap kaliNavBackStackEntrysaat ini berubah. Alur ini dapat digunakan sebagai alternatif untuk mengelolaOnDestinationChangedListenersecara manual. (I19c4a, #89, b/163947280)
Beberapa data sebelumnya
NavController bertanggung jawab untuk mengelola data sebelumnya dari tujuan, menambahkan tujuan ke data sebelumnya saat Anda navigate() (mengarahkan) ke tujuan tersebut, dan menghapusnya saat Anda memanggil popBackStack() atau memicu tombol kembali sistem. Class NavOptions yang sudah ada dan integrasi ke dalam entri <action> dalam XML grafik navigasi telah diperluas untuk mendukung penyimpanan dan pemulihan data sebelumnya. (b/80029773)
Sebagai bagian dari perubahan ini, metode NavigationUI dari onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), dan NavigationView.setupWithNavController() sekarang otomatis menyimpan dan memulihkan status tujuan yang muncul, sehingga memungkinkan dukungan untuk beberapa data sebelumnya tanpa perubahan kode apa pun. Saat menggunakan Navigation dengan Fragment, ini adalah cara yang disarankan untuk diintegrasikan dengan beberapa data sebelumnya. (Ie07ca)
API yang mendasari untuk menyimpan dan memulihkan status ditampilkan melalui sejumlah platform:
Dalam XML Navigation, elemen
<action>sekarang dapat menggunakan atribut booleanapp:popUpToSaveStatedanapp:restoreStateuntuk menyimpan status tujuan apa pun yang muncul melaluiapp:popUpTodan memulihkan status yang terkait dengan tujuan yang diteruskan sebagaiapp: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” />Dalam DSL Kotlin
navOptions, Anda dapat menambahkan properti booleanrestoreStatedan properti booleansaveStatedi builderpopUpTo:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }Dalam membuat objek
NavOptionssecara manual melaluiNavOptions.Builder, Anda dapat menggunakansetRestoreState()dan overload baru kesetPopUpTo()yang memerlukan parametersaveStatetambahan.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);Panggilan terprogram ke
popBackStack()kini dapat menyertakan parametersaveStatetambahan.
Dalam semua kasus, NavController akan menyimpan dan memulihkan status setiap NavBackStackEntry, termasuk instance ViewModel dengan cakupan tujuan navigasi apa pun. Navigator API telah diupdate untuk memungkinkan setiap Navigator mendukung penyimpanan dan pemulihan statusnya sendiri.
ComposeNavigator yang digunakan untuk tujuan composable di Navigation Compose, serta FragmentNavigator dan DynamicFragmentNavigator yang digunakan untuk tujuan <fragment> di Navigation dengan Fragment telah diupdate untuk menggunakan Navigator API baru dan mendukung penyimpanan dan pemulihan status.
Rute Navigation
Rute adalah String yang secara unik mengidentifikasi tujuan. Meskipun sebelumnya hanya digunakan di Navigation Compose, konsep ini kini telah ditingkatkan menjadi bagian dari Navigation API inti. Hal ini memberikan alternatif untuk menggunakan ID bilangan bulat saat menyusun grafik melalui Navigation Kotlin DSL. (b/172823546)
Semua API yang sebelumnya hanya menggunakan ID sekarang memiliki overload yang mengambil rute String. Ini termasuk navigate(), popBackStack(), popUpTo(), dan getBackStackEntry().
Hal ini memiliki beberapa implikasi API:
- Properti kotlin
popUpTopada DSL Kotlin tidak digunakan lagi dan digantikan denganpopUpToId. (I59c73, b/172823546) getStartDestination()API tidak digunakan lagi dan digantikan dengangetStartDestinationId(). (I0887f, b/172823546)
Untuk developer yang mengupgrade Navigation Compose versi sebelumnya ke Navigation Compose 2.4.0-alpha01, ini berarti impor berikut pada metode ekstensi tidak lagi diperlukan dan harus dihapus:
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
Argumen KEY_ROUTE telah diganti dengan properti route di NavDestination, sehingga Anda dapat memanggil navBackStackEntry.destination.route secara langsung.
Perubahan API
- Semua artefak Navigation telah ditulis ulang dalam Kotlin. Hal ini meningkatkan nullability class menggunakan generik (seperti subclass
NavType). Semua fungsi ekstensi Kotlin yang dulunya merupakan bagian dari artefak-ktxtelah dipindahkan ke artefak utamanya masing-masing. Artefak-ktxakan terus dipublikasikan, tetapi sepenuhnya kosong. (b/184292145) NavDeepLinkBuildersekarang mendukung penambahan beberapa tujuan yang berbeda ke data sebelumnya yang dihasilkan. (I3ee0d, b/147913689)- Menambahkan fungsi factory untuk
DynamicNavHostFragment(Icd515, b/175222619) - ID unik
NavBackStackEntrykini ditampilkan sebagai bagian dari API publiknya. (Ie033a) - Kolom
namedanargumentserta fungsi destrukturisasiNamedNavArgumentsekarang menjadi publik. (#174, b/181320559) - Memperkenalkan ekstensi
NavBackStackEntry#provideToCompositionLocalsbaru yang menyediakanNavBackStackEntryuntuk lokal komposisi yang relevan. (#175, b/187229439)
Safe Args
Safe Args sekarang menghasilkan metode
fromSavedStateHandle()untuk setiap classNavArgs. (#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) }Mengupdate Safe Args untuk bergantung pada KotlinPoet
1.8.0. (#172, b/183990444)
Perubahan Perilaku
- Navigation kini bergantung pada
Lifecycle
2.3.1dan menandaisetGraph(),popBackStack(),navigateUp(), dannavigate(), yakni metode yang mengupdateNavBackStackEntryLifecycle, sebagai@MainThread, dengan menyelaraskan Navigation terhadap penerapan thread utama yang diperkenalkan dalam Lifecycle2.3.0. (b/171125856) - Mengurai argumen Enum dari deep link kini tidak peka huruf besar/kecil, sehingga deep link seperti
http://www.example.com/reddapat mencocokkan deep linkwww.example.com/{color}meskipun saat enum memiliki nilaiRED. (#152, b/135857840)
Kompatibilitas Compose
androidx.navigation:navigation-compose:2.4.0-alpha01hanya kompatibel dengan Compose versi1.0.0-beta07dan yang lebih baru.
Perbaikan Bug
- Memperbaiki masalah saat placeholder argumen akhir lebih diprioritaskan daripada deep link yang memiliki akhiran yang sama persis. (#153, b/184072811)
NavHostFragmentsekarang mendukung Navigator khusus yang menggunakan@Navigator.Name("dialog")sama sepertiDialogFragmentNavigatordefault. (Ib1c2c, b/175979140)- Meningkatkan perilaku
NavigatorProvider#addNavigatoruntuk memastikan bahwa memanggilnya berulang kali dengan instance yang sama tidak menimbulkan masalah. (#176, b/187443146)
Kontribusi Eksternal
- Terima kasih simonschiller karena telah membuat dukungan untuk Safe Args yang menghasilkan metode
fromSavedStateHandle()untuk setiap classNavArgs. (#122, b/136967621) - Terima kasih Bradleycorn karena telah membuat penguraian argumen Enum dari deep link yang tidak peka huruf besar/kecil. (#152, b/135857840)
- Terima kasih osipxd karena telah memperbaiki masalah saat placeholder argumen akhir lebih diprioritaskan daripada deep link yang memiliki akhiran yang sama persis. (#153, b/184072811)
- Terima kasih tatocaster karena telah mengupdate Safe Args bergantung pada KotlinPoet
1.8.0. (#172, b/183990444) - Terima kasih jossiwolf karena telah membuat kolom
namedanargument, serta mendestrukturisasi fungsiNamedNavArgumentmenjadi publik. (#174, b/181320559) - Terima kasih jossiwolf karena telah memperkenalkan ekstensi
NavBackStackEntry#provideToCompositionLocalsbaru yang menyediakanNavBackStackEntryuntuk lokal komposisi yang relevan. (#175, b/187229439) - Terima kasih jossiwolf karena telah meningkatkan perilaku
NavigatorProvider#addNavigatoruntuk memastikan bahwa memanggilnya berulang kali dengan instance yang sama tidak menimbulkan masalah. (#176, b/187443146)
Navigation Compose Versi 1.0.0
Versi 1.0.0-alpha10
7 April 2021
androidx.navigation:navigation-compose:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit ini.
Perubahan API
NavHostkini menerimaModifier, yang akan diteruskan ke fungsi container composable, yang menggabungkan composable tujuan. (I85aca, b/175125483)
Perbaikan Bug
NavHostkini berfungsi meskipunOnBackPressedDispatcherOwnertidak ditemukan, seperti halnya saat melihat pratinjauNavHost. (I7d8b4)- Navigation Compose kini bergantung pada Navigation
2.3.5, yang memperbaiki masalah saat menggunakanBackHandlerdi dalam tujuanNavHost. (I7e63b, b/182284739)
Versi 1.0.0-alpha09
10 Maret 2021
androidx.navigation:navigation-compose:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit ini.
Perubahan API
LocalViewModelStoreOwner.currentkini menampilkanViewModelStoreOwnernullable untuk menentukan lebih baik apakahViewModelStoreOwnertersedia di komposisi saat ini. API yang memerlukanViewModelStoreOwner, sepertiviewModel()danNavHost, masih menampilkan pengecualian jikaViewModelStoreOwnertidak ditetapkan. (Idf39a)
Perbaikan Bug
- Navigation Compose kini bergantung pada Navigation 2.3.4 yang mencakup perbaikan untuk mencoba menetapkan objek ViewModelStore yang sama setelah grafik ditetapkan. (I65c24, b/177825470)
Versi 1.0.0-alpha08
24 Februari 2021
androidx.navigation:navigation-compose:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Fitur Baru
NavHostkini mengisi CompositionLocalLocalSavedStateRegistryOwnerdenganNavBackStackEntrytujuan tersebut, memastikan bahwa setiap status yang disimpan langsung keSavedStateRegistryakan disimpan dan dipulihkan bersama tujuan. (I435d7, b/179469431)
Versi 1.0.0-alpha07
10 Februari 2021
androidx.navigation:navigation-compose:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Update Dependensi
- Navigation Compose sekarang bergantung pada Lifecycle ViewModel Compose 1.0.0-alpha01 untuk memberikan dukungan
viewModel()ke tujuancomposable. (I7a374) NavHostsekarang menggunakanLocalOnBackPressedDispatcherOwnerbaru dari Activity-Compose 1.3.0-alpha01 untuk mendapatkanOnBackPressedDispatcheryang ditetapkan diNavController. (I65b12)
Versi 1.0.0-alpha06
28 Januari 2021
androidx.navigation:navigation-compose:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Perubahan API
- Menambahkan metode ekstensi
getBackStackEntry(route: String)diNavControlleryang menampilkanNavBackStackEntryterkait. (If8931)
Versi 1.0.0-alpha05
13 Januari 2021
androidx.navigation:navigation-compose:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Diperbarui agar bergantung pada Compose 1.0.0-alpha10.
Versi 1.0.0-alpha04
16 Desember 2020
androidx.navigation:navigation-compose:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
- Diupdate agar kompatibel dengan Compose
1.0.0-alpha09.
Versi 1.0.0-alpha03
2 Desember 2020
androidx.navigation:navigation-compose:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah saat
popBackStack()dannavigateUp()tidak akan berfungsi setelah perubahan konfigurasi atau penghentian dan pembuatan ulang proses. (Icea47, b/173281473) - Melakukan navigasi ke grafik bertingkat dalam NavHost kini berfungsi dengan baik. (I0948d, b/173647694)
Versi 1.0.0-alpha02
11 November 2020
androidx.navigation:navigation-compose:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Perubahan API
- Navigation compose kini mendukung NavOptions untuk menggunakan operasi popUpTo dan launchSingleTop (If96c3, b/171468994)
- Menambahkan fungsi navigasi yang mengambil rute, bukan ID, yang memungkinkan Anda membuat grafik bersarang di DSL Navigation Compose. (I1661d)
- startDestination kini muncul sebelum rute dalam daftar parameter untuk NavHost (Ie620e)
- Kini Anda dapat membuat grafik menggunakan rute sebagai tujuan awal di luar composable NavHost. (Iceb75)
Versi 1.0.0-alpha01
28 Oktober 2020
android.navigation:navigation-compose:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.
Fitur Baru
Artefak navigation-compose menyediakan integrasi antara Navigation Component dan Jetpack Compose. Artefak ini menggunakan fungsi @Composable sebagai tujuan dalam aplikasi Anda.
Rilis awal ini menyediakan:
- Composable
NavHostmemungkinkan Anda membuat grafik navigasi melalui DSL Kotlin. - Cakupan siklus proses,
ViewModel, dan status yang diingat di tingkat tujuan. - Integrasi otomatis dengan tombol kembali sistem.
- Dukungan untuk meneruskan argumen, melampirkan deep link ke tujuan, dan menampilkan hasil ke tujuan sebelumnya.
- Helper khusus Compose di
rememberNavController()dancurrentBackStackEntryAsState()untuk memungkinkan pengangkatan status dan menghubungkanNavControllerke composable di luarNavHost(seperti menu navigasi bawah).
Lihat panduan Navigation Compose untuk mengetahui informasi selengkapnya.
Versi 2.3.5
Versi 2.3.5
7 April 2021
androidx.navigation:navigation-*:2.3.5 dirilis. Versi 2.3.5 berisi commit ini.
Fitur Baru
- Saat bernavigasi menggunakan
NavDeepLinkRequestatauUri, kini Anda dapat mengaksesUri, tindakan, dan jenis mime di tujuan yang dihasilkan dengan mendapatkan intent dari argumen melaluiKEY_DEEP_LINK_INTENT, mencerminkan fungsi yang sudah tersedia untuk deep linking eksternal. (I975c3, b/181521877)
Perbaikan Bug
OnBackPressedCallbacksditambahkan ke dispatcher denganNavBackStackEntrykarena LifecycleOwner kini melakukan intersepsi kembali dengan benar setelah Activity Lifecycle adalahSTOPPED, laluSTARTED(Iff94f, b/182284739)- Penguraian domain deep link kini tidak peka huruf besar/kecil, sehingga memastikan
www.example.comcocok denganwww.example.comdanwww.Example.com. Perlu diketahui bahwa nama parameter kueri masih peka huruf besar/kecil. (#144, b/153829033) - Memperbaiki
NullPointerExceptionyang dapat terjadi saat tujuan memiliki beberapa argumen default yang non-nullable dan Anda menavigasi ke tujuan itu dengan hanya mengganti subkumpulan argumen tersebut. (aosp/1644827)
Update Dependensi
- Plugin Navigation Safe Args Gradle kini bergantung pada Plugin Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)
Kontribusi Eksternal
- Terima kasih
bentrengroveatas permintaan pull yang membuat penguraian domain deep link tidak peka huruf besar/kecil. (#144, b/153829033)
Versi 2.3.4
Versi 2.3.4
10 Maret 2021
androidx.navigation:navigation-*:2.3.4 dirilis. Versi 2.3.4 berisi commit ini.
Fitur Baru
- Argumen
ReferenceTypekini dapat diuraikan dengan benar saat dikirim sebagai bagian dari URI deeplink. Ini mendukung nilai bilangan bulat mentah serta nilai heksa yang diawali dengan0x. (#127, b/179166693) android:defaultValueuntuk argumen denganapp:argType="float"kini mendukung nilai default bilangan bulat, memungkinkan Anda menggunakanandroid:defaultValue="0", bukan menggunakan0.0. (#117, b/173766247)
Perbaikan Bug
- Memperbaiki progres penginstalan saat menggunakan dukungan Navigation untuk fitur dinamis. (Ib27a7, b/169636207)
- Memanggil
setViewModelStoreatausetLifecycleOwnerdengan objek sama yang kini telah ditetapkan tanpa pengoperasian (Idf491, b/177825470) - Safe-Args kini menambahkan anotasi sembunyi pada metode yang tepat saat menggunakan java. (I8fbc5, b/179463137)
Kontribusi Eksternal
- Terima kasih
JvmNameatas permintaan pull-nya untuk memastikan bahwa argumenReferenceTypekini dapat diuraikan dengan benar saat dikirim sebagai bagian dari URI deeplink. (#127, b/179166693) - Terima kasih
tatocasteratas permintaan pull-nya untuk mengizinkandefaultValueuntuk argumen denganapp:argType=”float”kini mendukung nilai default bilangan bulat. (#117, b/173766247)
Versi 2.3.3
Versi 2.3.3
27 Januari 2021
androidx.navigation:navigation-*:2.3.3 dirilis. Versi 2.3.3 berisi commit ini.
Perbaikan Bug
- Tidak ada lagi error saat memunculkan
NavBackStackEntrysebelumLifecycledipindahkan keCREATED. (Ie3ba3) - Memperbaiki regresi yang disebabkan oleh b/171364502 ketika memilih
aktivitas dengan nilai resource animasi
0yang menyebabkanResourceNotFoundException. (I7aedb, b/176819931)
Versi 2.3.2
Versi 2.3.2
2 Desember 2020
androidx.navigation:navigation-*:2.3.2 dirilis. Versi 2.3.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki regresi dalam
NavigationUI, saat penggunaan tujuan<activity>denganonNavDestinationSelectedakan gagal membuka Activity. (I22e34, b/171364502) - Memperbaiki masalah saat
navigation-dynamic-features-fragmentakan mengakibatkan navigasi ke tujuan yang baru diinstal beberapa kali. (aosp/1486056, b/169636207) - Memperbaiki masalah saat argumen default tidak akan dikirim ke instance
OnDestinationChangedListenerketika menggunakanlaunchSingleTop. (I2c5cb) - Memperbaiki masalah saat navigasi ke grafik navigasi bertingkat tidak akan membuat instance grafik baru di data sebelumnya. (Ifc831)
- Memperbaiki masalah saat penggunaan
navigate()denganpopUpToyang menghapus tujuan terakhir di grafik navigasi tidak akan langsung menghancurkan dan menghapus grafik navigasi itu sendiri dari data sebelumnya. (I910a3) - Navigation SafeArgs kini menggunakan KotlinPoet versi 1.7.2 yang menambahkan dukungan untuk mode API eksplisit Kotlin. (I918b5)
NavHostFragment.findNavController(Fragment)kini juga memeriksa tampilan dekorasi root DialogFragment selain pemeriksaan hierarki Fragment dan hierarki tampilan Fragment yang sudah ada. Hal ini memungkinkan Anda menguji fragmen dialog yang menggunakan Navigation denganFragmentScenariodanNavigation.setViewNavController(). (I69e0d)
Versi 2.3.1
Versi 2.3.1
14 Oktober 2020
androidx.navigation:navigation-*:2.3.1 dirilis. Versi 2.3.1 berisi commit ini.
Fitur Baru
- Resource Animator default telah ditambahkan ke UI Navigation dan direkomendasikan pada resource animasi default. (b/167430145)
- NavOptions kini mengganti metode hashcode dan equals (b/161586466)
- Navigation kini menyertakan tujuan saat ini dalam IllegalArgumentException "No destination with ID" (Tidak ada tujuan dengan ID), yang akan meningkatkan (kualitas) pengalaman proses debug developer. (b/168311416)
Perbaikan Bug
- Safe Args tidak akan lagi menggabungkan baris yang ditampilkan, meskipun nama class argumen yang dihasilkan lebih dari 100 karakter. (b/168584987)
Perubahan Dependensi
navigation-uikini bergantung pada DrawerLayout 1.1.1, memastikan bahwaNavigationUIdapat membuka panel samping meskipun menggunakanLOCK_MODE_LOCKED_CLOSEDatauLOCK_MODE_LOCKED_OPEN. (b/162253907)- Safe Args kini bergantung pada KotlinPoet 1.6.0 (aosp/1435911)
- Safe Args kini bergantung pada AGP 4.0.1 (aosp/1442337)
Versi 2.3.0
Versi 2.3.0
24 Juni 2020
androidx.navigation:navigation-*:2.3.0 dirilis. Versi 2.3.0 berisi commit ini.
Perubahan utama sejak versi 2.2.0
- Integrasi Modul Fitur: Artefak
navigation-dynamic-features-runtimedannavigation-dynamic-features-fragmentmemungkinkan Anda membuka halaman tujuan yang ditentukan dalam modul fitur, yang secara otomatis menangani penginstalan modul fitur sesuai kebutuhan. Lihat Menavigasi dengan modul fitur untuk informasi selengkapnya. - Pengujian Navigation: Artefak
navigation-testingmenyediakanTestNavHostControlleryang memungkinkan Anda menetapkan tujuan saat ini dan memverifikasi data sebelumnya setelah operasi navigasi. Lihat Menguji Navigation untuk informasi selengkapnya. - Menampilkan Hasil:
NavBackStackEntryyang terkait dengan setiap tujuan di data Navigation sebelumnya kini memungkinkan Anda mengaksesSavedStateHandleyang cocok untuk menyimpan status tersimpan dalam jumlah kecil yang harus dihubungkan dengan entri data tertentu sebelumnya. Lihat Menampilkan hasil ke Tujuan sebelumnya untuk informasi selengkapnya. - Dukungan
NavigationUIuntukOpenable: Semua penggunaanDrawerLayoutdiNavigationUItelah diganti dengan antarmukaOpenableyang lebih umum yang ditambahkan di CustomView1.1.0dan diterapkan olehDrawerLayoutdi DrawerLayout1.1.0. - Dukungan Tindakan dan Jenis MIME di deep link: Deep linking telah diperluas untuk mendukung
app:actiondanapp:mimeTypeselainapp:uriyang sebelumnya tersedia.NavControllerkini mendukung pemilihan dengan kombinasi apa pun dari kolom ini melalui classNavDeepLinkRequestbaru. Lihat Menavigasi menggunakan NavDeepLinkRequest untuk informasi selengkapnya.
Masalah Umum
- Dukungan untuk tindakan deep link dan jenis MIME belum tersedia di Penggabungan Manifes. Hingga hal tersebut tersedia, setiap elemen
<intent-filter>yang dihasilkan dari elemen<nav-graph>dalam manifes tidak akan menyertakan jenis MIME dalam elemen<data>atau<action>kustom. Anda harus menambahkan<intent-filter>yang sesuai ke manifes secara manual.
Versi 2.3.0-rc01
10 Juni 2020
androidx.navigation:navigation-*:2.3.0-rc01 dirilis. Versi 2.3.0-rc01 berisi commit ini.
Perbaikan Bug
- Memperbaiki
NullPointerExceptionsaat mengganti instance tujuan tanpa argumen dengan instance lain yang disertai argumen menggunakansingleTop. (b/158006669) - Semua pengecualian
destination is unknownyang ditampilkan olehNavControllerkini memiliki informasi proses debug tambahan untuk membantu menentukan statusNavController. (b/157764916)
Versi 2.3.0-beta01
20 Mei 2020
androidx.navigation:navigation-*:2.3.0-beta01 dirilis. Versi 2.3.0-beta01 berisi commit ini.
Perbaikan Bug
- Memperbaiki masalah ketika
LifecycledariNavBackStackEntrytidak diupdate dengan benar setelah dihentikannya proses. (b/155218371) - Instance
OnDestinationChangedListeneryang terdaftar sebelum memanggilsetGraph()sekarang dikirim dengan benar ke tujuan yang dipulihkan setelah dihentikannya proses. (b/155218371) - Saat menggunakan
singleTop, argumenNavBackStackEntrykini telah diupdate dengan benar lalu dikirimkan ke semua instanceOnDestinationChangeListener. (b/156545508)
Update Dependensi
- Artefak
NavigationUIkini bergantung pada CustomView1.1.0-rc01dan DrawerLayout1.1.0-rc01. (aosp/1309696)
Versi 2.3.0-alpha06
29 April 2020
androidx.navigation:navigation-*:2.3.0-alpha06 dirilis. (Versi 2.3.0-alpha06 berisi commit ini.)
Fitur Baru
- Deep link telah diperluas untuk mendukung
app:actiondanapp:mimeTypeselainapp:uriyang sebelumnya tersedia. NavController kini mendukung pemilihan dengan kombinasi apa pun dari kolom ini melalui classNavDeepLinkRequestyang baru. (b/136573074, b/135334841)
Perubahan API
- Memperluas dukungan DSL Kotlin untuk tujuan Dynamic Navigation. (b/148969800)
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan Intent deep link diabaikan saat menggunakan tujuan awal bertingkat. (b/154532067)
Versi 2.3.0-alpha05
15 April 2020
androidx.navigation:navigation-*:2.3.0-alpha05 dirilis. Versi 2.3.0-alpha05 berisi commit ini.
Fitur Baru
- Untuk penyertaan grafik dinamis yang menggunakan
<include-dynamic>, Anda tidak perlu lagi menentukanapp:graphPackagedan defaultnya akan digunakan dengan menambahkan akhiranmoduleNamekeapplicationIdsetelah tanda titik. Jika Anda perlu menyesuaikangraphPackage, placeholder${applicationId}kini telah didukung. (b/152696768) - Navigation Graph Kotlin DSL kini menampilkan
defaultArgumentsMapuntuk tindakan, yang menduplikasi kemampuan untuk menetapkan nilai default pada elemen<action>dalam file XML Navigation. (b/150345605)
Perbaikan Bug
- Dari Navigation 2.2.2: Memperbaiki
IllegalStateExceptionsaat melakukan deep linking ke tujuan awal grafik saat Anda memiliki beberapa instanceNavHostFragmentdalam Activity Anda. (b/147378752)
Update dependensi
- Navigation kini bergantung pada Fragment
1.2.4. (aosp/1277325) - Dynamic Navigation kini bergantung pada Play Core
1.7.2. (aosp/1282257)
Versi 2.3.0-alpha04
18 Maret 2020
androidx.navigation:navigation-*:2.3.0-alpha04 dirilis. Versi 2.3.0-alpha04 berisi commit ini.
Fitur Baru
- Menambahkan dukungan untuk tujuan aktivitas dan fragmen modul fitur di Navigation Kotlin DSL. (b/148969800)
Perubahan API
- Class
DynamicExtrastidak lagi menggunakan pola builder dan kini dapat dibuat secara langsung. (aosp/1253671) DynamicActivityNavigatorkini menggunakanContextdalam konstruktornya, bukanActivity. (aosp/1250252)
Perbaikan Bug
NavigationUItidak lagi mengabaikan label kosong (misalnya, tujuan denganandroid:label=””) dan kini menetapkan judul menjadi string kosong dengan benar. (b/148679860)
Update Dependensi
- Artefak Navigation Dynamic Features kini bergantung pada Play Core
1.6.5. (b/149556401)
Versi 2.3.0-alpha03
4 Maret 2020
androidx.navigation:navigation-*:2.3.0-alpha03 dirilis. Versi 2.3.0-alpha03 berisi commit ini.
Perubahan API
AppBarConfigurationsekarang tidak lagi mengandalkan classDrawerLayoutkonkret, tetapi menggunakan antarmukaOpenableyang diperkenalkan dalam CustomView1.1.0-alpha02(yang diimplementasikan olehDrawerLayoutmulai dari DrawerLayout1.1.0-alpha04) sehingga Anda dapat menggunakan implementasi kustomOpenabledenganNavigationUI. (b/129030452)
Perbaikan Bug
- Aturan
navigation-common-ktxProGuard kini hanya menyimpan classNavArgsyang digunakan dengan benar, bukan semua instanceNavArgs. (b/150213558)
Perubahan dependensi
- Navigation telah mengembalikan dependensinya di Core
1.2.0dan kini bergantung pada Core1.1.0untuk mencegah developer beralih ke dependensi yang lebih baru secara paksa saat Navigation tidak bergantung pada API baru di Core1.2.0.
Versi 2.3.0-alpha02
19 Februari 2020
androidx.navigation:navigation-*:2.3.0-alpha02 dirilis. Versi 2.3.0-alpha02 berisi commit ini.
Fitur Baru
NavBackStackEntrykini memungkinkan Anda mengaksesSavedStateHandleyang cocok untuk menyimpan status tersimpan dalam jumlah kecil yang harus dihubungkan dengan entri data tertentu sebelumnya. Lihat Menampilkan hasil untuk kasus penggunaan contoh. (b/79672220)
Perubahan API
- Metode praktis
getCurrentBackStackEntry()dangetPreviousBackStackEntry()telah ditambahkan agar lebih mudah untuk mengambilNavBackStackEntryuntuk tujuan saat ini dan sebelumnya. (b/79672220)
Perbaikan Bug
navigateUp()kini meneruskan argumen tujuan saat ini danKEY_DEEP_LINK_INTENTke tujuan sebelumnya saat meluncurkan aplikasi di stack tugas Anda. (b/147456890)
Perubahan dependensi
- Navigation kini bergantung pada Core
1.2.0.
Versi 2.3.0-alpha01
5 Februari 2020
androidx.navigation:navigation-*:2.3.0-alpha01 dirilis. Versi 2.3.0-alpha01 berisi commit ini.
Fitur baru
- Artefak
navigation-testingbaru menyediakan classTestNavHostController. Class ini menyediakan alternatif untuk menggunakanNavControllerfiktif saat menguji Navigation yang memungkinkan Anda menetapkan tujuan saat ini dan memverifikasi data sebelumnya setelah operasi navigasi. (b/140884273) navigation-dynamic-features-fragmentbaru (dan dependensi transitifnya,navigation-dynamic-features-runtime) memungkinkan Anda menyertakan tujuan atau seluruh grafik navigasi (melalui<include-dynamic>) dari modul fitur, yang menyediakan penginstalan modul fitur on-demand lancar saat menuju ke tujuan tersebut. Lihat Menavigasi dengan modul fitur untuk informasi selengkapnya. (b/132170186)
Perbaikan bug
- Dari Navigation
2.2.1: Deep link tanpa parameter kueri kini mengabaikan semua parameter kueri dengan benar, bukan menambahkannya ke elemen{argument}akhir atau yang tidak cocok dengan deep link. (b/147447512) - Dari Navigation
2.2.1: Aturannavigation-uiProGuard untukDrawerArrowDrawabletelah diperbarui guna memastikan bahwaandroid.enableJetifier=truetidak diperlukan. (b/147610424) - Dari Navigation
2.2.1: Modulnavigation-common-ktxkini memiliki nama paket manifes yang unik, bukan berbagi nama paket manifes yang sama dengannavigation-runtime-ktx. (aosp/1141947)
Update dependensi
- Dari Navigation
2.2.1: Navigation2.2.1kini bergantung pada Lifecycle ViewModel SavedState2.2.0dan Fragment1.2.1.
Versi 2.2.2
Versi 2.2.2
15 April 2020
androidx.navigation:navigation-*:2.2.2 dirilis. Versi 2.2.2 berisi commit ini.
Perbaikan Bug
- Memperbaiki
IllegalStateExceptionsaat melakukan deep link ke tujuan awal grafik saat memiliki beberapa instanceNavHostFragmentdi Activity Anda. (b/147378752) NavigationUItidak lagi mengabaikan label kosong (misalnya, tujuan denganandroid:label=””) dan kini menetapkan judul menjadi string kosong dengan benar. Ini sebelumnya dirilis di Navigation 2.3.0-alpha04. (b/148679860)- Aturan
navigation-common-ktxProGuard kini hanya menyimpan classNavArgsyang digunakan dengan benar, bukan semua instanceNavArgs. Ini sebelumnya dirilis di Navigation 2.3.0-alpha03. (b/150213558
Update dependensi
- Navigation kini bergantung pada Fragment
1.2.4. (aosp/1277325)
Versi 2.2.1
Versi 2.2.1
5 Februari 2020
androidx.navigation:navigation-*:2.2.1 dirilis. Versi 2.2.1 berisi commit ini.
Perbaikan bug
- Deep link tanpa parameter kueri kini mengabaikan parameter kueri dengan benar, bukan menambahkannya ke elemen
{argument}akhir atau yang tidak cocok dengan deep link. (b/147447512) - Aturan
navigation-uiProGuard untukDrawerArrowDrawabletelah diperbarui guna memastikan bahwaandroid.enableJetifier=truetidak diperlukan. (b/147610424) - Modul
navigation-common-ktxkini memiliki nama paket manifes yang unik, bukan berbagi nama paket manifes yang sama dengannavigation-runtime-ktx. (aosp/1141947)
Update dependensi
- Navigation
2.2.1kini bergantung pada Lifecycle ViewModel SavedState2.2.0dan Fragment1.2.1.
Versi 2.2.0
Versi 2.2.0
22 Januari 2020
androidx.navigation:navigation-*:2.2.0 dirilis. Versi 2.2.0 berisi commit ini.
Perubahan penting sejak versi 2.1.0
- NavBackStackEntry: Anda kini dapat memanggil
NavController.getBackStackEntry(), meneruskan ID tujuan atau grafik navigasi pada data sebelumnya.NavBackStackEntryyang ditampilkan menyediakanLifecycleOwner,ViewModelStoreOwner(sama dengan yang ditampilkan olehNavController.getViewModelStoreOwner()), danSavedStateRegistryOwnerberbasis Navigation, selain memberikan argumen yang digunakan untuk memulai tujuan tersebut. - Integrasi Lifecycle ViewModel SavedState:
SavedStateViewModelFactorysekarang menjadi setelan pabrik default saat menggunakanby navGraphViewModels()atau konstruktorViewModelProviderdenganViewModelStoreOwneryang ditampilkan olehNavController.getBackStackEntry()atauNavController.getViewModelStoreOwner(). - Dukungan Parameter Kueri untuk Deep Link: Deep link dengan parameter kueri sekarang mendukung parameter kueri yang diurutkan ulang; argumen yang memiliki nilai default atau nullable sekarang bersifat opsional saat mencocokkan deep link.
- Peningkatan Dukungan Animasi:
NavHostFragmentsekarang menggunakanFragmentContainerViewdari Fragment 1.2.0, yang memperbaiki masalah pengurutan z animasi dan inset jendela yang dikirim ke Fragment.
Versi 2.2.0-rc04
18 Desember 2019
androidx.navigation:navigation-*:2.2.0-rc04 dirilis. Versi 2.2.0-rc04 berisi commit ini.
Perbaikan bug
- Menyesuaikan animasi pudar default yang digunakan oleh
navigation-uiagar cocok dengan animasi pudar yang disesuaikan di Fragment1.2.0-rc04. (b/145769814)
Versi 2.2.0-rc03
4 Desember 2019
androidx.navigation:navigation-*:2.2.0-rc03 dirilis. Versi 2.2.0-rc03 berisi commit ini.
Perbaikan bug
- Memperbaiki masalah penguraian deep link saat menggunakan parameter kueri dan argumen sebagai bagian terakhir jalur yang mencegah penguraian lebih dari satu karakter argumen jalur akhir. (b/144554689)
- Memperbaiki masalah penguraian deep link yang menyebabkan parameter opsional menerima
"@null", bukannull. (b/141613546) NavHostFragmentsekarang akan mengembalikan grafik dengan benar setelah perubahan konfigurasi saat digunakan denganFragmentContainerView. (b/143752103)
Perubahan dependensi
- Navigation sekarang bergantung pada Lifecycle
2.2.0-rc03, Lifecycle ViewModel SavedState1.0.0-rc03, Activity1.1.0-rc03, dan Fragment1.2.0-rc03jika sesuai.
Versi 2.2.0-rc02
7 November 2019
androidx.navigation:navigation-*:2.2.0-rc02 dirilis. Versi 2.2.0-rc02 berisi commit ini.
Perubahan dependensi
- Navigation sekarang bergantung pada androidx.lifecycle
2.2.0-rc02.
Versi 2.2.0-rc01
23 Oktober 2019
androidx.navigation:navigation-*:2.2.0-rc01 dirilis tanpa perubahan sejak 2.2.0-beta01. Versi 2.2.0-rc01 berisi commit ini.
Versi 2.2.0-beta01
9 Oktober 2019
androidx.navigation:navigation-*:2.2.0-beta01 dirilis. Versi 2.2.0-beta01 berisi commit ini.
Fitur baru
NavDestinationdan subclass-nya sekarang menggantikantoString()untuk memberikan lebih banyak informasi bermanfaat selama proses debug. (b/141264986)
Perubahan perilaku
- Parameter kueri ekstra sekarang diabaikan saat mencocokkan deep link, daripada menyebabkan kegagalan pencocokan. (b/141482822)
Perbaikan bug
- Memperbaiki masalah saat argumen di jalur deep link diabaikan jika parameter kueri juga ditentukan. (b/141505755)
- Ekstensi Kotlin
navArgs()diActivitysekarang memiliki pesan error yang lebih baik apabila tidak ada tambahan. (b/141408999) - Class Java
Directionsyang dihasilkan Safe Args sekarang berisi nilai default. (b/141099045) - Class Java
Argsyang dihasilkan Safe Args sekarang berisi nilai default. (b/140123727) - Saat menggunakan
Toolbar,NavigationUItidak lagi menganimasikan perubahan teks saat berpindah di antara dua tujuan level teratas. (b/140848160)
Versi 2.2.0-alpha03
18 September 2019
androidx.navigation:navigation-*:2.2.0-alpha03 dirilis. Versi 2.2.0-alpha03 berisi commit ini.
Perubahan perilaku
- Memanggil
setViewModelStore()setelah memanggilsetGraphsekarang menghasilkanIllegalStateException. Panggilan ini harus selalu disetel olehNavHostsebagai bagian dari penyiapan awal untuk memastikan bahwa semua instanceNavBackStackEntrymemiliki penyimpanan yang konsisten untuk instanceViewModel. (aosp/1111821)
Perbaikan bug
- Memperbaiki
ConcurrentModificationExceptionsaat menggunakan instanceViewModelyang dikaitkan ke berbagai instanceViewModelStoredengan cakupan grafik navigasi yang berbeda. (aosp/1112257)
Versi 2.2.0-alpha02
5 September 2019
androidx.navigation:navigation-*:2.2.0-alpha02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Deep link dengan parameter kueri sekarang mendukung parameter kueri yang diurutkan ulang; argumen yang memiliki nilai default atau nullable sekarang bersifat opsional saat mencocokkan deep link. (b/133273839)
- Sekarang Anda dapat memanggil
NavController.getBackStackEntry(), dengan meneruskan ID tujuan atau grafik navigasi di data sebelumnya.NavBackStackEntryyang ditampilkan menyediakanLifecycleOwner,ViewModelStoreOwner(sama dengan yang ditampilkan olehNavController.getViewModelStoreOwner()), danSavedStateRegistryOwnerberbasis Navigation, selain memberikan argumen yang digunakan untuk memulai tujuan tersebut. (aosp/1101691, aosp/1101710)
Perbaikan bug
- Memperbaiki masalah saat penambahan
NavHostFragmentkeViewPager2gagal denganIllegalArgumentException. (b/133640271) NavInflatersekarang menghindari pemanggilangetResourceName()secara tidak perlu, sehingga mempercepat inflation time hingga 40%. (b/139213740)
Versi 2.2.0-alpha01
7 Agustus 2019
androidx.navigation:navigation-*:2.2.0-alpha01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
SavedStateViewModelFactorysekarang merupakan setelan default factory yang digunakan saat menggunakanby navGraphViewModels()atau konstruktorViewModelProviderdenganViewModelStoreOwneryang ditampilkan olehNavController.getViewModelStoreOwner(). (b/135716331)
Perubahan API
- Dari Navigation
2.1.0-rc01:getViewModelStore()API yang tidak digunakan lagi diNavControlleryang diperkenalkan dalam versi2.1.0-alpha02telah dihapus. (aosp/1091021)
Perbaikan bug
NavHostFragmentsekarang menggunakanFragmentContainerView, yang memperbaiki masalah pengurutan-z animasi dan inset jendela yang dikirim ke Fragment. (b/137310379)
Versi 2.1.0
Versi 2.1.0
5 September 2019
androidx.navigation:navigation-*:2.1.0 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan penting sejak 2.0.0
- Membatasi ViewModels ke grafik navigasi: Sekarang Anda dapat membuat ViewModels yang dibatasi di level grafik navigasi menggunakan delegasi properti
by navGraphViewModels()bagi pengguna Kotlin yang menggunakan library-ktx, atau dengan menggunakangetViewModelStoreOwner()API yang ditambahkan keNavController. Lihat Membagikan data terkait UI antar-tujuan untuk mengetahui informasi selengkapnya. - Tujuan dialog: Sekarang Anda dapat membuat tujuan
<dialog>yang akan menampilkanDialogFragmentsaat Anda melakukannavigateke sana.NavHostFragmentsecara default mendukung tujuan dialog. Lihat Membuat tujuan dari DialogFragment untuk informasi selengkapnya. - Menavigasi dengan Uri: Sekarang Anda dapat melakukan
navigatemenggunakanUri, yang menggunakan<deepLink>yang ditambahkan ke tujuan untuk menavigasi ke sana. Lihat Menavigasi menggunakan Uri untuk informasi selengkapnya. - NavHostController: API yang digunakan khusus untuk membuat
NavHostkustom telah dipindahkan keNavHostController, yang memungkinkan implementasi untuk menghubungkanNavControllermiliknya keLifecycleOwner,OnBackPressedDispatcher, danViewModelStoreyang menjadi host.
Versi 2.1.0-rc01
7 Agustus 2019
androidx.navigation:navigation-*:2.1.0-rc01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
getViewModelStore()API yang tidak digunakan lagi diNavControlleryang diperkenalkan dalam versi2.1.0-alpha02telah dihapus. (aosp/1091021)
Versi 2.1.0-beta02
19 Juli 2019
androidx.navigation:*:2.1.0-beta02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
- Menghapus dependensi jacoco tidak disengaja yang diperkenalkan dalam
2.1.0-beta01. (b/137782950)
Versi 2.1.0-beta01
17 Juli 2019
androidx.navigation:*:2.1.0-beta01 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
NavigationUIsekarang menganimasikan penghapusan tombol Naik saatsetupWithNavController()digunakan denganToolbaratauCollapsingToolbarLayout. (b/131403621)
Perbaikan bug
- Memperbaiki masalah pengaturan waktu saat beberapa NavHostFragment digunakan dengan container yang sama dengan
findNavController(). (b/136021571)
Versi 2.1.0-alpha06
2 Juli 2019
androidx.navigation:*:2.1.0-alpha06 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Atribut
app:navGraphyang digunakan oleh NavHostFragment kini telah dipindahkan ke artefaknavigation-runtime. Navigator kustom yang dapat ditambahkan melalui XML harus menggunakan atribut ini untuk mendapatkan integrasi dengan panel Host di Navigation Editor. (b/133880955)
Perubahan API
getViewModelStore()API diNavControllertidak digunakan lagi dan digantikan dengan metodegetViewModelStoreOwner()baru yang menampilkanViewModelStoreOwner. (aosp/987010)- Implementasi tujuan jendela floating, seperti tujuan
<dialog>, telah digeneralisasi menjadi antarmuka penanda,FloatingWindow, yang sekarang diimplementasikan oleh semua tujuan<dialog>. Metode NavigationUI untuk berinteraksi dengan panel aplikasi atas sekarang mengabaikan tujuanFloatingWindow. (b/133600763)
Perubahan perilaku
- Navigation kini mempertahankan statusnya tetap sinkron dengan konten yang ada di layar saat tujuan
<dialog>digunakan. Hasilnya, sekarang Navigation otomatis menampilkan tujuan<dialog>ketika Anda menavigasi ke tujuan selain dialog dan tujuan selain aktivitas, seperti tujuan<fragment>. (b/134089818)
Perbaikan bug
- Navigation kini menyembunyikan animasi yang terjadi ketika membuat ulang aktivitas saat menangani deep link, memperbaiki flash visual. (b/130362979)
- Memperbaiki bug saat data sebelumnya dari Navigation tidak sinkron ketika Fragment ditampilkan saat fragmen awal sedang ditambahkan. (b/133832218)
Versi 2.1.0-alpha05
5 Juni 2019
androidx.navigation:*:2.1.0-alpha05 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perubahan API
- API terkait host di
NavControllerdiubah namanya dan dipindahkan ke subclass baruNavController,NavHostController. (aosp/966091) - Metode
setHostOnBackPressedDispatcherOwner()NavControllertelah diganti dengan metodesetOnBackPressedDispatcher()NavHostControllerdan sekarang mengharuskan Anda memanggilsetLifecycleOwner()sebelum memanggilnya. (aosp/965409) NavHostControllersekarang memuat metodeenableOnBackPressed(boolean)yang menggantikan classNavHostOnBackPressedManageryang sebelumnya ditampilkan olehsetHostOnBackPressedDispatcherOwner(). (aosp/966091)
Perbaikan bug
- Memperbaiki masalah saat data sebelumnya salah setelah menavigasi menggunakan URI. (b/132509387)
- Deep link yang otomatis ditangani oleh NavController kini hanya terpicu satu kali. (b/132754763)
Versi 2.1.0-alpha04
16 Mei 2019
androidx.navigation:*:2.1.0-alpha04 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Perbaikan bug
NavHostFragmentsekarang mengikutiapp:defaultNavHostdengan benar saat mengintersep peristiwa tombol Kembali sistem, sehingga memperbaiki regresi di Navigation2.1.0-alpha03. b/132077777DialogFragmentNavigatorsekarang menangani operasipopBackStack()dannavigateUp()dengan benar. b/132576764- Memperbaiki masalah
IllegalStateException: unknown destination during restoresaat menavigasi di antara grafik bertingkat secara berulang. b/131733658
Versi 2.1.0-alpha03
7 Mei 2019
androidx.navigation:*:2.1.0-alpha03 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Masalah Umum
- NavHostFragment terus mengintersep tombol Kembali sistem meskipun
app:defaultNavHost="false"digunakan b/132077777
Fitur baru
- Sekarang Anda dapat membuat tujuan
<dialog>yang akan menampilkanDialogFragmentsaat Anda melakukannavigateke sana.NavHostFragmentmendukung tujuan dialog secara default. b/80267254 - Selain memanggil
navigatedengan id resource atau instanceNavDirections, sekarang Anda dapat menavigasi melaluiUri, yang menggunakan<deepLink>yang telah ditambahkan ke tujuan untuk menavigasi ke tujuan yang benar. b/110412864
Perubahan perilaku
- Animasi default yang disediakan oleh NavigationUI telah dipercepat dari 400 md menjadi 220 md untuk menyesuaikan kecepatan animasi default aktivitas dan fragmen. b/130055522
Perubahan API
- Metode
createFragmentNavigator()dariNavHostFragmenttidak digunakan lagi dan fungsinya dipindahkan ke metodeonCreateNavController()baru untuk memperjelas bahwa ini adalah titik masuk yang benar untuk menambahkan Navigator kustom ketika menjadikanNavHostFragmentsebagai subclass. b/122802849 - Metode
hasDeepLink()telah ditambahkan keNavDestinationuntuk memungkinkan Anda memeriksa apakahUritertentu dapat ditangani oleh tujuan tersebut, atau dalam kasusNavGraph, oleh tujuan mana pun dalam grafik navigasi. b/117437718
Perbaikan bug
- Argumen default sekarang diteruskan dengan benar ke instance
OnDestinationChangedListener. b/130630686 NavHostFragmentsekarang mengintersep peristiwa tombol Kembali sistem menggunakanOnBackPressedDispatcher, yang memperbaiki masalah saat melakukan navigasi bersyarat dalam metode siklus proses Fragment sekembalinya ke suatu Fragment. b/111598096- Untuk Safe Args,
android:defaultValue=”@null”denganapp:argTypeyang tidak ditentukan sekarang diinferensikan dengan benar sebagai argumenstring. b/129629192
Versi 2.1.0-alpha02
3 April 2019
androidx.navigation:*:2.1.0-alpha02 dirilis. Commit yang disertakan dalam versi ini dapat dilihat di sini.
Fitur baru
- Sekarang Anda dapat membuat ViewModel yang dibatasi di level grafik navigasi melalui delegasi properti
by navGraphViewModels()bagi pengguna Kotlin, atau dengan menggunakangetViewModelStore()API yang ditambahkan keNavController. b/111614463
Perubahan API
- Sekarang Anda dapat menambahkan
app:targetPackageke tujuan<activity>untuk membatasi nama paket yang cocok. Perubahan ini mendukungapp:targetPackage="${applicationId}"untuk membatasi paket ke ID aplikasi Anda sendiri. b/110975456
Perbaikan bug
android:nameuntuk tujuan<activity>tidak lagi diuraikan menjadi Class pada inflation time sehingga mencegah terjadinya ClassNotFoundExceptions saat menggunakan fitur dinamis. b/124538597
Versi 2.1.0-alpha01
19 Maret 2019
Ini adalah rilis alfa pertama Navigation 2.1.0.
Perubahan dependensi
- Navigation sekarang menggunakan
androidx.core:core:1.0.1danandroidx.fragment:fragment:1.1.0-alpha05sebagai dependensi. Rilis ini juga menghapuskan dependensi padaandroidx.legacy:legacy-support-core-utils:1.0.0. b/128632612
Perubahan API
- Metode
Navigation.createNavigateOnClickListener(NavDirections)baru telah ditambahkan sebagai alternatif pembuatan pemroses klik dengan ID resource dan Paket. b/127631752 FragmentNavigator.instantiateFragmenttidak digunakan lagi. Implementasi default sekarang menggunakanFragmentFactoryuntuk membuat instance Fragment. b/119054429
Perbaikan Bug
- Navigation tidak lagi mengirimkan
Bundlenull ketika ada argumen yang dikaitkan ke tujuan, memperbaiki masalah saatandroid:defaultValue="@null"digunakan. b/128531879 - Safe Args sekarang menggunakan KotlinPoet 1.1.0 sebagai dependensi, memperbaiki masalah dengan nama paket yang sangat panjang. b/123654948
Versi 2.0.0
Versi 2.0.0
14 Maret 2019
Navigation 2.0.0 dirilis tanpa perubahan dari versi 2.0.0-rc02.
Versi 2.0.0-rc02
6 Maret 2019
Navigation 2.0.0-rc02 menyediakan artefak baru dengan ID grup androidx.navigation
dan mengubah dependensinya ke yang setara dengan AndroidX.
Perilaku 2.0.0-rc02 identik dengan perilaku Navigation 1.0.0-rc02 dan tidak ada perubahan yang harus dilakukan pada kode Anda untuk melakukan update dari 1.0.0-rc02 selain memperbarui dependensi agar sesuai dengan dependensi yang baru.
Project Anda harus sudah dimigrasikan ke AndroidX untuk menggunakan Navigation rilis 2.X. Rilis stabil Navigation 1.0 akan menjadi rilis terakhir yang menggunakan dependensi Support Library; semua pengembangan selanjutnya setelah rilis 1.0 akan didasarkan pada AndroidX dan dikembangkan dari rilis stabil 2.0.
Dependensi sebelum AndroidX
Untuk versi Navigation pra-AndroidX, sertakan dependensi berikut:
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
}
Untuk Safe Args, tambahkan
classpath berikut ini dalam file build.gradle tingkat teratas Anda.
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Versi 1.0.0
Versi 1.0.0
14 Maret 2019
Navigation 1.0.0 dirilis tanpa perubahan dari versi 1.0.0-rc02.
Versi 1.0.0-rc02
26 Februari 2019
Ini adalah kandidat rilis kedua untuk rilis stabil Navigation 1.0.0. Rilis ini berisi sejumlah perbaikan bug.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan
popBackStack()diabaikan jika grafik root tidak memiliki ID b/126251695 navigateUp()sekarang mengembalikan navigasi dengan benar ke tugas aplikasi Anda ketika dipanggil setelah menangani deep link tanpaFLAG_ACTIVITY_NEW_TASKb/126082008- Memperbaiki masalah yang menyebabkan
ActivityNavigator.applyPopAnimationsToPendingTransitiontidak menerapkan animasi keluar pop yang tepat b/126237567 - Kode Kotlin yang dihasilkan oleh Safe Args kini meng-escape kata kunci Kotlin
dengan benar, seperti
indanfundalam nama paket yang terkait dengan classR. b/126020455
Versi 1.0.0-rc01
21 Februari 2019
Ini adalah kandidat rilis untuk rilis stabil Navigation 1.0.0. Rilis ini berisi satu perbaikan bug.
Perbaikan Bug
- Memperbaiki masalah penggunaan Fragment dan operasi navigasi
singleTopb/124294805
Versi 1.0.0-beta02
12 Februari 2019
Rilis ini menyertakan sejumlah peningkatan (kualitas) kecil dan perbaikan bug penting.
Fitur Baru
- Anda sekarang dapat menggunakan
0sebagaiandroid:defaultValueuntuk argumenreference. b/124248602
Perubahan perilaku
- Deep link yang benar-benar cocok sekarang diprioritaskan daripada deep link dengan
.*atau kecocokan argumen. b/123969518
Perbaikan Bug
popBackStack()dannavigateUpsekarang menampilkanfalsedengan benar saat memunculkan tujuan terakhir pada data sebelumnya, memperbaiki regresi yang diperkenalkan dalam1.0.0-beta01. b/123933201- Navigation sekarang menetapkan
ClassLoaderdengan benar selama pemulihan status instance tersimpan, menghindari masalah saat menggunakan class kustom dalam status tersimpanNavigatoratau dalam argumen yang dikirim keNavDestination. b/123893858 - Class NavArgs yang dihasilkan Safe Args tidak lagi error saat memulihkan
argumen
Parcelable[]dari status instance tersimpan. b/123963545 - Safe Args kini dapat dengan benar menghapus class Kotlin yang tidak diperlukan. b/124120883
Versi 1.0.0-beta01
4 Februari 2019
Ini adalah rilis beta pertama Navigation; selanjutnya, Navigation API diharapkan akan tetap stabil hingga versi berikutnya kecuali ada masalah mendesak. Rilis ini berisi beberapa perbaikan bug dan perubahan perilaku.
Perubahan perilaku
- Navigation kini memastikan bahwa nilai default argumen diperlakukan sama persis saat runtime dan di seluruh Safe Args. Hasilnya, hanya argumen dengan
app:argType="reference"yang nilai default-nya dapat mengarah ke resource lain (misalnya@color/colorPrimary). Mencoba menggunakan nilai default referensi denganapp:argTypelain akan menghasilkan pengecualian saat mengurai XML navigasi. b/123551990 - Safe Args sekarang bergantung pada Plugin Android Gradle 3.3.0 aosp/888413
- Safe Args sekarang menggunakan Kotlin 1.3.20 sebagai dependensi. aosp/888414
Perbaikan Bug
- Safe Args kini dapat digunakan dalam library dan modul fitur pada semua versi Plugin Android Gradle. b/121304903
- Memperbaiki regresi yang menyebabkan operasi
popBackStack()tunggal memunculkan semua salinan tujuan di bagian atas data sebelumnya, bukan hanya satu tujuan pada satu waktu. b/123552990 - Memperbaiki masalah saat status
FragmentNavigatormembatalkan sinkronisasi dengan statusNavController, sehingga terjadiIllegalStateExceptionsaat mencoba memulihkan data sebelumnya. b/123803044 - Memperbaiki masalah yang menyebabkan panah kembali yang ditangani
NavigationUItidak muncul saat menggunakan ProGuard dengan obfuscation. b/123449431 - Kode yang dihasilkan Safe Args sekarang melakukan penanganan dengan benar menggunakan
app:argTypeyang mengarah ke class internal statis dengan format.OuterClass$InnerClass. b/123736741 - Kode Java yang dihasilkan Safe Args kini dapat dengan benar menangani tindakan global dan tujuan di tingkatan yang dalam. b/123347762
Versi 1.0.0-alpha11
23 Januari 2019
Ini adalah rilis hotfix 1.0.0-alpha10 yang memperbaiki masalah dengan Safe Args.
Perbaikan Bug
- Memperbaiki masalah yang menyebabkan Safe Args gagal mengimpor class Directions yang terkait dengan tindakan global. b/123307342
Versi 1.0.0-alpha10
23 Januari 2019
Masalah Umum
- Safe Args gagal mengimpor class Directions yang terkait dengan tindakan global. b/123307342
Rilis ini berisi perubahan API yang dapat menyebabkan gangguan; lihat bagian Perubahan yang Dapat Menyebabkan Gangguan di bawah ini.
Fitur Baru
- Pengguna Kotlin kini dapat menggunakan delegasi properti
by navArgs()untuk mendapatkan referensi dengan mudah ke classNavArgsyang dihasilkan Safe Args dalamActivityatauFragment. b/122603367 - Safe Args sekarang memungkinkan Anda menghasilkan kode Kotlin dengan menerapkan
plugin
androidx.navigation.safeargs.kotlin. Kode Kotlin dibuat khusus untuk modul Kotlin, menggunakan argumen default dan class yang tidak dapat diubah melalui pola builder yang masih tersedia melalui pluginandroidx.navigation.safeargssebelumnya. b/110263087
Perubahan Perilaku
- Deep link yang cocok sekarang memprioritaskan deep link yang memiliki argumen paling cocok. b/118393029
- Memanggil
setGraph()diNavControllersekarang akan mereset data sebelumnya. b/111450672 - Deep link yang tidak diketahui kini tidak lagi menampilkan
IllegalStateException, tetapi akan diabaikan sehingga memperbaiki masalah denganNavHostFragmentyang berjumlah lebih dari satu atau bertingkat. b/121340440
Perubahan yang Dapat Menyebabkan Gangguan
- Metode
NavOptions.applyPopAnimationsToPendingTransition()untuk menerapkan animasi pop ke Activity telah dipindahkan keActivityNavigator. b/122413117 - Safe Args kini menghindari duplikasi class identik untuk tindakan tanpa
argumen. Jenis nilai yang ditampilkan untuk metode tanpa argumen dalam class NavDirections
yang dihasilkan sekarang menjadi
NavDirections. b/123233147 - Class Directions yang dihasilkan Safe Args kini tidak lagi memiliki konstruktor publik; Anda hanya boleh berinteraksi dengan metode statis yang dihasilkan. b/123031660
- Class
NavDirectionsyang dihasilkan Safe Args kini tidak lagi memiliki konstruktor publik; class tersebut hanya boleh dihasilkan melalui metode statis dalam class Directions yang dihasilkan. b/122963206 Bundleyang ditampilkan darigetArguments()milikNavDirectionssekarang ditandai sebagai@NonNull, bukan@Nullable. b/123243957
Perbaikan Bug
NavDeepLinkBuildersekarang dapat menangani beberapaPendingIntentsimultan ke tujuan yang sama dengan benar menggunakan argumen yang diberikan untuk menentukan keunikannya. b/120042732NavControllersekarang dapat menangani operasipopBackStack()dengan benar ketika menggunakanNavHostFragmentbertingkat atau Fragment turunan lainnya dengan data sebelumnya. b/122770335NavigationUIsekarang dapat menetapkan deskripsi konten tombol Naik dengan benar. b/120395362- Class Directions yang dihasilkan Safe Args kini dengan benar menangani tindakan global yang memiliki ID yang sama dengan tindakan pada suatu tujuan. b/122962504
- Class
NavDirectionsyang dihasilkan Safe Args sekarang memiliki nilaihashCode()yang sama jikaequals()menampilkan benar (true). b/123043662 FragmentNavigatorsekarang menampilkan pesan error yang lebih baik ketika Anda mencoba melakukanFragmentTransactionskustom diFragmentManagerNavHostFragment. Anda harus selalu menggunakangetChildFragmentManager(). b/112927148
Versi 1.0.0-alpha09
18 Desember 2018
Rilis ini berisi perubahan API yang dapat menyebabkan gangguan; lihat bagian Perubahan yang Dapat Menyebabkan Gangguan di bawah ini.
Kami memilih untuk tidak melanjutkan pengembangan
artefak android.arch.navigation:navigation-testing. Meskipun terbukti
bermanfaat untuk pengujian internal NavController, kami sangat merekomendasikan
strategi pengujian alternatif, seperti membuat tiruan instance NavController
untuk memastikan bahwa panggilan navigate() yang benar sudah dilakukan. Pendekatan ini
dibahas secara mendetail dalam
topik Single Activity di AndroidDevSummit 2018
dan kami akan menyusun dokumentasi tambahan secara khusus mengenai pengujian
dengan Navigation.
Fitur Baru
MenuItemdenganmenuCategory="secondary"tidak akan lagi menampilkan data sebelumnya saat digunakan dengan metodeNavigationUI. b/120104424AppBarConfigurationkini memungkinkan Anda menetapkan instanceOnNavigateUpListenerpenggantian yang akan dipanggil saatnavController.navigateUp()menampilkanfalse. b/79993862 b/120690961
Perubahan yang Dapat Menyebabkan Gangguan
- Saat menggunakan
<argument>denganargType="reference", Navigation tidak lagi mengurai referensi, tetapi akan memberikan ID resource mentahnya. b/111736515 onNavDestinationSelected()sekarang akan muncul kembali ke tujuan awal grafik navigasi Anda secara default, sehingga konsisten dengan metodesetup. TambahkanmenuCategory="secondary"keMenuItemuntuk menghindari munculnya data sebelumnya. aosp/852869- Metode
fromBundle()dari classArgsyang dihasilkan kini menggunakanBundlenon-null, bukanBundlenullable aosp/845616
Perbaikan Bug
- Argumen kini diurai dengan benar dari deep link sebagai
argTypeyang tepat, bukan selalu sebagai string b/110273284 - Navigation sekarang mengekspor resource publiknya dengan benar b/121059552
- Safe Args kini kompatibel dengan Plugin Android Gradle 3.4 Canary 4 dan yang lebih baru b/119662045
Versi 1.0.0-alpha08
6 Desember 2018
Rilis ini berisi perubahan API yang dapat menyebabkan gangguan; lihat bagian Perubahan yang Dapat Menyebabkan Gangguan di bawah ini.
Fitur Baru
- Label tujuan, jika digunakan dengan metode
NavigationUI, sekarang akan otomatis mengganti instance{argName}dalamandroid:labelAnda dengan argumen yang benar b/80267266 - Navigation sekarang bergantung pada Support Library 28.0.0 b/120293333
Perubahan yang Dapat Menyebabkan Gangguan
OnNavigatedListenertelah diganti namanya menjadiOnDestinationChangedListenerb/118670572OnDestinationChangedListenersekarang juga meneruskanBundleargumen aosp/837142- Atribut
app:clearTaskdanapp:launchDocumentserta metode terkaitnya telah dihapus. Gunakanapp:popUpTodengan root grafik untuk menghapus semua tujuan dari data sebelumnya. b/119628354 ActivityNavigator.Extrassekarang menggunakan polaBuilderdan menambahkan kemampuan untuk menetapkan flagIntent.FLAG_ACTIVITY_apa pun aosp/828140NavController.onHandleDeepLinktelah diubah namanya menjadihandleDeepLinkaosp/836063- Sebagian class dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti
NavOptions,NavInflater,NavDeepLinkBuilder, danAppBarConfiguration, telah dijadikanfinalaosp/835681 - Metode
NavHostFragment.setGraph()yang tidak digunakan lagi telah dihapus aosp/835684 - Metode
NavigationUI.navigateUp(DrawerLayout, NavController)yang tidak digunakan lagi telah dihapus. aosp/835684 - Pembuatan Fragment telah dipindahkan ke
FragmentNavigator, memudahkan penetapan delegasi pembuatan Fragment keFragmentFactory. b/119054429 - Konstruktor untuk
NavGraphNavigatortidak lagi menggunakanContextaosp/835340 - NavigatorProvider sekarang
merupakan class, bukan antarmuka.
NavigatorProvideryang ditampilkan olehgetNavigatorProvider()tidak berubah fungsinya. aosp/830660 NavDestination.navigate()telah dihapus. Sekarang, Anda dapat memanggilnavigate()diNavigator. aosp/830663- Pemfaktoran ulang
Navigatorsecara signifikan, yang meniadakan kebutuhan akanOnNavigatorNavigatedListenerdan memintanavigatemenampilkanNavDestinationyang menjadi tujuan navigasi. - Instance
Navigatortidak dapat lagi mengirimkan peristiwa kemunculan keNavController. Sebaiknya gunakanOnBackPressedCallbackuntuk mengintersep penekanan tombol kembali dan memanggilnavController.popBackStack(). aosp/833716
Perbaikan Bug
popUpTosekarang berfungsi secara konsisten saat tujuannya adalah elemen<navigation>b/116831650- Memperbaiki sejumlah bug yang mengakibatkan
IllegalArgumentExceptionsaat menggunakan grafik bertingkat b/118713731 b/113611083 b/113346925 b/113305559 - Atribut
dataPatterntujuan<activity>sekarang akan mengisi argumen dari argumen non-String dengan memanggiltoString()b/120161365
Safe Args
- Safe Args mendukung Objek yang dapat diserialisasi, termasuk nilai Enum. Jenis Enum
dapat menetapkan nilai default menggunakan literal enum tanpa nama class
(misalnya
app:defaultValue="READ") b/111316353 - Safe Args mendukung array dari semua jenis yang didukung b/111487504
- Safe Args sekarang mengabaikan subfolder direktori resource b/117893516
- Safe Args menambahkan anotasi
@Overridejika sesuai b/117145301
Versi 1.0.0-alpha07
29 Oktober 2018
Fitur Baru
- Class AppBarConfiguration baru memungkinkan Anda menyesuaikan tujuan yang dianggap sebagai tujuan tingkat teratas. Baca dokumentasi terbaru untuk mengetahui detailnya. b/117333663
- Sekarang Anda dapat meneruskan argumen ke tujuan awal grafik b/110300470
- Deep link kini mendukung skema kustom dengan titik, tanda hubung, dan tanda plus. b/112806402
Perubahan yang Dapat Menyebabkan Gangguan
- Modul
navigation-testing-ktxtelah dikemas ke dalamnavigation-testing artifactdan tidak akan dipublikasikan lagi. - Artefak
navigation-testingkini memiliki dependensi pada library standar Kotlin. API telah diubah agar lebih konsisten dengan konvensi Kotlin, tetapi Anda dapat terus menggunakannya untuk pengujian aplikasi yang ditulis dalam Java. - Grafik navigasi terdaftar manifes metadata tidak lagi didukung. b/118355937
- Tindakan tidak dapat lagi ditambahkan ke tujuan <activity>. aosp/785539
Perbaikan Bug
- Deep link kini akan mengurai parameter kueri dengan benar. b/110057514
- Tujuan Activity sekarang menerapkan semua animasi masuk dan keluar dengan benar. b/117145284
- Memperbaiki masalah yang terjadi setelah perubahan konfigurasi saat menggunakan Navigator kustom. b/110763345
Safe Args
- Safe Args sekarang memiliki dependensi tetap pada Plugin Android Gradle 3.2.1. b/113167627
- Directions kini dapat dibuat untuk class internal. b/117407555
- Memperbaiki masalah terkait pembuatan Directions ke grafik <include>. b/116542123
Versi 1.0.0-alpha06
20 September 2018
Fitur Baru
- Transisi Elemen Bersama untuk tujuan Fragment dan Activity sekarang didukung b/79665225. Untuk informasi selengkapnya, lihat Mengimplementasikan navigasi dengan Komponen Arsitektur Navigation
- Memilih item di
NavigationViewsekarang akan menutup semua yang berisi sheet bawah b/112158843
Perubahan API
- Perubahan yang Dapat Menyebabkan Gangguan: Metode
navigate()Navigator kini menggunakan parameterNavigator.Extras. - Metode
getGraph()NavController sekarang adalahNonNullb/112243286
Perbaikan Bug
NavigationUI.setupWithNavController()tidak lagi membocorkan tampilan jika digunakan dengan tampilan dari tujuan individu b/111961977onSaveState()navigator sekarang hanya dipanggil satu kali b/112627079
Safe Args
- Class Directions tujuan Navigation kini memperluas class Directions induknya jika ada. b/79871405
- Class Directions dan Args kini memiliki implementasi
toString()yang berguna. b/111843389
Versi 1.0.0-alpha05
10 Agustus 2018
Perbaikan Bug
- Memperbaiki bug yang menyebabkan perilaku data sebelumnya yang salah. b/111907708
- Memperbaiki bug di
equals()class Generated Args. b/111450897 - Memperbaiki kegagalan pembuatan di Safe Args. b/109409713
- Memperbaiki konversi dari pengenal resource ke nama java. b/111602491
- Memperbaiki pesan error tentang nullability di plugin Safe Args.
- Menambahkan anotasi nullability yang hilang.
Versi 1.0.0-alpha04
19 Juli 2018
Navigation 1.0.0-alpha04 dan plugin gradle Safe Args yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.
Perubahan API/Perilaku
- NavHostFragment akan selalu mengatur Fragment saat ini sebagai fragmen navigasi utama, memastikan bahwa pengelola fragmen turunan muncul sebelum NavController luar muncul b/111345778
Safe Args
- Perubahan yang Dapat Menyebabkan Gangguan:
app:typetelah diubah menjadiapp:argTypeuntuk menghindari konflik dengan library lain seperti ConstraintLayout 2.0.0-alpha1 b/111110548 - Pesan error dari Safe Args kini dapat diklik b/111534438
- Class Args kini menegaskan bahwa atribut
NonNullsebenarnya bukan null. b/111451769 - Anotasi
NonNulltambahan telah ditambahkan ke NavDirections dan class yang dihasilkan Args b/111455455 b/111455456
Perbaikan Bug
- Memperbaiki masalah dengan tombol kembali sistem setelah melakukan deep link ke tujuan fragmen. b/111515685
Versi 1.0.0-alpha03
12 Juli 2018
Navigation 1.0.0-alpha03 dan plugin gradle Safe Args yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.
Perubahan API/Perilaku
- Metode NavigationUI.setupWithNavController untuk Toolbar telah ditambahkan b/109868820
- Metode NavigationUI.setupWithNavController untuk CollapsingToolbarLayout telah ditambahkan b/110887183
- popBackStack() sekarang menampilkan nilai salah ketika data sebelumnya kosong atau ketika ID tujuan yang diberikan tidak ada di data sebelumnya b/110893637
- FragmentNavigator kini mengabaikan operasi navigasi setelah FragmentManager memiliki status tersimpan, yang menghindari pengecualian "Tidak dapat melakukan tindakan ini setelah onSaveInstanceState" b/110987825
Safe Args
- Perubahan yang Dapat Menyebabkan Gangguan: Karakter non-alfanumerik dalam nama tindakan dan argumen akan diganti dengan CamelCase dalam nama metode NavDirections masing-masing
- Misalnya
DemoController.indexakan menjadisetDemoControllerIndexb/79995048 - Misalnya
action_show_settingsakan menjadiactionShowSettingsb/79642240
- Misalnya
- Perubahan yang Dapat Menyebabkan Gangguan: Argumen kini dianggap non-null secara default. Untuk mengizinkan nilai null pada argumen string dan parcelable, tambahkan
app:nullable="true"b/79642307 - Sekarang Anda dapat menggunakan
app:type="long"dengan defaultValues dalam format “123L” b/79563966 - Argumen parcelable kini didukung, menggunakan nama class yang memenuhi syarat untuk
app:type. Satu-satunya nilai default yang didukung adalah"@null"b/79563966 - Class Args sekarang mengimplementasikan
equals()danhashCode()b/79642246 - Plugin Safe Args kini dapat diterapkan ke project library. b/80036553
- Plugin Safe Args kini dapat diterapkan ke project fitur. b/110011752
Perbaikan Bug
- Memperbaiki masalah saat menavigasi selama metode siklus proses Fragment b/109916080
- Memperbaiki masalah saat menjelajahi grafik bertingkat beberapa kali b/110178671
- Memperbaiki masalah saat menggunakan
setPopUpTodengan tujuan pertama dalam grafik b/109909461 - Memperbaiki masalah saat semua nilai
app:defaultValuediteruskan sebagai String b/110710788 - aapt2 yang dipaketkan dengan Plugin Android Gradle 3.2 Beta 01 kini menambahkan aturan keep untuk setiap atribut
android:namedalam file XML Navigation b/79874119 - Memperbaiki kebocoran memori saat mengganti FragmentNavigator default b/110900142
Versi 1.0.0-alpha02
7 Juni 2018
Perubahan Perilaku
FragmentNavigatorsekarang menggunakansetReorderingAllowed(true). b/109826220Navigation sekarang meng-URLDecode argumen yang diurai dari URL deep link. b/79982454
Perbaikan Bug
Memperbaiki
IllegalStateExceptionsaat memanggil navigasi dari metode siklus proses Fragment. b/79632233Navigation sekarang bergantung pada Support Library 27.1.1 untuk memperbaiki kedipan saat menggunakan animasi. b/80160903
Memperbaiki
IllegalArgumentExceptionsaat menggunakan defaultNavHost="true" sebagai fragmen turunan. b/79656847Memperbaiki
StackOverflowErrorsaat menggunakan NavDeepLinkBuilder. b/109653065Memperbaiki
IllegalArgumentExceptionsaat menavigasi kembali ke grafik bertingkat. b/80453447Memperbaiki masalah Fragment yang tumpang-tindih saat menggunakan
launchSingleTop. b/79407969Navigation sekarang membuat data sebelumnya yang benar dan bersifat sintetis untuk grafik bertingkat. b/79734195
NavigationUI kini akan menyorot item yang benar saat grafik bertingkat digunakan sebagai
MenuItem. b/109675998
Perubahan API
Atribut
clearTaskuntuk tindakan dan API terkaitnya diNavOptionstidak digunakan lagi. b/80338878Atribut
launchDocumentuntuk tindakan dan API yang diatribusikan diNavOptionstidak digunakan lagi. b/109806636
Versi 1.0.0-alpha01
8 Mei 2018
Navigation menyediakan framework untuk membuat navigasi
dalam aplikasi. Rilis awalnya adalah 1.0.0-alpha01.