Navigasi
Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
11 Desember 2024 | 2.8.5 | - | - | 2.9.0-alpha04 |
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.8.4" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.8.4" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
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.8.4" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.4" 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.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-reified yang 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 menyediakan API reified dan KClass.
direalisasikan | 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.setStartDestination
khusus Kotlin untuk keamanan jenis disembunyikan dari sumber Java. (Ic640c, b/364634035)
Perbaikan Bug
- Dari Navigation
2.8.5
: Memperbaiki masalah saatNavHost
dapat menampilkan pengecualian di dalamPredictiveBackHandler
jika data sebelumnya dimunculkan ke 1 entri dan kembali sistem dipicu dalam frame yang sama. (I1a429, b/375343407) - Dari Navigation
2.8.5
: MemperbaikiNavDestination
NullPointerException
saat memperbaruistartDestination
grafik. (I99421, b/361560785)
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 navigasi kini mendukung class nilai sebagai rute atau sebagai jenis argumen rute. (I9344a, b/374347483)
Perbaikan Bug
- Memperbaiki
ConcurrentModificationException
yang dapat terjadi saatLifecycleObserver
yang dilampirkan keNavBackStackEntry
memicu perubahan pada data sebelumnya saatLifecycleOwner
host 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 menerapkan antarmuka
SupportingPane
yang menunjukkan kepadaNavController
bahwa tujuan ini akan ditampilkan bersama tujuan lainnya. Dengan menggunakan antarmuka ini, beberapa tujuan dapat menjadiRESUMED
secara bersamaan, misalnya. (Id5559) - Dari Navigation
2.8.3
: Menambahkan pemeriksaan lint baru untuk modulnavigation-common
,navigation-runtime
, dannavigation-compose
guna membantu mengidentifikasi rute yang aman dari jenis yang tidak dianotasi dengan benar menggunakan@Serializable
. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilder
danNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Dari Navigation
2.8.3
: Menambahkan pemeriksaan lint baru untuk modulnavigation-common
,navigation-runtime
, dannavigation-compose
guna membantu mengidentifikasi rute yang aman dari jenis dengan argumen Enum yang tidak dianotasi dengan benar menggunakan@Keep
. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilder
danNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Perubahan Perilaku
- Mencoba menggunakan
NavController
yang sebelumnya telahDESTROYED
kini akan menyebabkanIllegalStateException
. (I520da, b/369616172)
Perbaikan Bug
- Memperbarui pengecualian class Enum not found untuk menyarankan penggunaan anotasi
@Keep
jika class Enum dihapus dalam build yang diminifikasi. (I90e79, b/358137294)
Masalah Umum
- Ada masalah dengan aturan lint baru yang ditambahkan di
Navigation 2.8.*
yang menyebabkan errorObsolete custom lint check
saat mencoba menjalankan lint dengan Plugin Android Gradle 8.4+. (b/368070326, b/371463741)
Versi 2.8
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
NavHost
dapat menampilkan pengecualian di dalamPredictiveBackHandler
jika data sebelumnya dimunculkan ke 1 entri dan kembali ke sistem dipicu dalam frame yang sama. (I1a429, b/375343407) - Memperbaiki
NavDestination
NullPointerException
saat memperbaruistartDestination
grafik. (I99421, b/361560785) - Memperbaiki masalah yang menyebabkan animasi skala yang tidak terduga saat menggunakan Navigation Compose dan memanggil navigasi dalam frame yang sama dengan animasi saat ini berakhir. (I26cb1, b/353294030)
- Memperbaiki
ConcurrentModificationException
yang dapat terjadi saatLifecycleObserver
yang dilampirkan keNavBackStackEntry
memicu perubahan pada data sebelumnya saatLifecycleOwner
host seperti Aktivitas atau Fragmen yang berisi mengubah status siklus prosesnya. (Ia9494)
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 navigasi kini mendukung class nilai sebagai rute atau sebagai jenis argumen rute (I9344a, b/374347483)
Perbaikan Bug
- Dari Navigation
2.9.0-alpha01
: Mencoba menggunakanNavController
yang sebelumnya telahDESTROYED
kini 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-compose
untuk membantu mengidentifikasi rute aman jenis yang tidak dianotasi dengan benar menggunakan@Serializable
. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilder
danNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Menambahkan pemeriksaan lint baru untuk modul
navigation-common
,navigation-runtime
, dannavigation-compose
guna membantu mengidentifikasi rute yang aman dari jenis dengan argumen Enum yang tidak dianotasikan dengan benar menggunakan@Keep
. Pemeriksaan ini diterapkan ke semua fungsi ekstensiNavGraphBuilder
danNavDeepLinkBuilder
. (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 check
saat mencoba menjalankan lint dengan Plugin Android Gradle 8.4+. (I1be3d, b/368070326, b/371463741)
Masalah Umum
- Lint navigasi akan menampilkan error Pemeriksaan lint kustom yang 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
- Navigation Type Safety kini mendukung class Serializable yang menyertakan
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
, danList<Double>?
tanpa memerlukanNavType
kustom. (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
popBackStack
yang menggunakan jenis class reified saat mencobapopBackStack
menggunakan API yang aman untuk jenis. (Ief161, b/358095343)
Perbaikan Bug
- Navigasi kini mewajibkan rute yang diteruskan ke
startDestination
NavGraph
berisi nilai untuk semua argumen yang diperlukan, yang mencakup argumen yang non-nullable dan tidak memiliki nilai default. (I18e74, b/362594265) - Safe args navigasi telah menambahkan dukungan untuk string non-nullable sehingga nilai "null" akan diuraikan dan disimpan ke dalam paket apa adanya. Hal ini berbeda dengan perilaku yang ada saat nilai "null" diuraikan menjadi objek null. Perubahan ini hanya berlaku untuk jenis String non-nullable. String nullable tetap tidak berubah. (I08b4a, b/348936238)
NavDestination
tidak dapat lagi di-deeplink kecuali melalui deep link yang ditambahkan secara eksplisit ke tujuan. Hal ini juga berarti bahwa Anda hanya dapat menavigasi ke rute tujuan dengan overload fungsi navigasi yang menggunakan rute string. Tindakan ini memperbaiki 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 mengupdate. (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 Navigasi
- Navigation kini menyediakan keamanan jenis untuk DSL Kotlin (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 meet Type Safety untuk mengetahui informasi selengkapnya.
Kembali Prediktif Navigation Compose
- Navigation Compose kini memberikan dukungan untuk kembali dalam aplikasi Prediktif melalui API
SeekableTransitionState
baru dari compose-animation. Hal ini memungkinkan Anda menggunakan gestur kembali untuk melihat tujuan sebelumnya dengan Transisi kustom sebelum memutuskan untuk melakukan commit transaksi melalui gestur yang telah selesai atau membatalkan.
Composable Fragmen Navigasi
- Menambahkan artefak
navigation-fragment-compose
baru yang menyertakan alternatifComposableNavHostFragment
keNavHostFragment
yang memungkinkan Anda menambahkan tujuan composable ke file XML Navigasi. Setiap tujuancomposable
harus dinyatakan sebagai metode@Composable
level atas tanpa argumen yang namanya sepenuhnya memenuhi syarat dan digunakan sebagai atributandroid:name
di setiap tujuan. Saat menavigasi ke salah satu tujuan ini, fragmen penampung akan 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 arrayNavType
default (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
, danStringArrayType
) kini diwarisi dari class baru ini. NavType
kini 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 level atas sebagai argumen keamanan 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 Enums yang bertingkat dalam class lain yang didukung secara default. Enums tingkat atas akan didukung dalam rilis berikutnya.
Perbaikan Bug
- Saat menavigasi ke tujuan duplikat atau bersama, navigasi akan memprioritaskan tujuan yang cocok dan terdekat dari lokasi saat ini dalam grafik. (Ic89a4, b/352006850)
- Navigasi dalam safe args kini telah menambahkan
NavType.EnumType
baru. Artinya, jenisEnum
tidak lagi memerlukanNavType
kustom. Perhatikan bahwaSerialName
Enum
harus berupa nama yang sepenuhnya memenuhi syarat default. (I66d22, b/346475493) - Navigasi dalam safe args telah menambahkan dukungan bawaan untuk jenis argumen nullable, termasuk
Int?
,Long?
,Float?
,Boolean?
, danEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) startDestination
NavGraph
kini akan menggunakan nilai argumen default jika rutestartDestination
yang diteruskan keNavGraph
sama 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
WrongStartDestinationType
tidak memeriksa objek Companion pada jenis class yang diteruskan, sehingga 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
singleTop
saatNavGraphs
bertingkat memiliki rutestartDestination
yang 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
- Navigasi 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 saat ini fitur ini tidak didukung. (I052b0, b/341319151) - API pengujian
SavedStateHandleFactory
kini dapat digunakan dalam pengujian non-Android, tetapi akan mengharuskan Robolectric untuk mendukung penguraian argumen dengan Bundle. (I76cdc, b/340966212) - Memperbaiki error dari pemulihan status saat melanjutkan aplikasi setelah proses dihentikan dengan menggunakan Navigasi Keamanan Jenis di Compose. (Ia8f38, b/341801005)
- Memperbaiki masalah di Navigation Compose saat setelah membatalkan Gestur Kembali Prediktif,
NavBackStackEntry
yang ditampilkan pengguna tidak pernah kembali ke Status Siklus ProsesRESUMED
. Hal ini juga memastikan tujuan yang ditampilkan kembali dianimasikan dengan benar, bukan langsung muncul setelah fling. (I97a0c, b/346608857) - Saat menggunakan Kembali prediktif dengan Navigation Compose, tujuan yang dimunculkan kini akan memiliki urutan z yang tepat, yang dianimasikan 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
CollectionNavType
memiliki metodeemptyCollection()
abstrak baru. Ganti ini untuk menangani koleksi kosong yang diteruskan sebagai argumen. (Ie4d84, b/341723133)
Perbaikan Bug
- Menambahkan dokumentasi tentang
NavType.serializeAsValue
danserializeAsValues
untuk menyoroti bahwa output akhir harus dienkode Uri. (Ida6bd, b/344943214) - Memperbaiki error saat memanggil
toRoute<T>
dengan argumenCollectionNavType
null. Saat menavigasi denganCollectionNavType
null, argumen output akan menjadi nilai default yang dideklarasikan di class Serializable, atau nilai returnemptyCollection()
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
ClassCastException
saat menggunakanNavBackStackEntry.toRoute
denganNavType
kustom nullable. (I1c29b, b/342239473) - Memperbaiki masalah pemulihan status data sebelumnya Navigasi yang disebabkan saat mencoba memulihkan entri data sebelumnya 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 pemanggilan
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 parametertypeMap
untuk jenis argumen kustom. (Ie39fb, b/339026523)- Menambahkan API pengujian ke
navigation-testing
untuk membuatSavedStateHandle
dari objek Serializable Kotlin. (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 eksperimental sebelumnya 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 di 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 meet Type Safety untuk mengetahui informasi selengkapnya.
Fitur Baru
- Artefak
navigation-fragment-compose
kini menyediakan komposisiLocalFragment
lokal untuk metode composable dalamComposableFragment
. (If35e5) NavType
kini 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-compose
baru yang menyertakan alternatifComposableNavHostFragment
keNavHostFragment
yang memungkinkan Anda menambahkan tujuancomposable
ke file XML Navigasi. Setiap tujuancomposable
harus dinyatakan sebagai metode@Composable
level atas tanpa argumen yang namanya sepenuhnya memenuhi syarat dan digunakan sebagai atributandroid:name
di setiap tujuan. Saat menavigasi ke salah satu tujuan ini, fragmen penampung akan 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 platform 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 Serialisasi Kotlin telah dimulai. API ini belum selesai dan ditandai dengan anotasi
ExperimentalSafeArgsApi
. Anotasi ini akan dihapus saat seluruh platform 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
NavHost
kini menggunakanAlignment.TopStart
sebagai argumen contentAlignment default. Hal ini selaras dengan default untukAnimatedContent
dan memperbaiki beberapa instance skala yang tidak terduga dari transisi tengah. (I09e72, b/330111602)- Saat menggeser gestur kembali prediktif saat menggunakan Navigation Compose,
NavHost
kini akan menyelesaikan transisi kustom dengan benar, bukan langsung selesai. (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
startDestination
NavGraph
secara langsung di rutestartDestination
tanpa mengandalkandefaultValue
. Hal ini juga berlaku untukNavGraph
startDestinations
bertingkat. (I0e0b5, b/109505019, b/188693139)
Perubahan API
- Menambahkan class
CollectionNavType<T>
abstrak baru, subclassNavType<T>
untuk argumen berbasis koleksi seperti daftar, array, peta. (Ic6d63, b/188693139) - Semua array
NavType
default (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
, danStringArrayType
) kini berjenisCollectionNavType
(Idcf79, b/188693139) NavType
kini menyediakanvalueEquals
API terbuka baru yang menentukan apakah dua nilai dari jenis yang sama sama dengan satu sama lain. (I6cb97, b/327229511)
Perbaikan Bug
- Parameter kueri di deep link kini memungkinkan nilai dalam bentuk kurung kurawal di sekitar nama argumen (yaitu
{argName}
) sebagai nilai yang valid untukNavTypes
berbasis string. Tindakan ini memperbaiki masalah saat nilai tersebut akan dianggap tidak valid (atau tidak ada nilai) untuk semua jenis. (I18302, b/327274038) - Fungsi
NavController
yang mendukung rute sepertinavigate
ataupopBackStack
kini dapat mencocokkan rute dengan benar yang diisi dengan argumen ArrayNavTypes
. (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
SizeTranform
untuk transisi di Navigation Compose dengan menentukannya sebagai bagian dari inisialisasi untuk fungsicomposable
dan/ataunavigation
. (I91062, b/296912651)
Perbaikan Bug
- Memperbaiki masalah saat
NavHost
di 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.savedStateHandle
kini ditandai sebagai@MainThread
karena menggunakan kode yang harus berada di thread utama. (Ibb988, b/299523245)
Perbaikan Bug
- Memperbaiki masalah di Navigation yang menyebabkan ViewModel
NavGraph
menjadiDESTROYED
terlalu cepat karenaViewModel
entri terkait bukan 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
SeekableTransitionState
baru dari compose-animation. Hal ini memungkinkan Anda menggunakan gestur kembali untuk melihat tujuan sebelumnya dengan Transisi kustom sebelum memutuskan untuk melakukan commit 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
BackStackState
saat beberapa panggilansaveState
di tujuan akan menyebabkan beberapa status disimpan, tetapi hanya status pertama yang dapat dipulihkan. (I598b0, b/309559751) - Memperbaiki masalah saat argumen non-String tidak akan ditampilkan dengan benar saat menggunakan helper
NavigationUI
untuk mengisi judul panel aplikasi. (#636, b/316676794)
Pembaruan Dependensi
- Navigation Compose kini bergantung pada Compose
1.7.0-alpha01
yang 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
NavigationUI
untuk 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 Navigasi
2.8.0-alpha01
: Memperbaiki kebocoranBackStackState
saat beberapa panggilansaveState()
pada satuNavBackStackEntry
akan menyebabkan beberapa status disimpan, tetapi hanya status pertama yang disimpan yang dapat dipulihkan. (I598b0, b/309559751) - Di-backport dari Navigation
2.8.0-alpha01
: Memperbaiki masalah saat argumen non-String tidak akan ditampilkan dengan benar saat menggunakan helperNavigationUI
untuk mengisi judul panel aplikasi. (#636, b/316676794)
Kontribusi Eksternal
- Terima kasih SimonMarquis karena telah memperbaiki masalah tampilan untuk argumen non-String saat menggunakan helper
NavigationUI
untuk 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
NavGraph
equals()
kini mempertimbangkan node grafik lain dengan benar, bukan hanya node yang memanggil. Hal ini akan memastikan bahwa grafik yang memiliki node dengan ID yang berbeda tidak akan 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) perbandingan dua grafik secara signifikan. Artinya, panggilan seperti
setGraph
yang secara internal membandingkan grafik baru dengan grafik yang ada jauh lebih cepat dan menghasilkan lebih sedikit frame yang dilewati. Terima kasih Michał Z atas analisis menyeluruh yang menghasilkan peningkatan ini. (I6ad62) NavHost
kini akan merender tujuan awal pada penerusan komposisi pertama, bukan menunggu penerusan kedua untuk membaca status yang diperbarui. (I439a7, b/304852206)
Perbaikan Bug
- Memperbaiki masalah saat data sebelumnya akan muncul jika Anda memanggil
setGraph
lebih 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 daftar
NavController.visibleEntries
. (I67586, b/287969970) - Saat entri muncul, diikuti dengan perubahan konfigurasi,
ViewModel
entri kini akan dihapus dengan benar jikasaveState
bernilai salah. (Idf242, b/298164648) - Memperbaiki masalah yang menyebabkan
NavController
dapat menangani deep link yang sama lebih dari sekali jika data sebelumnya benar-benar kosong sebelum perubahan konfigurasi atau panggilan kesetGraph
hanya jika Intent yang masuk memiliki tandaFLAG_ACTIVITY_NEW_TASK
yang ditetapkan. (I73c7f)
Update Dependensi
- Navigasi dengan Fragment kini bergantung pada Fragment 1.6.2, memperbaiki masalah saat instance
ViewModel
fragmen bertingkat tidak akan 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
popUpTo
agar dapat menggunakan rute dengan argumen untuk memungkinkan kembali ke entri tertentu yang menggunakan argumen yang sama persis, yang cocok dengan dukungan yang ditemukan dipopBackStack
. (I731f4, b/299255572)
Perbaikan Bug
- Memperbaiki masalah saat mengganggu navigasi dengan navigasi lain dengan
popUpTo
akan menyebabkanFragmentNavigator
mengalami error. (I3c848, b/301887045) - Memperbaiki masalah saat menekan kembali sistem menyebabkan
currentDestination
tidak diupdate dengan benar agar cocok dengan Fragment yang ditampilkan. (Id0d6c, b/289877514) - Siklus proses
DialogFragment
kini akan berpindah dengan benar ke statusRESUMED
saat 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 Navigasi dengan Fragment yang menyebabkan daftar
visibleEntries
berisi entri yang salah. (I5caa9, b/288520638) - Memperbaiki masalah yang menyebabkan tujuan Floating Window (yaitu
Dialogs
,Bottomsheets
, dll.) tidak pernah mendapatkan callback LifecycleRESUMED
. (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 antararememberSaveable
danNavHost
Navigation Compose yang akan menyebabkan status tujuanrememberSaveable
dan instanceSavedStateHandle
milikViewModel
tidak dipulihkan dengan benar setelah penghentian dan pembuatan ulang proses. (b/298059596, b/289436035) - Memperbaiki masalah saat menampilkan beberapa dialog di Navigation Compose secara bersamaan dengan dialog yang sebagian dikaburkan (misalnya, bukan dialog paling atas) 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 paling atas akan menyebabkan dialog paling atas yang baru terjebak dalam status Siklus Proses
STARTED
, bukan berpindah dengan benar keRESUMED
. (aosp/2629401, b/286371387) - Safe Args Navigasi tidak lagi membuat instance tugasnya dengan cepat jika tidak benar-benar dieksekusi. (I0e385, b/260322841)
Pembaruan Dependensi
- Navigation Compose kini 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 Navigasi dengan Compose saat menggunakan
Scaffold
, Anda mungkin mendapatkan error karena mencoba mengaksesLifecycle.State.DESTROYED
ViewModel
. (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 menetapkan transisi kustom yang ada di AnimatedNavHost
didukung secara langsung di NavHost
.
Tidak ada perubahan tambahan yang akan dilakukan pada Animasi Navigasi Accompanist dan kami akan segera menghentikannya secara resmi, beserta panduan tentang cara bermigrasi kembali ke Navigation Compose itu sendiri, tetapi ini akan menjadi kebalikan dari panduan migrasi tanpa perubahan API lain yang diperlukan jika Anda sudah menggunakan Accompanist alpha terbaru (0.31.2-alpha
). (b/197140101)
Perbaikan Bug
- NavHost di Navigation Compose kini dengan benar mengintersep panggilan kembali sistem bahkan setelah Aktivitas DIHENTIKAN dan DILANJUTKAN. (Icb6de, b/279118447)
Update Dependensi
- Navigation kini bergantung pada Compose
1.5.0
dari1.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
EnterTransition
danExitTransition
yang dibuat sebagai bagian dariNavHost
berpotensi tetap berada dalam memori bahkan setelahNavHost
dihapus dari komposisi. (I893d0)
Masalah Umum
- Ada masalah dari Navigation 2.6.x yang saat menavigasi dengan popUpTo dapat menyebabkan
IllegalArgumentException
. Pengecualian ini mungkin dapat dihindari dengan menyusun ulang grafik Anda, mirip dengan saran yang disarankan 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
NavHost
di Navigation Compose kini mengintersep panggilan kembali sistem dengan benar meskipun setelahActivity
menjadiSTOPPED
danRESUMED
. (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 menetapkan transisi kustom yang ada di AnimatedNavHost
didukung secara langsung di NavHost
.
Tidak ada perubahan tambahan yang akan dilakukan pada Animasi Navigasi Accompanist dan kami akan segera menghentikannya secara resmi, beserta panduan tentang cara bermigrasi kembali ke Navigation Compose itu sendiri, tetapi ini akan menjadi kebalikan dari panduan migrasi tanpa perubahan API lain yang diperlukan jika Anda sudah menggunakan Accompanist alpha terbaru (0.31.2-alpha
). (b/197140101)
Perbaikan Bug
- Dari Navigation
2.6.0-rc02
: Memperbaiki masalah pada Navigasi di Fragmen saat menavigasi denganpopUpTo
dan memunculkan fragmen dari data sebelumnya tanpa membuat ulang tampilannya akan menyebabkan 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 Navigasi sejak versi 2.5.0
arguments
NavBackStackEntry
danarguments
yang diteruskan keOnDestinationChangedListener
sekarang 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 instancearguments
atauOnDestinationChangedListener
lainnya.NavDeepLink
kini mendukung nilai default untuk array, yang memungkinkan dukungan bagi parameter kueri berulang yang akan dipetakan ke jenis array argumen.NavType
kini juga menyertakan metode default yang dapat diganti untuk menggabungkan dua nilai yang diuraikan.- Subclass kustom
NavType
kini dapat menggantiserializeAsValue
untuk melakukan serialisasi nilai ke dalam String, yang memungkinkan serialisasi dan deserialisasi (melaluiparseValue
) dienkapsulasi sepenuhnya dalam classNavType
.StringType
kini mengganti metode ini untuk memanggilUri.encode
padaString
tertentu.
Perubahan penting pada Navigation Compose sejak versi 2.5.0
- Saat melihat pratinjau composable dengan
NavHost
, composable tersebut kini akan menampilkanstartDestination
NavGraph 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
NavDeepLink
kosong menggunakannavDeepLink
Kotlin 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
NavHostFragment
tidak lagi mengintersep tombol kembali sistem itu sendiri. Hal ini memungkinkanFragmentManager
yang mendasarinya menangani kembali sistem. Hal ini memungkinkan Fragment1.7.0-alpha01
dan yang lebih baru untuk memberikan animasi Kembali Prediktif Dalam Aplikasi di perangkat Android U.- Saat menggunakan Navigation dengan Fragment, mencoba melakukan
FragmentTransaction
secara manual yang menambahkan fragmen ke data sebelumnyaFragmentManager
kini akan menampilkanIllegalArgumentException
. Anda harus selalu menambahkan fragmen melaluinavigate()
API. - Saat menggunakan string yang sama persis dengan
${applicationId}
sebagai placeholder di atributapp:data
danapp:dataPattern
dalam elemen aktivitas file XML navigasi, placeholder akan otomatis diisi denganpackageName
konteks setelah inflasi. FragmentNavigator
kini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries
. Hal ini berartiNavBackStackEntry
Lifecycle
kini akan menunggu penyelesaian efek khusus fragmen masuk dan keluar sebelum memindahkanLifecycle.State
akhir.DialogFragmentNavigator
kini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries
. Hal ini berartiNavBackStackEntry
Lifecycle
kini akan menungguDialogFragment
Lifecycle
dipindahkan keDESTROYED
sebelum beralih keDESTROYED
itu sendiri.NavHostFragment
kini memungkinkan Anda mengambilNavController
segera setelahNavHostFragment
dilampirkan 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
),NavigationUI
sekarang 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 fungsiisTopLevelDestination
baru padaAppBarConfiguration
. - Integrasi
setupWithNavController
diNavigationUI
agar berfungsi dengan panel aplikasi atas kini akan mengurai nilaiR.string
untuk argumenReferenceType
yang ditemukan diandroid:label
ke dalam nilai String-nya, bukan menghasilkan output bilangan bulat resource yang dibuat otomatis. NavigationUI
kini menyediakan log jika gagal menavigasi melaluiMenuItem
yang 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 Navigasi di Fragmen saat menavigasi dengan
popUpTo
dan memunculkan fragmen dari data sebelumnya tanpa membuat ulang tampilannya akan menyebabkan 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 Navigasi dengan fragmen saat menghapus fragmen melalui navigasi dengan
popUpTo
dalam callback siklus prosesonResume()
-nya 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
NavBackStackEntry
kini menyediakan implementasitoString
kustom. (Iff00b)
Perbaikan Bug
- Saat menggunakan Navigation dengan Fragment, mencoba melakukan
FragmentTransaction
secara manual yang menambahkan fragmen ke data sebelumnyaFragmentManager
kini akan menampilkanIllegalArgumentException
. Anda harus selalu menambahkan fragmen melaluinavigate()
API. (I6d38e) - Jika ada
navigate
yang menambahkan entri danpopBackStack
yang menghapusnya dalam frame yang sama, entri teratas yang dihasilkan di data sebelumnya kini akan konsisten kembali keRESUMED
Lifecycle.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
NavDestination
berisiNavArgument
non-nullable, rute tujuan ini harus berisi placeholder untuk argumen yang bernama sama denganNavArgument
non-nullable. (Ic62bf, b/274697949) - Navigasi deeplink berdasarkan
Action/MimeType
kini akan gagal jika operasi navigasi tidak memilikiNavArgument
non-nullable yang diperlukan olehNavDestination
yang cocok denganAction/MimeType
. (Ibfa17, b/271777424) - Saat
NavController
menetapkan grafik dengan rute dan tujuan yang sama seperti grafik sebelumnya, kini grafik tersebut akan mengganti node grafik saat ini dan tujuan data sebelumnya dengan instance baru dengan benar. Hal ini memperbaiki error saat menggunakanonLaunchSingleTop
tanpa menyimpan status di Navigation Compose. Tindakan ini juga memperbaiki error saat menavigasi ke tujuan yang terkait dengan build grafik root dan data sebelumnya yang salah. (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
NavHostFragment
kini memungkinkan Anda mengambilNavController
segera setelahNavHostFragment
dilampirkan keFragmentManager
, bukan hanya setelahonCreate()
. (Ic6382, b/220186282)
Perbaikan Bug
- Memperbaiki
NullPointerException
saat memunculkan grafik bertingkat yang menyertakan argumen non-nullable. (6b3581, b/249988437) - Saat menggunakan kembali sistem setelah melakukan navigasi dengan
popUpTo
, statusNavController
akan muncul ke entri yang benar. (I3a8ec, b/270447657) FragmentNavigator
kini akan memunculkan entri dengan benar saat data sebelumnya ditampilkan melalui kembali sistem ataupopBackStack()
dan apakah transaksi menggunakan efek untuk fragmen atau tidak. (I81bdf)- Menambahkan fragmen ke
FragmentManager
FragmentNavigator
tanpa 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
,clearBackStack
yang mengambil rute kini menggunakan pola rute dengan argumen nullable dan parameter kueri nullable (I22294, b/269302500) - Memperbaiki masalah saat memanggil
clearBackStack()
dariNavController
tidak 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
MenuItem
yang salah diBottomNavigationView
ditandai saat menggunakan Sistem kembali di antara tab. (I634f6, b/270447657) - Memperbaiki regresi di 2.6.0-alpha06 yang menyebabkan
NavBackStackEntry
tidak 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 menampilkanstartDestination
NavGraph secara default. (I2b89f)
Perubahan API
- Semua overload
NavController
navigate
sekarang dianotasi dengan@MainThread
untuk 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 Navigasi dengan Fragmen, Siklus Proses
NavBackStackEntry
gagal mencapaiRESUMED
saat menggunakanAnimation
API. (b/269646882) - Saat menggunakan Navigation dengan Fragment, dan menavigasi dengan
BottomNavigation
, jika Anda mencoba memulihkan data sebelumnya dengan beberapa entri,BottomMenuItem
tidak diperbarui dengan benar. (b/270447657) - Saat menggunakan Navigation dengan Fragment, setelah memulihkan status,
NavBackStackEntry
Lifecycle
tidak mendapatkanDESTROYED
saat fragmennya adalahDESTROYED
. (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)FragmentNavigator
kini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries
. Hal ini berartiNavBackStackEntry
Lifecycle
kini akan menunggu penyelesaian efek khusus fragmen masuk dan keluar sebelum memindahkanLifecycle.State
akhir. (I3cb19, b/238686802)DialogFragmentNavigator
kini menggunakan API transisi saat membuka dan memunculkanNavBackStackEntries
. Hal ini berartiNavBackStackEntry
Lifecycle
kini akan menungguDialogFragment
Lifecycle
dipindahkan keDESTROYED
sebelum beralih keDESTROYED
itu sendiri. (I53ee5, b/261213893)
Perubahan API
NavigatorState
kini menyediakanprepareForTransition
API untuk memungkinkanNavigator
memindahkanNavBackStackEntries
keLifecycle.State
menengah. (I42c21, b/238686802)- Anda kini dapat mengakses data sebelumnya yang terkait dengan
NavGraphNavigator
atauComposeNavigator
melalui propertibackstack
.ComposeNavigator
kini juga menampilkan callbackonTransitionComplete()
untuk menandaiNavBackStackEntry
yang telah menjalankan navigasi atau operasipopBackStack
sebagai selesai. (I02062, I718db, b/257519195)
Perbaikan Bug
- Status navigator kini tidak akan beroperasi saat menggunakan
push/popWithTransition
API dan entri sudah ditangani. (Iadbfa, b/261213893) - Saat menggunakan
launchSingleTop
denganNavGraph
bertingkat, semua tujuan yang dimulai dari tujuan asli kestartDestination
hanya akan ditambahkan dengan benar ke bagian atas data sebelumnya. (Id4bea, b/253256629) - Navigation kini akan mengganti instance
DialogFragment
dengan benar saat membuka tujuan yang sama dan menyetel flaglaunchSingleTop
sebagai 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
NavType
kini dapat menggantiserializeAsValue
untuk melakukan serialisasi nilai ke dalam String, yang memungkinkan serialisasi dan deserialisasi (melaluiparseValue
) dienkapsulasi sepenuhnya dalam classNavType
.StringType
kini mengganti metode ini untuk memanggilUri.encode
padaString
tertentu. (Ie5213, b/247637434) NavigationUI
kini menyediakan log jika gagal menavigasi melaluiMenuItem
yang 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
:NavHost
tidak lagi menyebabkanNoSuchElementException
saat 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
),NavigationUI
sekarang 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 fungsiisTopLevelDestination
baru padaAppBarConfiguration
. (Ie936e, b/238496771)
Perbaikan Bug
- Komponen
navigation:navigation-fragment
kini bergantung pada Fragment versi1.5.2
. (I00ba4) - Item menu yang dipilih tidak akan diperbarui lagi saat menavigasi ke tujuan
FloatingWindow
seperti 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
setupWithNavController
diNavigationUI
agar berfungsi dengan panel aplikasi atas kini akan mengurai nilaiR.string
untuk argumenReferenceType
yang ditemukan diandroid:label
ke dalam nilai String-nya, bukan menghasilkan output bilangan bulat resource yang dibuat otomatis. (I5f803, b/167959935) NavDeepLink
kini mendukung nilai default untuk array, yang memungkinkan dukungan bagi parameter kueri berulang yang akan dipetakan ke jenis array argumen.NavType
kini 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:data
danapp:dataPattern
dalam elemen aktivitas file XML navigasi, placeholder akan otomatis diisi denganpackageName
konteks setelah inflasi. (Iaabde, b/234223561) - Mencoba membuat
NavDeepLink
kosong menggunakannavDeepLink
Kotlin 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
NavDestination
baru untuk mengurai label dinamis dengan argumen dalam bentukandroid:label="{arg}"
menjadi String. Mendukung argumenReferenceType
dengan menguraikan nilaiR.string
ke dalam nilai String-nya. (I07d89, b/236269380)
Perubahan Perilaku
arguments
NavBackStackEntry danarguments
yang diteruskan keOnDestinationChangedListener
sekarang 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 instancearguments
atauOnDestinationChangedListener
lainnya. (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 flaglaunchSingleTop
ke benar (true). (I5a2f1, b/237374580) - Dari Navigation
2.5.2
: MemperbaikiIllegalStateException
yang 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
NavHost
tidak lagi menyebabkanNoSuchElementException
saat 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
launchSingleTop
sebagai benar (true). (I5a2f1, b/237374580) - Memperbaiki
IllegalStateException
yang disebabkan oleh navigasi ke grafik bertingkat ganda yang berbagi induk dengan tujuan awal yang baru muncul. (I9f7cb, b/243778589)
Pembaruan Dependensi
2.5.2
Navigation 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 Args
tidak 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 -
Navigation
kini memiliki kemampuan untuk menyediakanViewModelProvider.Factory
stateless melaluiCreationExtras
Lifecycle2.5.0
.
Navigation SafeArgs
Navigation Safe Args
telah mengupgrade dependensiAndroid Gradle Plugin
untuk bergantung pada7.0.4
, sehingga kompatibilitas untuk versi AGP sebelum7.0
akan diturunkan.- Menambahkan dukungan untuk atribut namespace build.gradle yang akan digunakan, bukan applicationId.
Perubahan Lainnya
visibleEntries
API 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 SafeArgs
tidak akan error lagi saat menggunakanapplicationIdSuffix
dan namespace tanpaapplicationId
atau saatapplicationId
dan namespace berbeda. (I754b1, b/233119646)NavArgument
kini 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.xml
Anda.(Ic15a5, b/178403185)
Perbaikan Bug
- Cakupan composable di
NavHost
danDialogHost
kini dibuang dalam urutan yang diharapkan, yaitu composable dalam dibuang sebelum composable luar. (I157e6) - Navigation SafeArgs kini menggunakan
PathSensitivity.RELATIVE
diArgumentsGenerationTask
untuk memungkinkan kemampuan merelokasi cache. Ini berarti entri cache kini dapat digunakan kembali dari build CI ke build lokal. (I5f67c, b/173420454) - Aturan lint
UnrememberedGetBackStackEntryDetector
telah diperbarui untuk memastikan bahwa panggilanremember
yang mengelilingi panggilan kegetBackStackEntry()
juga meneruskan objekNavBackStackEntry
sebagai 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
DialogNavigator
sekarang menggunakanpopWithTransition
saat menjalankan panggilandismiss()
. Tindakan ini memperbaiki kondisi race saat menggunakanViewModel
dalam tujuandialog
yang akan menyebabkanIllegalStateException
ketika 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 memperbaikiIllegalStateException
ketika menyarangkan satuNavHost
dalamNavHost
lain 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
visibleEntries
tidak lagi bersifat eksperimental. (I4829f, b/225394514)
Perbaikan Bug
- NavHost kini bergantung pada
visibleEntries
dariNavController
untuk menentukan entri mana yang akan ditulis. Ini berarti bahwa saat menggunakan NavHost bertingkat,NavHost
kini akan dianimasikan dengan benar. (I4ba2b, b/225394514) visibleEntries
StateFlow
yang disediakan olehNavController
kini didasarkan pada status Siklus Proses maksimum entri, bukan status Siklus Proses saat ini. Artinya, meskipun siklus proses hostnavController
berada di bawah STARTED, daftar keseluruhan yang terlihat akan tetap sama. (I9e2a8, b/225394514)SavedStateViewFactory
sekarang mendukung penggunaanCreationExtras
meskipun diinisialisasi denganSavedStateRegistryOwner
. Jika tambahan disediakan, argumen yang diinisialisasi akan diabaikan. (I6c43b, b/224844583)NavDeepLink
kini 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 Args
tidak 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
CreationExtras
keby navGraphViewModels
untuk membuatViewModel
. (I29217, b/217618359)
Perbaikan Bug
NavDeepLinks
kini mendukung karakter baris baru yang dienkode yang disematkan dalam rute/URI deep link dengan benar. (I513d1, b/217815060)CreationExtras
kini berfungsi dengan benar saat digunakan denganNavBackStackEntries
untuk membuat ViewModels. (I69161, b/217617710)- Navigation Safe Args kini mendukung penggunaan namespace yang ditentukan
di
build.gradle
sebagai 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
:NavHostFragment
kini akan menetapkanOnBackPressedDispatcher
dengan benar saat menggunakan viewbinding dengan grafik bertingkat. (Ifbb51, b/214577959) - Dari Navigation
2.4.1
: Saat melakukan deep linking melalui beberapaNavGraph
bertingkat, 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
NavBackStackEntry
kini terintegrasi dengan ViewModel CreationExtras, yang diperkenalkan sebagai bagian dari Lifecycle2.5.0-alpha01
. (Ib9fe2, b/207012490)
Perbaikan Bug
- Memperbaiki masalah saat mengakses
ViewModel
yang dibuat melaluiby navGraphViewModels()
darionCreate()
Fragment akan gagal denganIllegalStateException
. (I8a14d) NavDeepLink
tidak 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
:NavDeepLinks
kini 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.gradle
sebagai pengganti paket dalam AndroidManifest. (I659ef, b/217414933) - Di-backport dari Navigation
2.5.0-alpha04
:Navigation Safe Args
tidak 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
NavHostFragment
kini akan menetapkanOnBackPressedDispatcher
dengan benar saat menggunakan viewbinding dengan grafik bertingkat. (Ifbb51, b/214577959)- Saat melakukan deep linking melalui beberapa
NavGraph
bertingkat, 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
:NavDeepLink
tidak 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-ktx
telah dipindahkan ke artefak utamanya masing-masing. Artefak-ktx
akan terus dipublikasikan, tetapi sepenuhnya kosong. - Artefak
navigation-fragment
sekarang berisi implementasi bawaan dari tata letak dua panel melaluiAbstractListDetailFragment
baru. Fragmen ini menggunakanSlidingPaneLayout
untuk mengelola panel daftar (yang disediakan oleh subclass Anda) dan panel detail, yang menggunakanNavHostFragment
sebagai implementasinya, seperti yang dapat dilihat di contoh implementasi kami. - Metode
currentBackStackEntryAsFlow()
padaNavController
menyediakanFlow
yang akan muncul setiap kaliNavBackStackEntry
saat ini berubah. Alur ini dapat digunakan sebagai alternatif untuk mengelolaOnDestinationChangedListener
secara manual. - NavController sekarang menawarkan kemampuan untuk mengambil daftar semua instance
NavBackStackEntry
yang terlihat sebagaiStateFlow
melalui propertivisibleEntries
eksperimental. - Sekarang Anda dapat memperluas class
NavType
untuk 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 diNavGraph
yang akan menemukan tujuan awal sebenarnya yang akan ditampilkan saat Anda membuka grafik, meskipunstartDestination
itu sendiri merupakanNavGraph
bertingkat.getHierarchy()
adalah fungsi diNavDestination
yang dapat digunakan untuk memverifikasi apakah tujuan tertentu berada dalam hierarki tujuan lain.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
Metode
NavigationUI
yang menggunakanBottomNavigationView
telah 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
popUpTo
pada 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
NavHost
yang memungkinkan Anda membuat grafik navigasi melalui DSL Kotlin, menggunakan tujuancomposable
dandialog
, 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
Lifecycle
ke setiap tujuan composable. Setiap tujuan hanya mencapai statusRESUMED
saat transisi masuk selesai dan langsung turun keSTARTED
saat transisi keluar dimulai, sehingga memungkinkan Anda menghindari semua masalahIllegalStateException
dan multi-sentuh hanya dengan memicu panggilannavigate
ketika statusLifecycle
adalahRESUMED
. - Cakupan
ViewModel
(melaluiviewModel()
API dari Lifecycle ViewModel Compose2.4.0
atauhiltViewModel()
dari Hilt Navigation Compose1.0.0
di 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
rememberSaveable
di 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
NavController
dan 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 menghubungkanNavController
ke 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:popUpToSaveState
danapp:restoreState
untuk menyimpan status tujuan apa pun yang muncul melaluiapp:popUpTo
dan 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 booleanrestoreState
dan properti booleansaveState
di 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
NavOptions
secara manual melaluiNavOptions.Builder
, Anda dapat menggunakansetRestoreState()
dan overload baru kesetPopUpTo()
yang memerlukan parametersaveState
tambahan.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 parametersaveState
tambahan.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
NavDeepLinkBuilder
kini menambahkanPendingIntent.FLAG_IMMUTABLE
kePendingIntent
yang ditampilkan olehcreatePendingIntent()
, memastikan bahwa API ini berfungsi seperti yang diharapkan saat menargetkan Android 12.- Navigation kini bergantung pada
Lifecycle
2.3.1
dan menandaisetGraph()
,popBackStack()
,navigateUp()
, dannavigate()
, yakni metode yang mengupdateNavBackStackEntry
Lifecycle
, 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
NavDeepLink
sekarang 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
: mengaksesViewModel
yang 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
NavDeepLink
akan 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)
NavController
tidak akan lagi error saat membuka tujuan bertingkat menggunakan transisi setelahNavController
dipulihkan. (I0f7c9, b/205021623)- Sekarang, pesan error jika menggunakan
startDestination
yang 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
ViewModel
dariNavBackStackEntry
dialog akan gagal saat dialog ditutup. (I6b96d, b/206465487) - Memperbaiki masalah saat menggunakan tujuan
activity
denganNavHost
Navigation 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
SafeArgs
tidak 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
saveState
saat menavigasi ke grafik lain, yang memastikan bahwa kode sepertiNavigationUI.setupWithNavController
dan 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.CREATED
setelah berpindah keLifecycle.State.STARTED
saatNavHost
ditambahkan langsung kesetContent()
aktivitas. (Ia5ac1, b/203536683) - Memperbaiki kondisi race saat
memunculkan tujuan
DialogFragment
dari 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
onNavDestinationSelected
API diNavigationUI
akan menampilkantrue
meskipun Anda tidak benar-benarnavigate()
ke grafik navigasi tersebut. Proses ini sekarang menggunakan logika yang sama yang digunakan secara internal olehsetupWithNavController
hanya untuk memilihMenuItem
yang terkait dengan tujuan saat ini menggunakanhierarchy
tujuan. (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 navGraphViewModel
dengan rute sebagai alternatif menggunakan ID sehingga akan memberikan dukungan yang lebih baik menggunakan DSL Kotlin Navigasi dengan Fragment. (I901e3, b/201446416)
Perubahan API
visibleEntries
API 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
NavDeepLink
nullable 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
AbstractListDetailFragment
yang menyebabkan atributlayout_width
danlayout_weight
pada 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 untukDialogFragment
secara manual kini menghapus semua tujuan dialog di atas dialog yang kini ditutup. Hal ini tidak memengaruhi kasus ketika Anda menggunakanpopUpTo
ataupopBackStack()
untuk menutup dialog. (I77ba2) AbstractAppBarOnDestinationChangedListener
sekarang 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
NavBackStackEntry
yang terlihat melaluivisibleEntries
StateFlow (Ia964e) rememberNavController()
sekarang menggunakan kumpulan instanceNavigator
opsional yang akan ditambahkan keNavController
yang 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
navArgument
kini 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
DESTROYED
setelah semua turunannyaDESTROYED
(dihancurkan). (I86552, b/198741720) - Argumen
NavDeepLink
nullable 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
OnDestinationChangedListener
dancurrentBackStackEntryFlow
tidak 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
NavType
untuk 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
getBackStackEntry
danpreviousBackStackEntry
di 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
ArrayIndexOutOfBoundsException
lagi saat memanggilsetGraph
dengan 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)
NavHost
kini mengamati perubahan dalamLifecycle.State
NavBackStackEntry
yang berarti penggunaanNavHost
dalam fragmen kini akan direkomposisi dengan benar, bukan menghasilkan layar kosong, karena siklus proses berubah. (I4eb85, b/195864489)- Memperbaiki masalah saat menutup
DialogFragment
tidak akan memperbarui statusNavController
dengan 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
toSavedStateHandle
untuk argumen yang dapat digunakan untuk menguji kodeViewModel
Anda. (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()
diAbstractListDetailFragment
masing-masing telah diubah namanya menjadigetSlidingPaneLayout()
dangetDetailPaneNavHostFragment()
. (I34a08)
Perubahan Perilaku
- Saat menavigasi dengan animasi (seperti
Crossfade
),Lifecycle
tujuan baru sekarang hanya akan menjangkauRESUMED
ketika animasi selesai. (If0543, b/172112072, b/194301889) NavHost
Navigation 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
NullPointerException
yang akan terjadi saat menambahkan deep link tanpaUri
dan menavigasi melalui rute atau deep link. (938a0c, b/193805425) - Memperbaiki masalah di Navigation Compose saat
NavBackStackEntry
yang 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
NavHost
Navigation 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
NavController
sebelumnya. (I0b8db, b/175392262)
Perbaikan Bug
- Memperbaiki
NoSuchElementException
saat memanggilpopBackStack()
dari dalamLifecycleObserver
yang dilampirkan keNavBackStackEntry
yang disebabkan oleh update reentrant ke status NavController. (I64621) AbstractListDetailFragment
kini memungkinkanSlidingPaneLayout
untuk dihilangkan sepenuhnya dari APK Anda saatAbstractListDetailFragment
tidak digunakan. (I611ad)NavGraph
danNavDestination
kini 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-fragment
sekarang berisi implementasi bawaan dari tata letak dua panel melaluiAbstractListDetailFragment
baru. Fragmen ini menggunakanSlidingPaneLayout
untuk mengelola panel daftar (yang disediakan oleh subclass Anda) dan panel detail, yang menggunakanNavHostFragment
sebagai implementasinya, seperti yang dapat dilihat di contoh implementasi kami. (Iac4be, b/191276636) NavHost
dari artefaknavigation-compose
sekarang mendukung tujuandialog
, selain tujuancomposable
. Setiap tujuan dialog ini akan ditampilkan dalam ComposableDialog
, yang mengambang di atas tujuancomposable
saat 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
add
diNavigatorState
telah diganti namanya menjadipush
. Semua panggilan keadd()
saat ini harus diubah ke push(). (Ie89fc, b/172112072) - Instance
Navigator
kustom kini dapat menggunakanpushWithTransaction
API danpopWithTransition
API diNavigatorState
untuk mendorong atau memunculkan tujuan secara asinkron. Perhatikan bahwa API ini belum digunakan oleh navigator yang disertakan. (Ic4d7c, b/172112072)
Perubahan Perilaku
NavDeepLinkBuilder
kini menambahkanPendingIntent.FLAG_IMMUTABLE
kePendingIntent
yang 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
NullPointerException
saat 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
Kotlin
sebelum1.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-alpha01
saatsetupActionBarWithNavController()
tidak akan menghapus ikon Atas dengan benar saat Anda berada di tujuan level atas. (I5d443, b/189868637) - Memperbaiki
IllegalStateException
saat memanggilpopBackStack()
setelah sebelumnya menampilkan grafik root NavController. (I2a330, b/190265699) - Aturan ProGuard untuk
by navArgs()
kini diterapkan dengan benar saat menggunakannavigation-common
atau artefak apa pun yang bergantung padanya. (I68800, b/190082521) OnDestinationChangedListener
yang 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.0
karena 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)
NavigationUI
telah 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 padaNavGraph
yang akan menemukan tujuan dalam grafik.getHierarchy()
adalah fungsi padaNavDestination
yang 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
BottomNavigationView
telah 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
DialogFragmentNavigator
sekarang menggunakanNavigatorState.pop()
API untuk memberi tahuNavController
saat dialog ditutup dengan menekan tombol kembali sistem atau mengklik di luarnya, sehingga memastikan bahwa statusNavController
selalu sinkron dengan status Navigator. (I2ead9)Navigation tidak lagi memberikan
ConcurrentModificationException
saat menggunakan manipulasi daftarOnDestinationChangedListeners
dari 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
findNode
sekarang 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()
padaNavController
menyediakanFlow
yang akan muncul setiap kaliNavBackStackEntry
saat ini berubah. Alur ini dapat digunakan sebagai alternatif untuk mengelolaOnDestinationChangedListener
secara 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:popUpToSaveState
danapp:restoreState
untuk menyimpan status tujuan apa pun yang muncul melaluiapp:popUpTo
dan 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 booleanrestoreState
dan properti booleansaveState
di 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
NavOptions
secara manual melaluiNavOptions.Builder
, Anda dapat menggunakansetRestoreState()
dan overload baru kesetPopUpTo()
yang memerlukan parametersaveState
tambahan.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 parametersaveState
tambahan.
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
popUpTo
pada 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-ktx
telah dipindahkan ke artefak utamanya masing-masing. Artefak-ktx
akan terus dipublikasikan, tetapi sepenuhnya kosong. (b/184292145) NavDeepLinkBuilder
sekarang mendukung penambahan beberapa tujuan yang berbeda ke data sebelumnya yang dihasilkan. (I3ee0d, b/147913689)- Menambahkan fungsi factory untuk
DynamicNavHostFragment
(Icd515, b/175222619) - ID unik
NavBackStackEntry
kini ditampilkan sebagai bagian dari API publiknya. (Ie033a) - Kolom
name
danargument
serta fungsi destrukturisasiNamedNavArgument
sekarang menjadi publik. (#174, b/181320559) - Memperkenalkan ekstensi
NavBackStackEntry#provideToCompositionLocals
baru yang menyediakanNavBackStackEntry
untuk 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.1
dan menandaisetGraph()
,popBackStack()
,navigateUp()
, dannavigate()
, yakni metode yang mengupdateNavBackStackEntry
Lifecycle
, 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/red
dapat mencocokkan deep linkwww.example.com/{color}
meskipun saat enum memiliki nilaiRED
. (#152, b/135857840)
Kompatibilitas Compose
androidx.navigation:navigation-compose:2.4.0-alpha01
hanya kompatibel dengan Compose versi1.0.0-beta07
dan 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)
NavHostFragment
sekarang mendukung Navigator khusus yang menggunakan@Navigator.Name("dialog")
sama sepertiDialogFragmentNavigator
default. (Ib1c2c, b/175979140)- Meningkatkan perilaku
NavigatorProvider#addNavigator
untuk 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
name
danargument
, serta mendestrukturisasi fungsiNamedNavArgument
menjadi publik. (#174, b/181320559) - Terima kasih jossiwolf karena telah memperkenalkan ekstensi
NavBackStackEntry#provideToCompositionLocals
baru yang menyediakanNavBackStackEntry
untuk lokal komposisi yang relevan. (#175, b/187229439) - Terima kasih jossiwolf karena telah meningkatkan perilaku
NavigatorProvider#addNavigator
untuk 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
NavHost
kini menerimaModifier
, yang akan diteruskan ke fungsi container composable, yang menggabungkan composable tujuan. (I85aca, b/175125483)
Perbaikan Bug
NavHost
kini berfungsi meskipunOnBackPressedDispatcherOwner
tidak ditemukan, seperti halnya saat melihat pratinjauNavHost
. (I7d8b4)- Navigation Compose kini bergantung pada Navigation
2.3.5
, yang memperbaiki masalah saat menggunakanBackHandler
di 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.current
kini menampilkanViewModelStoreOwner
nullable untuk menentukan lebih baik apakahViewModelStoreOwner
tersedia di komposisi saat ini. API yang memerlukanViewModelStoreOwner
, sepertiviewModel()
danNavHost
, masih menampilkan pengecualian jikaViewModelStoreOwner
tidak 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
NavHost
kini mengisi CompositionLocalLocalSavedStateRegistryOwner
denganNavBackStackEntry
tujuan tersebut, memastikan bahwa setiap status yang disimpan langsung keSavedStateRegistry
akan 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) NavHost
sekarang menggunakanLocalOnBackPressedDispatcherOwner
baru dari Activity-Compose 1.3.0-alpha01 untuk mendapatkanOnBackPressedDispatcher
yang 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)
diNavController
yang menampilkanNavBackStackEntry
terkait. (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
NavHost
memungkinkan 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 menghubungkanNavController
ke 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
NavDeepLinkRequest
atauUri
, 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
OnBackPressedCallbacks
ditambahkan ke dispatcher denganNavBackStackEntry
karena 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.com
cocok denganwww.example.com
danwww.Example.com
. Perlu diketahui bahwa nama parameter kueri masih peka huruf besar/kecil. (#144, b/153829033) - Memperbaiki
NullPointerException
yang 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
bentrengrove
atas 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
ReferenceType
kini 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:defaultValue
untuk 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
setViewModelStore
atausetLifecycleOwner
dengan 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
JvmName
atas permintaan pull-nya untuk memastikan bahwa argumenReferenceType
kini dapat diuraikan dengan benar saat dikirim sebagai bagian dari URI deeplink. (#127, b/179166693) - Terima kasih
tatocaster
atas permintaan pull-nya untuk mengizinkandefaultValue
untuk 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
NavBackStackEntry
sebelumLifecycle
dipindahkan keCREATED
. (Ie3ba3) - Memperbaiki regresi yang disebabkan oleh b/171364502 ketika memilih
aktivitas dengan nilai resource animasi
0
yang 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>
denganonNavDestinationSelected
akan gagal membuka Activity. (I22e34, b/171364502) - Memperbaiki masalah saat
navigation-dynamic-features-fragment
akan mengakibatkan navigasi ke tujuan yang baru diinstal beberapa kali. (aosp/1486056, b/169636207) - Memperbaiki masalah saat argumen default tidak akan dikirim ke instance
OnDestinationChangedListener
ketika 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()
denganpopUpTo
yang 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 denganFragmentScenario
danNavigation.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-ui
kini bergantung pada DrawerLayout 1.1.1, memastikan bahwaNavigationUI
dapat membuka panel samping meskipun menggunakanLOCK_MODE_LOCKED_CLOSED
atauLOCK_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-runtime
dannavigation-dynamic-features-fragment
memungkinkan 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-testing
menyediakanTestNavHostController
yang memungkinkan Anda menetapkan tujuan saat ini dan memverifikasi data sebelumnya setelah operasi navigasi. Lihat Menguji Navigation untuk informasi selengkapnya. - Menampilkan Hasil:
NavBackStackEntry
yang terkait dengan setiap tujuan di data Navigation sebelumnya kini memungkinkan Anda mengaksesSavedStateHandle
yang 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
NavigationUI
untukOpenable
: Semua penggunaanDrawerLayout
diNavigationUI
telah diganti dengan antarmukaOpenable
yang lebih umum yang ditambahkan di CustomView1.1.0
dan diterapkan olehDrawerLayout
di DrawerLayout1.1.0
. - Dukungan Tindakan dan Jenis MIME di deep link: Deep linking telah diperluas untuk mendukung
app:action
danapp:mimeType
selainapp:uri
yang sebelumnya tersedia.NavController
kini mendukung pemilihan dengan kombinasi apa pun dari kolom ini melalui classNavDeepLinkRequest
baru. 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
NullPointerException
saat mengganti instance tujuan tanpa argumen dengan instance lain yang disertai argumen menggunakansingleTop
. (b/158006669) - Semua pengecualian
destination is unknown
yang ditampilkan olehNavController
kini 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
Lifecycle
dariNavBackStackEntry
tidak diupdate dengan benar setelah dihentikannya proses. (b/155218371) - Instance
OnDestinationChangedListener
yang terdaftar sebelum memanggilsetGraph()
sekarang dikirim dengan benar ke tujuan yang dipulihkan setelah dihentikannya proses. (b/155218371) - Saat menggunakan
singleTop
, argumenNavBackStackEntry
kini telah diupdate dengan benar lalu dikirimkan ke semua instanceOnDestinationChangeListener
. (b/156545508)
Update Dependensi
- Artefak
NavigationUI
kini bergantung pada CustomView1.1.0-rc01
dan 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:action
danapp:mimeType
selainapp:uri
yang sebelumnya tersedia. NavController kini mendukung pemilihan dengan kombinasi apa pun dari kolom ini melalui classNavDeepLinkRequest
yang 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:graphPackage
dan defaultnya akan digunakan dengan menambahkan akhiranmoduleName
keapplicationId
setelah tanda titik. Jika Anda perlu menyesuaikangraphPackage
, placeholder${applicationId}
kini telah didukung. (b/152696768) - Navigation Graph Kotlin DSL kini menampilkan
defaultArguments
Map
untuk 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
IllegalStateException
saat melakukan deep linking ke tujuan awal grafik saat Anda memiliki beberapa instanceNavHostFragment
dalam 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
DynamicExtras
tidak lagi menggunakan pola builder dan kini dapat dibuat secara langsung. (aosp/1253671) DynamicActivityNavigator
kini menggunakanContext
dalam konstruktornya, bukanActivity
. (aosp/1250252)
Perbaikan Bug
NavigationUI
tidak 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
AppBarConfiguration
sekarang tidak lagi mengandalkan classDrawerLayout
konkret, tetapi menggunakan antarmukaOpenable
yang diperkenalkan dalam CustomView1.1.0-alpha02
(yang diimplementasikan olehDrawerLayout
mulai dari DrawerLayout1.1.0-alpha04
) sehingga Anda dapat menggunakan implementasi kustomOpenable
denganNavigationUI
. (b/129030452)
Perbaikan Bug
- Aturan
navigation-common-ktx
ProGuard kini hanya menyimpan classNavArgs
yang digunakan dengan benar, bukan semua instanceNavArgs
. (b/150213558)
Perubahan dependensi
- Navigation telah mengembalikan dependensinya di Core
1.2.0
dan kini bergantung pada Core1.1.0
untuk 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
NavBackStackEntry
kini memungkinkan Anda mengaksesSavedStateHandle
yang 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 mengambilNavBackStackEntry
untuk tujuan saat ini dan sebelumnya. (b/79672220)
Perbaikan Bug
navigateUp()
kini meneruskan argumen tujuan saat ini danKEY_DEEP_LINK_INTENT
ke 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-testing
baru menyediakan classTestNavHostController
. Class ini menyediakan alternatif untuk menggunakanNavController
fiktif saat menguji Navigation yang memungkinkan Anda menetapkan tujuan saat ini dan memverifikasi data sebelumnya setelah operasi navigasi. (b/140884273) navigation-dynamic-features-fragment
baru (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-ui
ProGuard untukDrawerArrowDrawable
telah diperbarui guna memastikan bahwaandroid.enableJetifier=true
tidak diperlukan. (b/147610424) - Dari Navigation
2.2.1
: Modulnavigation-common-ktx
kini 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.1
kini bergantung pada Lifecycle ViewModel SavedState2.2.0
dan 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
IllegalStateException
saat melakukan deep link ke tujuan awal grafik saat memiliki beberapa instanceNavHostFragment
di Activity Anda. (b/147378752) NavigationUI
tidak 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-ktx
ProGuard kini hanya menyimpan classNavArgs
yang 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-ui
ProGuard untukDrawerArrowDrawable
telah diperbarui guna memastikan bahwaandroid.enableJetifier=true
tidak diperlukan. (b/147610424) - Modul
navigation-common-ktx
kini memiliki nama paket manifes yang unik, bukan berbagi nama paket manifes yang sama dengannavigation-runtime-ktx
. (aosp/1141947)
Update dependensi
- Navigation
2.2.1
kini bergantung pada Lifecycle ViewModel SavedState2.2.0
dan 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.NavBackStackEntry
yang ditampilkan menyediakanLifecycleOwner
,ViewModelStoreOwner
(sama dengan yang ditampilkan olehNavController.getViewModelStoreOwner()
), danSavedStateRegistryOwner
berbasis Navigation, selain memberikan argumen yang digunakan untuk memulai tujuan tersebut. - Integrasi Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
sekarang menjadi setelan pabrik default saat menggunakanby navGraphViewModels()
atau konstruktorViewModelProvider
denganViewModelStoreOwner
yang 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:
NavHostFragment
sekarang menggunakanFragmentContainerView
dari 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-ui
agar 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) NavHostFragment
sekarang 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-rc03
jika 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
NavDestination
dan 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()
diActivity
sekarang memiliki pesan error yang lebih baik apabila tidak ada tambahan. (b/141408999) - Class Java
Directions
yang dihasilkan Safe Args sekarang berisi nilai default. (b/141099045) - Class Java
Args
yang dihasilkan Safe Args sekarang berisi nilai default. (b/140123727) - Saat menggunakan
Toolbar
,NavigationUI
tidak 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 memanggilsetGraph
sekarang menghasilkanIllegalStateException
. Panggilan ini harus selalu disetel olehNavHost
sebagai bagian dari penyiapan awal untuk memastikan bahwa semua instanceNavBackStackEntry
memiliki penyimpanan yang konsisten untuk instanceViewModel
. (aosp/1111821)
Perbaikan bug
- Memperbaiki
ConcurrentModificationException
saat menggunakan instanceViewModel
yang dikaitkan ke berbagai instanceViewModelStore
dengan 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.NavBackStackEntry
yang ditampilkan menyediakanLifecycleOwner
,ViewModelStoreOwner
(sama dengan yang ditampilkan olehNavController.getViewModelStoreOwner()
), danSavedStateRegistryOwner
berbasis Navigation, selain memberikan argumen yang digunakan untuk memulai tujuan tersebut. (aosp/1101691, aosp/1101710)
Perbaikan bug
- Memperbaiki masalah saat penambahan
NavHostFragment
keViewPager2
gagal denganIllegalArgumentException
. (b/133640271) NavInflater
sekarang 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
SavedStateViewModelFactory
sekarang merupakan setelan default factory yang digunakan saat menggunakanby navGraphViewModels()
atau konstruktorViewModelProvider
denganViewModelStoreOwner
yang ditampilkan olehNavController.getViewModelStoreOwner()
. (b/135716331)
Perubahan API
- Dari Navigation
2.1.0-rc01
:getViewModelStore()
API yang tidak digunakan lagi diNavController
yang diperkenalkan dalam versi2.1.0-alpha02
telah dihapus. (aosp/1091021)
Perbaikan bug
NavHostFragment
sekarang 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 menampilkanDialogFragment
saat Anda melakukannavigate
ke sana.NavHostFragment
secara default mendukung tujuan dialog. Lihat Membuat tujuan dari DialogFragment untuk informasi selengkapnya. - Menavigasi dengan Uri: Sekarang Anda dapat melakukan
navigate
menggunakanUri
, 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
NavHost
kustom telah dipindahkan keNavHostController
, yang memungkinkan implementasi untuk menghubungkanNavController
miliknya keLifecycleOwner
,OnBackPressedDispatcher
, danViewModelStore
yang 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 diNavController
yang diperkenalkan dalam versi2.1.0-alpha02
telah 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
NavigationUI
sekarang menganimasikan penghapusan tombol Naik saatsetupWithNavController()
digunakan denganToolbar
atauCollapsingToolbarLayout
. (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:navGraph
yang 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 diNavController
tidak 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
NavController
diubah namanya dan dipindahkan ke subclass baruNavController
,NavHostController
. (aosp/966091) - Metode
setHostOnBackPressedDispatcherOwner()
NavController
telah diganti dengan metodesetOnBackPressedDispatcher()
NavHostController
dan sekarang mengharuskan Anda memanggilsetLifecycleOwner()
sebelum memanggilnya. (aosp/965409) NavHostController
sekarang memuat metodeenableOnBackPressed(boolean)
yang menggantikan classNavHostOnBackPressedManager
yang 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
NavHostFragment
sekarang mengikutiapp:defaultNavHost
dengan benar saat mengintersep peristiwa tombol Kembali sistem, sehingga memperbaiki regresi di Navigation2.1.0-alpha03
. b/132077777DialogFragmentNavigator
sekarang menangani operasipopBackStack()
dannavigateUp()
dengan benar. b/132576764- Memperbaiki masalah
IllegalStateException: unknown destination during restore
saat 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 menampilkanDialogFragment
saat Anda melakukannavigate
ke sana.NavHostFragment
mendukung tujuan dialog secara default. b/80267254 - Selain memanggil
navigate
dengan 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()
dariNavHostFragment
tidak digunakan lagi dan fungsinya dipindahkan ke metodeonCreateNavController()
baru untuk memperjelas bahwa ini adalah titik masuk yang benar untuk menambahkan Navigator kustom ketika menjadikanNavHostFragment
sebagai subclass. b/122802849 - Metode
hasDeepLink()
telah ditambahkan keNavDestination
untuk memungkinkan Anda memeriksa apakahUri
tertentu 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 NavHostFragment
sekarang 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:argType
yang 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:targetPackage
ke 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:name
untuk 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.1
danandroidx.fragment:fragment:1.1.0-alpha05
sebagai 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.instantiateFragment
tidak digunakan lagi. Implementasi default sekarang menggunakanFragmentFactory
untuk membuat instance Fragment. b/119054429
Perbaikan Bug
- Navigation tidak lagi mengirimkan
Bundle
null 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_TASK
b/126082008- Memperbaiki masalah yang menyebabkan
ActivityNavigator.applyPopAnimationsToPendingTransition
tidak menerapkan animasi keluar pop yang tepat b/126237567 - Kode Kotlin yang dihasilkan oleh Safe Args kini meng-escape kata kunci Kotlin
dengan benar, seperti
in
danfun
dalam 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
singleTop
b/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
0
sebagaiandroid:defaultValue
untuk 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()
dannavigateUp
sekarang menampilkanfalse
dengan benar saat memunculkan tujuan terakhir pada data sebelumnya, memperbaiki regresi yang diperkenalkan dalam1.0.0-beta01
. b/123933201- Navigation sekarang menetapkan
ClassLoader
dengan benar selama pemulihan status instance tersimpan, menghindari masalah saat menggunakan class kustom dalam status tersimpanNavigator
atau 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:argType
lain 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
FragmentNavigator
membatalkan sinkronisasi dengan statusNavController
, sehingga terjadiIllegalStateException
saat mencoba memulihkan data sebelumnya. b/123803044 - Memperbaiki masalah yang menyebabkan panah kembali yang ditangani
NavigationUI
tidak muncul saat menggunakan ProGuard dengan obfuscation. b/123449431 - Kode yang dihasilkan Safe Args sekarang melakukan penanganan dengan benar menggunakan
app:argType
yang 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 classNavArgs
yang dihasilkan Safe Args dalamActivity
atauFragment
. 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.safeargs
sebelumnya. b/110263087
Perubahan Perilaku
- Deep link yang cocok sekarang memprioritaskan deep link yang memiliki argumen paling cocok. b/118393029
- Memanggil
setGraph()
diNavController
sekarang akan mereset data sebelumnya. b/111450672 - Deep link yang tidak diketahui kini tidak lagi menampilkan
IllegalStateException
, tetapi akan diabaikan sehingga memperbaiki masalah denganNavHostFragment
yang 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
NavDirections
yang dihasilkan Safe Args kini tidak lagi memiliki konstruktor publik; class tersebut hanya boleh dihasilkan melalui metode statis dalam class Directions yang dihasilkan. b/122963206 Bundle
yang ditampilkan darigetArguments()
milikNavDirections
sekarang ditandai sebagai@NonNull
, bukan@Nullable
. b/123243957
Perbaikan Bug
NavDeepLinkBuilder
sekarang dapat menangani beberapaPendingIntent
simultan ke tujuan yang sama dengan benar menggunakan argumen yang diberikan untuk menentukan keunikannya. b/120042732NavController
sekarang dapat menangani operasipopBackStack()
dengan benar ketika menggunakanNavHostFragment
bertingkat atau Fragment turunan lainnya dengan data sebelumnya. b/122770335NavigationUI
sekarang 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
NavDirections
yang dihasilkan Safe Args sekarang memiliki nilaihashCode()
yang sama jikaequals()
menampilkan benar (true). b/123043662 FragmentNavigator
sekarang menampilkan pesan error yang lebih baik ketika Anda mencoba melakukanFragmentTransactions
kustom diFragmentManager
NavHostFragment
. 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
MenuItem
denganmenuCategory="secondary"
tidak akan lagi menampilkan data sebelumnya saat digunakan dengan metodeNavigationUI
. b/120104424AppBarConfiguration
kini memungkinkan Anda menetapkan instanceOnNavigateUpListener
penggantian 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"
keMenuItem
untuk menghindari munculnya data sebelumnya. aosp/852869- Metode
fromBundle()
dari classArgs
yang dihasilkan kini menggunakanBundle
non-null, bukanBundle
nullable aosp/845616
Perbaikan Bug
- Argumen kini diurai dengan benar dari deep link sebagai
argType
yang 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:label
Anda dengan argumen yang benar b/80267266 - Navigation sekarang bergantung pada Support Library 28.0.0 b/120293333
Perubahan yang Dapat Menyebabkan Gangguan
OnNavigatedListener
telah diganti namanya menjadiOnDestinationChangedListener
b/118670572OnDestinationChangedListener
sekarang juga meneruskanBundle
argumen aosp/837142- Atribut
app:clearTask
danapp:launchDocument
serta metode terkaitnya telah dihapus. Gunakanapp:popUpTo
dengan root grafik untuk menghapus semua tujuan dari data sebelumnya. b/119628354 ActivityNavigator.Extras
sekarang menggunakan polaBuilder
dan menambahkan kemampuan untuk menetapkan flagIntent.FLAG_ACTIVITY_
apa pun aosp/828140NavController.onHandleDeepLink
telah diubah namanya menjadihandleDeepLink
aosp/836063- Sebagian class dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti
NavOptions
,NavInflater
,NavDeepLinkBuilder
, danAppBarConfiguration
, telah dijadikanfinal
aosp/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
NavGraphNavigator
tidak lagi menggunakanContext
aosp/835340 - NavigatorProvider sekarang
merupakan class, bukan antarmuka.
NavigatorProvider
yang ditampilkan olehgetNavigatorProvider()
tidak berubah fungsinya. aosp/830660 NavDestination.navigate()
telah dihapus. Sekarang, Anda dapat memanggilnavigate()
diNavigator
. aosp/830663- Pemfaktoran ulang
Navigator
secara signifikan, yang meniadakan kebutuhan akanOnNavigatorNavigatedListener
dan memintanavigate
menampilkanNavDestination
yang menjadi tujuan navigasi. - Instance
Navigator
tidak dapat lagi mengirimkan peristiwa kemunculan keNavController
. Sebaiknya gunakanOnBackPressedCallback
untuk mengintersep penekanan tombol kembali dan memanggilnavController.popBackStack()
. aosp/833716
Perbaikan Bug
popUpTo
sekarang berfungsi secara konsisten saat tujuannya adalah elemen<navigation>
b/116831650- Memperbaiki sejumlah bug yang mengakibatkan
IllegalArgumentException
saat menggunakan grafik bertingkat b/118713731 b/113611083 b/113346925 b/113305559 - Atribut
dataPattern
tujuan<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
@Override
jika 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-ktx
telah dikemas ke dalamnavigation-testing artifact
dan tidak akan dipublikasikan lagi. - Artefak
navigation-testing
kini 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
NavigationView
sekarang 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 adalahNonNull
b/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:type
telah diubah menjadiapp:argType
untuk 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
NonNull
sebenarnya bukan null. b/111451769 - Anotasi
NonNull
tambahan 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.index
akan menjadisetDemoControllerIndex
b/79995048 - Misalnya
action_show_settings
akan menjadiactionShowSettings
b/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
setPopUpTo
dengan tujuan pertama dalam grafik b/109909461 - Memperbaiki masalah saat semua nilai
app:defaultValue
diteruskan sebagai String b/110710788 - aapt2 yang dipaketkan dengan Plugin Android Gradle 3.2 Beta 01 kini menambahkan aturan keep untuk setiap atribut
android:name
dalam file XML Navigation b/79874119 - Memperbaiki kebocoran memori saat mengganti FragmentNavigator default b/110900142
Versi 1.0.0-alpha02
7 Juni 2018
Perubahan Perilaku
FragmentNavigator
sekarang menggunakansetReorderingAllowed(true)
. b/109826220Navigation sekarang meng-URLDecode argumen yang diurai dari URL deep link. b/79982454
Perbaikan Bug
Memperbaiki
IllegalStateException
saat 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
IllegalArgumentException
saat menggunakan defaultNavHost="true" sebagai fragmen turunan. b/79656847Memperbaiki
StackOverflowError
saat menggunakan NavDeepLinkBuilder. b/109653065Memperbaiki
IllegalArgumentException
saat 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
clearTask
untuk tindakan dan API terkaitnya diNavOptions
tidak digunakan lagi. b/80338878Atribut
launchDocument
untuk tindakan dan API yang diatribusikan diNavOptions
tidak 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
.