Bergabunglah bersama kami di ⁠#Android11: The Beta Launch Show pada tanggal 3 Juni!

Navigation

Navigation adalah framework untuk menelusuri 'tujuan' dalam aplikasi Android yang menyediakan API konsisten, baik tujuan tersebut diimplementasikan sebagai Fragment, Activities, maupun komponen lainnya.

Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
29 April 2020 2.2.2 - - 2.3.0-alpha06

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.0-alpha06"

  // 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"

  // Dynamic Feature Module Support
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

  // Testing Navigation
  androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
}

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.0-alpha06"
        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 sesuai bagi 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 mengetahui informasi tentang cara menggunakan ekstensi Kotlin, lihat dokumentasi ktx.

Untuk mengetahui informasi selengkapnya tentang dependensi, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau memiliki ide untuk meningkatkan kualitas library ini. Harap lihat masalah yang ada di library ini sebelum Anda membuat laporan baru. Anda dapat memberikan suara pada masalah yang ada dengan mengklik tombol bintang.

Melaporkan masalah baru

Baca dokumentasi Issue Tracker untuk mengetahui informasi selengkapnya.

Versi 2.3.0

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 dan app:mimeType selain app:uri yang sebelumnya tersedia. NavController kini mendukung pemilihan dengan kombinasi apa pun dari kolom ini melalui class NavDeepLinkRequest yang baru. (b/136573074, b/135334841)

