Navigation
Tabel ini mencantumkan semua artefak dalam grup androidx.navigation
.
Artefak | Rilis Stabil Saat Ini | Kandidat Rilis Berikutnya | Rilis Beta | Rilis Alfa |
---|---|---|---|---|
navigation-* | 2.3.3 | - | - | - |
navigation-compose | - | - | - | 1.0.0-alpha08 |
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:
dependencies { def nav_version = "2.3.3" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:1.0.0-alpha07" }
Safe Args
Untuk menambahkan Safe Args ke project Anda, sertakan build.gradle
berikut ke file classpath
tingkat teratas Anda:
buildscript { repositories { google() } dependencies { def nav_version = "2.3.3" 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:
apply plugin: "androidx.navigation.safeargs"
Atau, untuk menghasilkan kode Kotlin yang cocok dengan modul khusus Kotlin tambahkan:
apply plugin: "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 punya masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Navigation Compose Versi 1.0.0
Versi 1.0.0-alpha08
24 Februari 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
dirilis. Versi 1.0.0-alpha08 berisi commit berikut 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 berikut.
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 berikut.
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 berikut 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 berikut ini.
- Diperbarui 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 berikut 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 berikut.
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 Navigation Compose DSL. (I1661d)
- startDestination kini muncul sebelum rute dalam daftar parameter untuk NavHost (Ie620e)
- Kini Anda dapat membuat grafik menggunakan rute sebagai tujuan awal di luar komponen 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 berikut ini.
Fitur Baru
Artefak navigation-compose
menyediakan integrasi antara Komponen Navigasi dan Jetpack Compose. Artefak ini menggunakan fungsi @Composable
sebagai tujuan dalam aplikasi Anda.
Rilis awal ini menyediakan:
NavHost
yang dapat dikomposisi memungkinkan Anda membuat grafik navigasi melalui Kotlin DSL.- 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 mengembalikan hasil ke tujuan sebelumnya.
- Helper tertentu Compose di
rememberNavController()
dancurrentBackStackEntryAsState()
untuk memungkinkan status penarikan dan menghubungkanNavController
ke komponen di luarNavHost
(seperti menu navigasi bawah).
Lihat panduan Navigation Compose untuk mengetahui informasi selengkapnya.
Versi 2.3.3
Versi 2.3.3
27 Januari 2021
androidx.navigation:navigation-*:2.3.3
dirilis. Versi 2.3.3 berisi commit berikut.
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
Navigation Versi 2.3.2
2 Desember 2020
androidx.navigation:navigation-*:2.3.2
dirilis. Versi 2.3.2 berisi commit berikut ini.
Perbaikan Bug
- Memperbaiki regresi dalam
NavigationUI
, ketika 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 berikut.
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 menyempurnakan 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 berikut.
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 Menuju ke tujuan 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 Uji Navigation untuk informasi selengkapnya. - Mengembalikan 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 Mengembalikan 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 NavDEPLinkRequest 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 berikut.
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 berikut.
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 berikut 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 berikut.
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 Fragmen
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 berikut.
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 berikut.
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 berikut.
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 Mengembalikan 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 berikut.
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 Menuju ke tujuan 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 Fragmen1.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 berikut.
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 Fragmen
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 berikut.
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 berikut.
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 berikut.
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 berikut.
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 berikut 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 berikut ini.
Versi 2.2.0-beta01
9 Oktober 2019
androidx.navigation:navigation-*:2.2.0-beta01
dirilis. Versi 2.2.0-beta01 berisi commit berikut 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 berikut 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
: APIgetViewModelStore()
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 informasi selengkapnya. - Tujuan dialog: Sekarang Anda dapat membuat tujuan
<dialog>
yang akan menampilkanDialogFragment
saat Andanavigate
ke sana.NavHostFragment
secara default mendukung tujuan dialog. Lihat Membuat tujuan dari DialogFragment untuk informasi selengkapnya. - Menavigasi dengan Uri: Sekarang Anda dapat
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 penampung 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 bersarang 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 Andanavigate
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 ms menjadi 220 ms 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 Fragmen dan operasi navigasi
singleTop
b/124294805
Versi 1.0.0-beta02
12 Februari 2019
Rilis ini menyertakan sejumlah penyempurnaan 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
pada waktu proses 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 Fragmen turunan lainnya dengan data sebelumnya. b/122770335NavigationUI
sekarang dapat menetapkan deskripsi konten tombol Up 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 apabilaequals()
menampilkan benar. 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 tandaIntent.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 pop 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 Arg mendukung array dari semua jenis yang didukung b/111487504
- Safe Arg 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 Fragmen dan Aktivitas sekarang didukung b/79665225. Untuk informasi selengkapnya, lihat Mengimplementasikan navigasi dengan Komponen Arsitektur Navigation
- Memilih item di
NavigationView
sekarang akan menutup semua sheet yang menjadi penampung 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 backstack 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 Fragmen 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 mengembalikan nilai salah ketika back stack kosong atau ketika ID tujuan yang diberikan tidak ada di back stack 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 Fragmen 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 Fragmen. 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 Fragmen 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
.