Perubahan API

  • Memperluas dukungan DSL Kotlin untuk tujuan Navigasi Dinamis. (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 menentukan app:graphPackage dan defaultnya akan digunakan dengan menambahkan akhiran moduleName ke applicationId setelah tanda titik. Jika Anda perlu menyesuaikan graphPackage, 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 instance NavHostFragment dalam Activity Anda. (b/147378752)

Pembaruan dependensi

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 aktivitas dan tujuan fragmen Dynamic Feature dalam Navigation Kotlin DSL. (b/148969800)

Perubahan API

  • Class DynamicExtras tidak lagi menggunakan pola builder dan kini dapat dibuat secara langsung. (aosp/1253671)
  • DynamicActivityNavigator kini menggunakan Context dalam konstruktornya, bukan Activity. (aosp/1250252)

Perbaikan Bug

  • NavigationUI tidak lagi mengabaikan label kosong (misalnya, tujuan dengan android:label=””) dan kini menetapkan judul menjadi string kosong dengan benar. (b/148679860)

Pembaruan 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 class DrawerLayout konkret, tetapi menggunakan antarmuka Openable yang diperkenalkan dalam CustomView 1.1.0-alpha02 (yang diimplementasikan oleh DrawerLayout mulai dari DrawerLayout 1.1.0-alpha04) sehingga Anda dapat menggunakan implementasi kustom Openable dengan NavigationUI. (b/129030452)

Perbaikan Bug

  • Aturan navigation-common-ktx ProGuard kini hanya menyimpan class NavArgs yang digunakan dengan benar, bukan semua instance NavArgs. (b/150213558)

Perubahan dependensi

  • Navigation telah mengembalikan dependensinya di Core 1.2.0 dan kini bergantung pada Core 1.1.0 untuk mencegah developer beralih ke dependensi yang lebih baru secara paksa saat Navigation tidak bergantung pada API baru di Core 1.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 mengakses SavedStateHandle 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() dan getPreviousBackStackEntry() telah ditambahkan agar lebih mudah untuk mengambil NavBackStackEntry untuk tujuan saat ini dan sebelumnya. (b/79672220)

Perbaikan Bug

  • navigateUp() kini meneruskan argumen tujuan saat ini dan KEY_DEEP_LINK_INTENT ke tujuan sebelumnya saat meluncurkan aplikasi di stack tugas Anda. (b/147456890)

Perubahan dependensi

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 class TestNavHostController. Class ini menyediakan alternatif untuk menggunakan NavController 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 dinamis, yang memberikan penginstalan modul fitur dinamis on-demand dengan lancar saat mengarah ke tujuan tersebut. Lihat Navigasi dengan modul fitur dinamis 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 Navigation2.2.1: Aturan navigation-ui ProGuard untuk DrawerArrowDrawable telah diperbarui guna memastikan bahwa android.enableJetifier=true tidak diperlukan. (b/147610424)
  • Dari Navigation 2.2.1: Modul navigation-common-ktx kini memiliki nama paket manifes yang unik, bukan berbagi nama paket manifes yang sama dengan navigation-runtime-ktx. (aosp/1141947)

Pembaruan dependensi

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 instance NavHostFragment di Activity Anda. (b/147378752)
  • NavigationUI tidak lagi mengabaikan label kosong (misalnya, tujuan dengan android: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 class NavArgs yang digunakan dengan benar, bukan semua instance NavArgs. Ini sebelumnya dirilis di Navigation 2.3.0-alpha03. (b/150213558

Pembaruan dependensi

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 untuk DrawerArrowDrawable telah diperbarui guna memastikan bahwa android.enableJetifier=true tidak diperlukan. (b/147610424)
  • Modul navigation-common-ktx kini memiliki nama paket manifes yang unik, bukan berbagi nama paket manifes yang sama dengan navigation-runtime-ktx. (aosp/1141947)

Pembaruan dependensi

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 menyediakan LifecycleOwner, ViewModelStoreOwner (sama dengan yang ditampilkan oleh NavController.getViewModelStoreOwner()), dan SavedStateRegistryOwner berbasis Navigation, selain memberikan argumen yang digunakan untuk memulai tujuan tersebut.
  • Integrasi Lifecycle ViewModel SavedState: SavedStateViewModelFactory sekarang menjadi setelan pabrik default saat menggunakan by navGraphViewModels() atau konstruktor ViewModelProvider dengan ViewModelStoreOwner yang ditampilkan oleh NavController.getBackStackEntry() atau NavController.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 menggunakan FragmentContainerView 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 Fragment 1.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", bukan null. (b/141613546)
  • NavHostFragment sekarang akan mengembalikan grafik dengan benar setelah perubahan konfigurasi saat digunakan dengan FragmentContainerView. (b/143752103)

Perubahan dependensi

  • Navigation sekarang bergantung pada Lifecycle 2.2.0-rc03, Lifecycle ViewModel SavedState 1.0.0-rc03, Activity 1.1.0-rc03, dan Fragment 1.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 versi 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 menggantikan toString() 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 di mana argumen di jalur deep link diabaikan jika parameter kueri juga ditentukan. (b/141505755)
  • Ekstensi Kotlin navArgs() di Activity 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 memanggil setGraph sekarang menghasilkan IllegalStateException. Panggilan ini harus selalu disetel oleh NavHost sebagai bagian dari penyiapan awal untuk memastikan bahwa semua instance NavBackStackEntry memiliki penyimpanan yang konsisten untuk instance ViewModel. (aosp/1111821)

Perbaikan bug

  • Memperbaiki ConcurrentModificationException saat menggunakan instance ViewModel yang dikaitkan ke berbagai instance ViewModelStore 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 menyediakan LifecycleOwner, ViewModelStoreOwner (sama dengan yang ditampilkan oleh NavController.getViewModelStoreOwner()), dan SavedStateRegistryOwner berbasis Navigation, selain memberikan argumen yang digunakan untuk memulai tujuan tersebut. (aosp/1101691, aosp/1101710)

Perbaikan bug

  • Memperbaiki masalah di mana penambahan NavHostFragment ke ViewPager2 gagal dengan IllegalArgumentException. (b/133640271)
  • NavInflater sekarang menghindari pemanggilan getResourceName() 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 pabrik yang digunakan saat menggunakan by navGraphViewModels() atau konstruktor ViewModelProvider dengan ViewModelStoreOwner yang ditampilkan oleh NavController.getViewModelStoreOwner(). (b/135716331)

Perubahan API

  • Dari Navigation 2.1.0-rc01: API getViewModelStore() yang tidak digunakan lagi di NavController yang diperkenalkan dalam versi 2.1.0-alpha02 telah dihapus. (aosp/1091021)

Perbaikan bug

  • NavHostFragment sekarang menggunakan FragmentContainerView, 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 versi 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 menggunakan getViewModelStoreOwner() API yang ditambahkan ke NavController. Lihat Membagikan data terkait UI antar-tujuan untuk informasi selengkapnya.
  • Tujuan dialog: Sekarang Anda dapat membuat tujuan <dialog> yang akan menampilkan DialogFragment saat Anda navigate ke sana. NavHostFragment secara default mendukung tujuan dialog. Lihat Membuat tujuan dari DialogFragment untuk informasi selengkapnya.
  • Menavigasi dengan Uri: Sekarang Anda dapat navigate menggunakan Uri, 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 ke NavHostController, yang memungkinkan implementasi untuk menghubungkan NavController miliknya ke LifecycleOwner, OnBackPressedDispatcher, dan ViewModelStore 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 di NavController yang diperkenalkan dalam versi 2.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 versi 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 saat setupWithNavController() digunakan dengan Toolbar atau CollapsingToolbarLayout. (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 artefak navigation-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 di NavController tidak digunakan lagi dan digantikan dengan metode getViewModelStoreOwner() baru yang menampilkan ViewModelStoreOwner. (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 tujuan FloatingWindow. (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 yang menyebabkan data Navigation sebelumnya 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 baru NavController, NavHostController. (aosp/966091)
  • Metode setHostOnBackPressedDispatcherOwner() NavController telah diganti dengan metode setOnBackPressedDispatcher() NavHostController dan sekarang mengharuskan Anda memanggil setLifecycleOwner() sebelum memanggilnya. (aosp/965409)
  • NavHostController sekarang memuat metode enableOnBackPressed(boolean) yang menggantikan class NavHostOnBackPressedManager yang sebelumnya ditampilkan oleh setHostOnBackPressedDispatcherOwner(). (aosp/966091)

Perbaikan bug

  • Memperbaiki masalah di mana data sebelumnya salah setelah menavigasi menggunakan URI. (b/132509387)
  • Deep link yang otomatis ditangani oleh NavController sekarang hanya memicu 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 mengikuti app:defaultNavHost dengan benar saat mengintersep peristiwa tombol Kembali sistem, sehingga memperbaiki regresi di Navigation 2.1.0-alpha03. b/132077777
  • DialogFragmentNavigator sekarang menangani operasi popBackStack() dan navigateUp() 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

Mei 2022

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 menampilkan DialogFragment saat Anda navigate ke sana. NavHostFragment mendukung tujuan dialog secara default. b/80267254
  • Selain memanggil navigate dengan id resource atau instance NavDirections, sekarang Anda dapat menavigasi melalui Uri, 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() dari NavHostFragment tidak digunakan lagi dan fungsinya dipindahkan ke metode onCreateNavController() baru untuk memperjelas bahwa ini adalah titik masuk yang benar untuk menambahkan Navigator kustom ketika menjadikan NavHostFragment sebagai subclass. b/122802849
  • Metode hasDeepLink() telah ditambahkan ke NavDestination untuk memungkinkan Anda memeriksa apakah Uri tertentu dapat ditangani oleh tujuan tersebut, atau dalam kasus NavGraph, 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 menggunakan OnBackPressedDispatcher, yang memperbaiki masalah saat melakukan navigasi bersyarat dalam metode lifecycle Fragment sekembalinya ke suatu Fragment. b/111598096
  • Untuk Safe Args, android:defaultValue=”@null” dengan app:argType yang tidak ditentukan sekarang diinferensikan dengan benar sebagai argumen string. 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 menggunakan getViewModelStore() API yang ditambahkan ke NavController. b/111614463

Perubahan API

  • Sekarang Anda dapat menambahkan app:targetPackage ke tujuan <activity> untuk membatasi nama paket yang cocok. Perubahan ini mendukung app: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 dan androidx.fragment:fragment:1.1.0-alpha05 sebagai dependensi. Rilis ini juga menghapuskan dependensi pada androidx.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 menggunakan FragmentFactory untuk membuat instance Fragment. b/119054429

Perbaikan Bug

  • Navigation tidak lagi mengirimkan Bundle null ketika ada argumen yang dikaitkan ke tujuan, memperbaiki masalah saat android: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 tanpa FLAG_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 dan fun dalam nama paket yang terkait dengan class R. 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 penyempurnaan kecil dan perbaikan bug penting.

Fitur Baru

  • Anda sekarang dapat menggunakan 0 sebagai android:defaultValue untuk argumen reference. b/124248602

Perubahan perilaku

  • Deep link yang benar-benar cocok sekarang diprioritaskan daripada deep link dengan .* atau kecocokan argumen. b/123969518

Perbaikan Bug

  • popBackStack() dan navigateUp sekarang menampilkan false dengan benar saat memunculkan tujuan terakhir pada data sebelumnya, memperbaiki regresi yang diperkenalkan dalam 1.0.0-beta01. b/123933201
  • Navigation sekarang menetapkan ClassLoader dengan benar selama pemulihan status instance tersimpan, menghindari masalah saat menggunakan class kustom dalam status tersimpan Navigator atau dalam argumen yang dikirim ke NavDestination. 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 dengan app: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 yang mana status FragmentNavigator membatalkan sinkronisasi dengan status NavController, sehingga terjadi IllegalStateException 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; silakan 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 class NavArgs yang dihasilkan Safe Args dalam Activity atau Fragment. 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 plugin androidx.navigation.safeargs sebelumnya. b/110263087

Perubahan Perilaku

  • Deep link yang cocok sekarang memprioritaskan deep link yang memiliki argumen paling cocok. b/118393029
  • Memanggil setGraph() di NavController sekarang akan mereset data sebelumnya. b/111450672
  • Deep link yang tidak diketahui kini tidak lagi menampilkan IllegalStateException, tetapi akan diabaikan sehingga memperbaiki masalah dengan NavHostFragment 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 ke ActivityNavigator. 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 dari getArguments() milik NavDirections sekarang ditandai sebagai @NonNull, bukan @Nullable. b/123243957

Perbaikan Bug

  • NavDeepLinkBuilder sekarang dapat menangani beberapa PendingIntent simultan ke tujuan yang sama dengan benar menggunakan argumen yang diberikan untuk menentukan keunikannya. b/120042732
  • NavController sekarang dapat menangani operasi popBackStack() dengan benar ketika menggunakan NavHostFragment bertingkat atau Fragment turunan lainnya dengan data sebelumnya. b/122770335
  • NavigationUI 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 nilai hashCode() yang sama apabila equals() menampilkan benar. b/123043662
  • FragmentNavigator sekarang menampilkan pesan error yang lebih baik ketika Anda mencoba melakukan FragmentTransactions kustom di FragmentManager NavHostFragment. Anda harus selalu menggunakan getChildFragmentManager(). b/112927148

Versi 1.0.0-alpha09

18 Desember 2018

Rilis ini berisi perubahan API yang dapat menyebabkan gangguan; silakan 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 dengan menuCategory="secondary" tidak akan lagi menampilkan data sebelumnya saat digunakan dengan metode NavigationUI. b/120104424
  • AppBarConfiguration kini memungkinkan Anda menetapkan instance OnNavigateUpListener penggantian yang akan dipanggil saat navController.navigateUp() menampilkan false. b/79993862 b/120690961

Perubahan yang Dapat Menyebabkan Gangguan

  • Saat menggunakan <argument> dengan argType="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 metode setup. Tambahkan menuCategory="secondary" ke MenuItem untuk menghindari munculnya data sebelumnya. aosp/852869
  • Metode fromBundle() dari class Args yang dihasilkan kini menggunakan Bundle non-null, bukan Bundle 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; silakan 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} dalam android:label Anda dengan argumen yang benar b/80267266
  • Navigation sekarang menggunakan Support Library 28.0.0 sebagai dependensi b/120293333

Perubahan yang Dapat Menyebabkan Gangguan

  • OnNavigatedListener telah diganti namanya menjadi OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener sekarang juga meneruskan Bundle argumen aosp/837142
  • Atribut app:clearTask dan app:launchDocument serta metode terkaitnya telah dihapus. Gunakan app:popUpTo dengan root grafik untuk menghapus semua tujuan dari data sebelumnya. b/119628354
  • ActivityNavigator.Extras sekarang menggunakan pola Builder dan menambahkan kemampuan untuk menetapkan tanda Intent.FLAG_ACTIVITY_ apa pun aosp/828140
  • NavController.onHandleDeepLink telah diubah namanya menjadi handleDeepLink aosp/836063
  • Sebagian class dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti NavOptions, NavInflater, NavDeepLinkBuilder, dan AppBarConfiguration, telah dijadikan final 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 ke FragmentFactory. b/119054429
  • Konstruktor untuk NavGraphNavigator tidak lagi menggunakan Context aosp/835340
  • NavigatorProvider sekarang merupakan class, bukan antarmuka. NavigatorProvider yang ditampilkan oleh getNavigatorProvider() tidak berubah fungsionalitasnya. aosp/830660
  • NavDestination.navigate() telah dihapus Sekarang, Anda dapat memanggil navigate() di Navigator. aosp/830663
  • Pemfaktoran ulang Navigator secara signifikan, yang meniadakan kebutuhan akan OnNavigatorNavigatedListener dan meminta navigate menampilkan NavDestination yang menjadi tujuan navigasi.
  • Instance Navigator tidak dapat lagi mengirimkan peristiwa pop ke NavController. Sebaiknya gunakan OnBackPressedCallback untuk mengintersep penekanan tombol kembali dan memanggil navController.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 memanggil toString() b/120161365

Safe Args

  • Safe Args mendukung objek Serializable, 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

Perubahan yang Dapat Menyebabkan Gangguan

  • Modul navigation-testing-ktx telah dikemas ke dalam navigation-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 di 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

Perubahan API

  • Perubahan yang Dapat Menyebabkan Gangguan: Metode navigate() Navigator sekarang menggunakan parameter Navigator.Extras.
  • Metode getGraph() NavController sekarang adalah NonNull b/112243286

Perbaikan Bug

  • NavigationUI.setupWithNavController() tidak lagi membocorkan view jika digunakan dengan view dari tujuan individu b/111961977
  • onSaveState() navigator sekarang hanya dipanggil satu kali b/112627079

Safe Args

  • Class Directions tujuan Navigation kini memperluas class Directions induknya jika ada. b/79871405
  • Class Direction dan Args sekarang 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 build di Safe Args. b/109409713
  • Memperbaiki konversi dari ID 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 menetapkan Fragment saat ini sebagai fragmen navigasi utama, yang memastikan bahwa pengelola fragmen turunan muncul sebelum NavController luar muncul b/111345778

Safe Args

  • Perubahan yang Dapat Menyebabkan Gangguan: app:type telah diubah menjadi app: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 di 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 false jika data sebelumnya kosong atau jika ID tujuan yang ditentukan 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 menjadi setDemoControllerIndex b/79995048
    • Misalnya action_show_settings akan menjadi actionShowSettings b/79642240
  • 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() dan hashCode() b/79642246
  • Plugin Safe Args sekarang dapat diterapkan ke project library b/80036553
  • Plugin Safe Args sekarang 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 di mana 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 menggunakan setReorderingAllowed(true). b/109826220

  • Navigation sekarang menerapkan URLDecode pada argumen yang diurai dari URL deep link. b/79982454

Perbaikan Bug

  • Memperbaiki IllegalStateException saat memanggil navigasi dari metode siklus proses Fragment. b/79632233

  • Navigation sekarang bergantung pada Support Library 27.1.1 untuk memperbaiki kedipan saat menggunakan animasi. b/80160903

  • Memperbaiki IllegalArgumentException saat menggunakan defaultNavHost="true" sebagai fragment turunan. b/79656847

  • Memperbaiki StackOverflowError saat menggunakan NavDeepLinkBuilder. b/109653065

  • Memperbaiki IllegalArgumentException saat menavigasi kembali ke grafik bertingkat. b/80453447

  • Memperbaiki masalah Fragment yang tumpang-tindih saat menggunakan launchSingleTop. b/79407969

  • Navigation sekarang membuat data sebelumnya sintetis yang benar untuk grafik bertingkat. b/79734195

  • NavigationUI sekarang akan menyorot item yang benar saat grafik bertingkat digunakan sebagai MenuItem. b/109675998

Perubahan API

  • Atribut clearTask untuk tindakan dan API terkaitnya di NavOptions tidak digunakan lagi. b/80338878

  • Atribut launchDocument untuk tindakan dan API terkaitnya di NavOptions 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.