Navigasi

Navigation adalah framework untuk bernavigasi antara 'tujuan' dalam aplikasi Android yang menyediakan API konsisten, baik tujuan tersebut diimplementasikan sebagai Fragment, Activity, maupun komponen lainnya.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
11 Desember 2024 2.8.5 - - 2.9.0-alpha04

Mendeklarasikan dependensi

Untuk menambahkan dependensi pada Navigation, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.

Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:

Groovy

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21'
}
  
dependencies {
  def nav_version = "2.8.4"

  // Jetpack Compose Integration
  implementation "androidx.navigation:navigation-compose:$nav_version"

  // Views/Fragments Integration
  implementation "androidx.navigation:navigation-fragment:$nav_version"
  implementation "androidx.navigation:navigation-ui:$nav_version"

  // Feature module support for Fragments
  implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"

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

  // JSON serialization library, works with the Kotlin serialization plugin.
  implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3"
}

Kotlin

plugins {
  // Kotlin serialization plugin for type safe routes and navigation arguments
  kotlin("plugin.serialization") version "2.0.21"
}

dependencies {
  val nav_version = "2.8.4"

  // Jetpack Compose integration
  implementation("androidx.navigation:navigation-compose:$nav_version")

  // Views/Fragments integration
  implementation("androidx.navigation:navigation-fragment:$nav_version")
  implementation("androidx.navigation:navigation-ui:$nav_version")

  // Feature module support for Fragments
  implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version")

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

  // JSON serialization library, works with the Kotlin serialization plugin
  implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3")
}

Safe Args

Untuk menambahkan Safe Args ke project Anda, sertakan build.gradle berikut ke file classpath tingkat teratas Anda:

Groovy

buildscript {
    repositories {
        google()
    }
    dependencies {
        def nav_version = "2.8.4"
        classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
    }
}

Kotlin

buildscript {
    repositories {
        google()
    }
    dependencies {
        val nav_version = "2.8.4"
        classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version")
    }
}

Anda juga harus menerapkan salah satu dari dua plugin yang tersedia.

Untuk menghasilkan kode bahasa Java yang sesuai bagi modul Java atau modul campuran Java dan Kotlin, tambahkan baris berikut ke file build.gradle aplikasi atau modul Anda:

Groovy

plugins {
  id 'androidx.navigation.safeargs'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs")
}

Atau, untuk menghasilkan kode Kotlin yang sesuai bagi modul khusus Kotlin, tambahkan:

Groovy

plugins {
  id 'androidx.navigation.safeargs.kotlin'
}

Kotlin

plugins {
    id("androidx.navigation.safeargs.kotlin")
}

Anda harus memiliki android.useAndroidX=true dalam file gradle.properties seperti yang dijelaskan dalam Bermigrasi ke AndroidX.

Untuk informasi tentang cara menggunakan ekstensi Kotlin, lihat dokumentasi ktx.

Untuk informasi dependensi selengkapnya, lihat Menambahkan Dependensi Build.

Masukan

Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 2.9

Versi 2.9.0-alpha04

11 Desember 2024

androidx.navigation:navigation-*:2.9.0-alpha04 dirilis. Versi 2.9.0-alpha04 berisi commit ini.

Fitur Baru

Tabel di bawah menyediakan API reified dan KClass.

direalisasikan KClass
composable<TestClass> { } composable(TestClass::class) { }
navigation<NestedGraph>(startDestination = TestClass::class) navigation(route = NestedGraph::class, startDestination = TestClass::class)
dialog<TestClass> {} dialog(TestClass::class) {}
navDeepLink<TestClass>(baseUri) navDeepLink(TestClass::class, baseUri)
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri)
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { }
navController.getBackStackEntry<TestClass>() navController.getBackStackEntry(TestClass::class)
navController.popBackStack<TestClass>(true) navController.popBackStack(TestClass::class, true)
navController.clearBackStack<TestClass>() navController.clearBackStack(TestClass::class)
NavOptions.setPopUpTo<TestClass>() NavOptions.setPopUpTo(TestClass::class)
navOptions { popUpTo<TestClass> {...} } navOptions { popUpTo(TestClass::class) {...} }
NavGraph.setStartDestination<TestClass>() NavGraph.setStartDestination(TestClass::class)
NavGraph.findNode<TestClass>() NavGraph.findNode(TestClass::class)
backStackEntry.toRoute<TestClass>() backStackEntry.toRoute(TestClass::class)
savedStateHandle.toRoute<TestClass>() savedStateHandle.toRoute(TestClass::class)

Perubahan API

  • Overload NavGraph.setStartDestination khusus Kotlin untuk keamanan jenis disembunyikan dari sumber Java. (Ic640c, b/364634035)

Perbaikan Bug

  • Dari Navigation 2.8.5: Memperbaiki masalah saat NavHost dapat menampilkan pengecualian di dalam PredictiveBackHandler jika data sebelumnya dimunculkan ke 1 entri dan kembali sistem dipicu dalam frame yang sama. (I1a429, b/375343407)
  • Dari Navigation 2.8.5: Memperbaiki NavDestination NullPointerException saat memperbarui startDestination grafik. (I99421, b/361560785)

Versi 2.9.0-alpha03

13 November 2024

androidx.navigation:navigation-*:2.9.0-alpha03 dirilis. Versi 2.9.0-alpha03 berisi commit ini.

Fitur Baru

  • Keamanan jenis navigasi kini mendukung class nilai sebagai rute atau sebagai jenis argumen rute. (I9344a, b/374347483)

Perbaikan Bug

  • Memperbaiki ConcurrentModificationException yang dapat terjadi saat LifecycleObserver yang dilampirkan ke NavBackStackEntry memicu perubahan pada data sebelumnya saat LifecycleOwner host seperti Aktivitas atau Fragmen yang berisi mengubah status siklus prosesnya. (Ia9494)

Versi 2.9.0-alpha02

30 Oktober 2024

androidx.navigation:navigation-*:2.9.0-alpha02 dirilis. Versi 2.9.0-alpha02 berisi commit ini.

Kontribusi Eksternal

  • Metode NavController.handleDeepLink(request: NavDeepLinkRequest) umum baru. Terima kasih Konstantin Tskhovrebov! (I3e228)

Versi 2.9.0-alpha01

16 Oktober 2024

androidx.navigation:navigation-*:2.9.0-alpha01 dirilis. Versi 2.9.0-alpha01 berisi commit ini.

Fitur Baru

  • Navigator Kustom kini dapat menandai tujuannya sebagai menerapkan antarmuka SupportingPane yang menunjukkan kepada NavController bahwa tujuan ini akan ditampilkan bersama tujuan lainnya. Dengan menggunakan antarmuka ini, beberapa tujuan dapat menjadi RESUMED secara bersamaan, misalnya. (Id5559)
  • Dari Navigation 2.8.3: Menambahkan pemeriksaan lint baru untuk modul navigation-common, navigation-runtime, dan navigation-compose guna membantu mengidentifikasi rute yang aman dari jenis yang tidak dianotasi dengan benar menggunakan @Serializable. Pemeriksaan ini diterapkan ke semua fungsi ekstensi NavGraphBuilder dan NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • Dari Navigation 2.8.3: Menambahkan pemeriksaan lint baru untuk modul navigation-common, navigation-runtime, dan navigation-compose guna membantu mengidentifikasi rute yang aman dari jenis dengan argumen Enum yang tidak dianotasi dengan benar menggunakan @Keep. Pemeriksaan ini diterapkan ke semua fungsi ekstensi NavGraphBuilder dan NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

Perubahan Perilaku

  • Mencoba menggunakan NavController yang sebelumnya telah DESTROYED kini akan menyebabkan IllegalStateException. (I520da, b/369616172)

Perbaikan Bug

  • Memperbarui pengecualian class Enum not found untuk menyarankan penggunaan anotasi @Keep jika class Enum dihapus dalam build yang diminifikasi. (I90e79, b/358137294)

Masalah Umum

  • Ada masalah dengan aturan lint baru yang ditambahkan di Navigation 2.8.* yang menyebabkan error Obsolete custom lint check saat mencoba menjalankan lint dengan Plugin Android Gradle 8.4+. (b/368070326, b/371463741)

Versi 2.8

Versi 2.8.5

11 Desember 2024

androidx.navigation:navigation-*:2.8.5 dirilis. Versi 2.8.5 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah saat NavHost dapat menampilkan pengecualian di dalam PredictiveBackHandler jika data sebelumnya dimunculkan ke 1 entri dan kembali ke sistem dipicu dalam frame yang sama. (I1a429, b/375343407)
  • Memperbaiki NavDestination NullPointerException saat memperbarui startDestination grafik. (I99421, b/361560785)
  • Memperbaiki masalah yang menyebabkan animasi skala yang tidak terduga saat menggunakan Navigation Compose dan memanggil navigasi dalam frame yang sama dengan animasi saat ini berakhir. (I26cb1, b/353294030)
  • Memperbaiki ConcurrentModificationException yang dapat terjadi saat LifecycleObserver yang dilampirkan ke NavBackStackEntry memicu perubahan pada data sebelumnya saat LifecycleOwner host seperti Aktivitas atau Fragmen yang berisi mengubah status siklus prosesnya. (Ia9494)

Versi 2.8.4

13 November 2024

androidx.navigation:navigation-*:2.8.4 dirilis. Versi 2.8.4 berisi commit ini.

Fitur Baru

Perbaikan Bug

Versi 2.8.3

16 Oktober 2024

androidx.navigation:navigation-*:2.8.3 dirilis. Versi 2.8.3 berisi commit ini.

Fitur Baru

  • Menambahkan pemeriksaan lint baru untuk modul navigation-common, navigation-runtime, dan navigation-compose untuk membantu mengidentifikasi rute aman jenis yang tidak dianotasi dengan benar menggunakan @Serializable. Pemeriksaan ini diterapkan ke semua fungsi ekstensi NavGraphBuilder dan NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816)
  • Menambahkan pemeriksaan lint baru untuk modul navigation-common, navigation-runtime, dan navigation-compose guna membantu mengidentifikasi rute yang aman dari jenis dengan argumen Enum yang tidak dianotasikan dengan benar menggunakan @Keep. Pemeriksaan ini diterapkan ke semua fungsi ekstensi NavGraphBuilder dan NavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)

Perbaikan Bug

  • Memperbaiki masalah saat aturan lint baru yang ditambahkan di Navigation 2.8.* akan menyebabkan error Obsolete custom lint check saat mencoba menjalankan lint dengan Plugin Android Gradle 8.4+. (I1be3d, b/368070326, b/371463741)

Masalah Umum

  • Lint navigasi akan menampilkan error Pemeriksaan lint kustom yang tidak berlaku saat mencoba menjalankan lint dengan Lint 16 (AGP 8.7) atau yang lebih tinggi. (b/371926651)

Versi 2.8.2

2 Oktober 2024

androidx.navigation:navigation-*:2.8.2 dirilis. Versi 2.8.2 berisi commit ini.

Fitur Baru

  • Navigation Type Safety kini mendukung class Serializable yang menyertakan Double, Double?, DoubleArray, DoubleArray?, List<Double>, dan List<Double>? tanpa memerlukan NavType kustom. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)

Perbaikan Bug

  • Meningkatkan pesan error saat Navigasi gagal memetakan argumen rute ke NavType, pesan error baru akan berisi nama argumen, nama lengkap argumen, dan nama lengkap rute. (Id8416, b/346264232)

Versi 2.8.1

18 September 2024

androidx.navigation:navigation-*:2.8.1 dirilis. Versi 2.8.1 berisi commit ini.

Fitur Baru

  • Menambahkan aturan lint baru untuk memastikan penggunaan fungsi popBackStack yang menggunakan jenis class reified saat mencoba popBackStack menggunakan API yang aman untuk jenis. (Ief161, b/358095343)

Perbaikan Bug

  • Navigasi kini mewajibkan rute yang diteruskan ke startDestination NavGraph berisi nilai untuk semua argumen yang diperlukan, yang mencakup argumen yang non-nullable dan tidak memiliki nilai default. (I18e74, b/362594265)
  • Safe args navigasi telah menambahkan dukungan untuk string non-nullable sehingga nilai "null" akan diuraikan dan disimpan ke dalam paket apa adanya. Hal ini berbeda dengan perilaku yang ada saat nilai "null" diuraikan menjadi objek null. Perubahan ini hanya berlaku untuk jenis String non-nullable. String nullable tetap tidak berubah. (I08b4a, b/348936238)
  • NavDestination tidak dapat lagi di-deeplink kecuali melalui deep link yang ditambahkan secara eksplisit ke tujuan. Hal ini juga berarti bahwa Anda hanya dapat menavigasi ke rute tujuan dengan overload fungsi navigasi yang menggunakan rute string. Tindakan ini memperbaiki kerentanan yang memungkinkan deep link ke tujuan yang berpotensi dilindungi. (Ie30e6)

Pembaruan Dependensi

  • Navigation Safe Args kini bergantung pada Kotlin 1.9.24, bukan Kotlin 2.X, sehingga memastikan developer tidak dipaksa untuk mengupdate. (a4129a)
  • Navigation Compose kini bergantung pada Compose 1.7.2.

Versi 2.8.0

4 September 2024

androidx.navigation:navigation-*:2.8.0 dirilis. Versi 2.8.0 berisi commit ini.

Perubahan penting sejak versi 2.7.0

Keamanan Jenis DSL Kotlin Navigasi

  • Navigation kini menyediakan keamanan jenis untuk DSL Kotlin (digunakan oleh Navigation Compose) menggunakan Kotlin Serialization untuk memungkinkan Anda menentukan tujuan dalam grafik navigasi melalui objek dan class data yang aman jenis:
    // Define a home destination that doesn't take any arguments
    @Serializable
    object Home

    // Define a profile destination that takes an ID
    @Serializable
    data class Profile(val id: String)

    // Now define your NavHost using type safe objects
    NavHost(navController, startDestination = Home) {
        composable<Home> {
            HomeScreen(onNavigateToProfile = { id ->
                navController.navigate(Profile(id))
            })
        }
        composable<Profile> { backStackEntry ->
            val profile: Profile = backStackEntry.toRoute()
            ProfileScreen(profile)
        }
    }

Lihat postingan blog Navigation Compose meet Type Safety untuk mengetahui informasi selengkapnya.

Kembali Prediktif Navigation Compose

  • Navigation Compose kini memberikan dukungan untuk kembali dalam aplikasi Prediktif melalui API SeekableTransitionState baru dari compose-animation. Hal ini memungkinkan Anda menggunakan gestur kembali untuk melihat tujuan sebelumnya dengan Transisi kustom sebelum memutuskan untuk melakukan commit transaksi melalui gestur yang telah selesai atau membatalkan.

Composable Fragmen Navigasi

  • Menambahkan artefak navigation-fragment-compose baru yang menyertakan alternatif ComposableNavHostFragment ke NavHostFragment yang memungkinkan Anda menambahkan tujuan composable ke file XML Navigasi. Setiap tujuan composable harus dinyatakan sebagai metode @Composable level atas tanpa argumen yang namanya sepenuhnya memenuhi syarat dan digunakan sebagai atribut android:name di setiap tujuan. Saat menavigasi ke salah satu tujuan ini, fragmen penampung akan dibuat untuk menampilkan konten composable.
  // In HomeScreen.kt
  @Composable
  fun HomeScreen() {
    // Your Composable content here
  }

  // In your navigation.xml
  <composable
    android:id="@+id/home_screen"
    android:name="com.example.HomeScreenKt\$HomeScreen" />

Perubahan Lainnya

  • Navigation Compose kini bergantung pada Compose 1.7.0.
  • Navigation kini menyediakan class CollectionNavType<T> baru, subclass dari NavType<T> untuk argumen berbasis koleksi seperti daftar, array, peta. Semua array NavType default (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType, dan StringArrayType) kini diwarisi dari class baru ini.
  • NavType kini memiliki dukungan bawaan untuk Daftar Int, String, Boolean, Float, dan Long.

Versi 2.8.0-rc01

21 Agustus 2024

androidx.navigation:navigation-*:2.8.0-rc01 dirilis. Versi 2.8.0-rc01 berisi commit ini.

Perbaikan Bug

  • Memperbaiki error navigasi saat meneruskan class Enum level atas sebagai argumen keamanan jenis. (I0ba76, b/358137294)
  • Navigation 2.8 kini berfungsi dengan benar dengan SDK 34 dan tidak akan beralih ke SDK 35 hingga rilis 2.9 bersama dengan library AndroidX lainnya. (b/358798728)

Versi 2.8.0-beta07

7 Agustus 2024

androidx.navigation:navigation-*:2.8.0-beta07 dirilis. Versi 2.8.0-beta07 berisi commit ini.

Masalah Umum

  • Karena b/358137294, hanya Enums yang bertingkat dalam class lain yang didukung secara default. Enums tingkat atas akan didukung dalam rilis berikutnya.

Perbaikan Bug

  • Saat menavigasi ke tujuan duplikat atau bersama, navigasi akan memprioritaskan tujuan yang cocok dan terdekat dari lokasi saat ini dalam grafik. (Ic89a4, b/352006850)
  • Navigasi dalam safe args kini telah menambahkan NavType.EnumType baru. Artinya, jenis Enum tidak lagi memerlukan NavType kustom. Perhatikan bahwa SerialName Enum harus berupa nama yang sepenuhnya memenuhi syarat default. (I66d22, b/346475493)
  • Navigasi dalam safe args telah menambahkan dukungan bawaan untuk jenis argumen nullable, termasuk Int?,Long?, Float?, Boolean?, dan Enum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237)
  • startDestination NavGraph kini akan menggunakan nilai argumen default jika rute startDestination yang diteruskan ke NavGraph sama persis dengan startDestination.route. (I13762, b/354046047)

Versi 2.8.0-beta06

24 Juli 2024

androidx.navigation:navigation-*:2.8.0-beta06 dirilis. Versi 2.8.0-beta06 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan pemeriksaan lint WrongStartDestinationType tidak memeriksa objek Companion pada jenis class yang diteruskan, sehingga lint gagal mendeteksi error. (I92b09)

Versi 2.8.0-beta05

10 Juli 2024

androidx.navigation:navigation-*:2.8.0-beta05 dirilis. Versi 2.8.0-beta05 berisi commit ini.

Perbaikan Bug

  • Memperbaiki error navigasi singleTop saat NavGraphs bertingkat memiliki rute startDestination yang sama. (I17b94, b/294408596)

Versi 2.8.0-beta04

26 Juni 2024

androidx.navigation:navigation-*:2.8.0-beta04 dirilis. Versi 2.8.0-beta04 berisi commit ini.

Perbaikan Bug

  • Navigasi kini mendukung navigasi dengan string kosong dalam argumen jalur. (Ic5dbd, b/339481310)
  • Meningkatkan pesan error untuk serializer kustom yang dideklarasikan langsung di kolom class melalui @Serializable(with =...) untuk mengklarifikasi bahwa saat ini fitur ini tidak didukung. (I052b0, b/341319151)
  • API pengujian SavedStateHandleFactory kini dapat digunakan dalam pengujian non-Android, tetapi akan mengharuskan Robolectric untuk mendukung penguraian argumen dengan Bundle. (I76cdc, b/340966212)
  • Memperbaiki error dari pemulihan status saat melanjutkan aplikasi setelah proses dihentikan dengan menggunakan Navigasi Keamanan Jenis di Compose. (Ia8f38, b/341801005)
  • Memperbaiki masalah di Navigation Compose saat setelah membatalkan Gestur Kembali Prediktif, NavBackStackEntry yang ditampilkan pengguna tidak pernah kembali ke Status Siklus Proses RESUMED. Hal ini juga memastikan tujuan yang ditampilkan kembali dianimasikan dengan benar, bukan langsung muncul setelah fling. (I97a0c, b/346608857)
  • Saat menggunakan Kembali prediktif dengan Navigation Compose, tujuan yang dimunculkan kini akan memiliki urutan z yang tepat, yang dianimasikan dengan benar di atas tujuan yang masuk. (I2077b, b/345993681)

Versi 2.8.0-beta03

12 Juni 2024

androidx.navigation:navigation-*:2.8.0-beta03 dirilis. Versi 2.8.0-beta03 berisi commit ini.

Perubahan API

  • CollectionNavType memiliki metode emptyCollection() abstrak baru. Ganti ini untuk menangani koleksi kosong yang diteruskan sebagai argumen. (Ie4d84, b/341723133)

Perbaikan Bug

  • Menambahkan dokumentasi tentang NavType.serializeAsValue dan serializeAsValues untuk menyoroti bahwa output akhir harus dienkode Uri. (Ida6bd, b/344943214)
  • Memperbaiki error saat memanggil toRoute<T> dengan argumen CollectionNavType null. Saat menavigasi dengan CollectionNavType null, argumen output akan menjadi nilai default yang dideklarasikan di class Serializable, atau nilai return emptyCollection() jika tidak ada nilai default. (I84158, Id630f, b/342672856)

Versi 2.8.0-beta02

29 Mei 2024

androidx.navigation:navigation-*:2.8.0-beta02 dirilis. Versi 2.8.0-beta02 berisi commit ini.

Perbaikan Bug

  • Memperbaiki error ClassCastException saat menggunakan NavBackStackEntry.toRoute dengan NavType kustom nullable. (I1c29b, b/342239473)
  • Memperbaiki masalah pemulihan status data sebelumnya Navigasi yang disebabkan saat mencoba memulihkan entri data sebelumnya yang tidak dapat dijangkau melalui ID dari tujuan saat ini. Karena rute didukung oleh ID, tujuan yang dibuat dengan rute juga terpengaruh. Hal ini juga memperbaiki error yang disebabkan oleh pemanggilan clearBackStack() yang memiliki masalah pokok yang sama. (I423c3, b/339908057)

Versi 2.8.0-beta01

14 Mei 2024

androidx.navigation:navigation-*:2.8.0-beta01 dirilis. Versi 2.8.0-beta01 berisi commit ini.

Perubahan API

  • SavedStateHandle.toRoute() kini menggunakan parameter typeMap untuk jenis argumen kustom. (Ie39fb, b/339026523)
  • Menambahkan API pengujian ke navigation-testing untuk membuat SavedStateHandle dari objek Serializable Kotlin. (Id4867, b/339080702)

Perbaikan Bug

  • Dokumen parameter yang tidak ada untuk fungsi Navigation Kotlin DSL telah ditambahkan. (I26a36)

Versi 2.8.0-alpha08

1 Mei 2024

androidx.navigation:navigation-*:2.8.0-alpha08 dirilis. Versi 2.8.0-alpha08 berisi commit ini.

Safe Args di Navigation Compose

Fungsi ini menggunakan Serialisasi Kotlin untuk memungkinkan Anda menentukan tujuan di grafik navigasi melalui objek dan class data yang aman jenis:

  // Define a home destination that doesn't take any arguments
  @Serializable
  object Home

  // Define a profile destination that takes an ID
  @Serializable
  data class Profile(val id: String)

  // Now define your NavHost using type safe objects
  NavHost(navController, startDestination = Home) {
      composable<Home> {
          HomeScreen(onNavigateToProfile = { id ->
              navController.navigate(Profile(id))
          })
      }
      composable<Profile> { backStackEntry ->
          val profile: Profile = backStackEntry.toRoute()
          ProfileScreen(profile)
      }
  }

Lihat postingan blog Navigation Compose meet Type Safety untuk mengetahui informasi selengkapnya.

Fitur Baru

  • Artefak navigation-fragment-compose kini menyediakan komposisi LocalFragment lokal untuk metode composable dalam ComposableFragment. (If35e5)
  • NavType kini memiliki dukungan bawaan untuk Daftar Int, String, Boolean, Float, dan Long. (I4b6dd, Ia914c, b/188693139)

Versi 2.8.0-alpha07

17 April 2024

androidx.navigation:navigation-*:2.8.0-alpha07 dirilis. Versi 2.8.0-alpha07 berisi commit ini.

Fitur Baru

  • Menambahkan artefak navigation-fragment-compose baru yang menyertakan alternatif ComposableNavHostFragment ke NavHostFragment yang memungkinkan Anda menambahkan tujuan composable ke file XML Navigasi. Setiap tujuan composable harus dinyatakan sebagai metode @Composable level atas tanpa argumen yang namanya sepenuhnya memenuhi syarat dan digunakan sebagai atribut android:name di setiap tujuan. Saat menavigasi ke salah satu tujuan ini, fragmen penampung akan dibuat untuk menampilkan konten composable. (I0ef2e, b/265480755)

    // In HomeScreen.kt
    @Composable
    fun HomeScreen() {
      // Your Composable content here
    }
    
    // In your navigation.xml
    <composable
      android:id="@+id/home_screen"
      android:name="com.example.HomeScreenKt\$HomeScreen" />
    

Perubahan API

Versi 2.8.0-alpha06

3 April 2024

androidx.navigation:navigation-*:2.8.0-alpha06 dirilis. Versi 2.8.0-alpha06 berisi commit ini.

Perubahan API

Perbaikan Bug

  • NavHost kini menggunakan Alignment.TopStart sebagai argumen contentAlignment default. Hal ini selaras dengan default untuk AnimatedContent dan memperbaiki beberapa instance skala yang tidak terduga dari transisi tengah. (I09e72, b/330111602)
  • Saat menggeser gestur kembali prediktif saat menggunakan Navigation Compose, NavHost kini akan menyelesaikan transisi kustom dengan benar, bukan langsung selesai. (I99017, b/327292110)

Versi 2.8.0-alpha05

20 Maret 2024

androidx.navigation:navigation-*:2.8.0-alpha05 dirilis. Versi 2.8.0-alpha05 berisi commit ini.

Fitur Baru

  • Sekarang Anda dapat meneruskan argumen ke startDestination NavGraph secara langsung di rute startDestination tanpa mengandalkan defaultValue. Hal ini juga berlaku untuk NavGraph startDestinations bertingkat. (I0e0b5, b/109505019, b/188693139)

Perubahan API

  • Menambahkan class CollectionNavType<T> abstrak baru, subclass NavType<T> untuk argumen berbasis koleksi seperti daftar, array, peta. (Ic6d63, b/188693139)
  • Semua array NavType default (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType, dan StringArrayType) kini berjenis CollectionNavType (Idcf79, b/188693139)
  • NavType kini menyediakan valueEquals API terbuka baru yang menentukan apakah dua nilai dari jenis yang sama sama dengan satu sama lain. (I6cb97, b/327229511)

Perbaikan Bug

  • Parameter kueri di deep link kini memungkinkan nilai dalam bentuk kurung kurawal di sekitar nama argumen (yaitu {argName}) sebagai nilai yang valid untuk NavTypes berbasis string. Tindakan ini memperbaiki masalah saat nilai tersebut akan dianggap tidak valid (atau tidak ada nilai) untuk semua jenis. (I18302, b/327274038)
  • Fungsi NavController yang mendukung rute seperti navigate atau popBackStack kini dapat mencocokkan rute dengan benar yang diisi dengan argumen Array NavTypes. (Iea805, b/327229511)

Versi 2.8.0-alpha04

6 Maret 2024

androidx.navigation:navigation-*:2.8.0-alpha04 dirilis. Versi 2.8.0-alpha04 berisi commit ini.

Fitur Baru

  • Anda kini dapat menentukan SizeTranform untuk transisi di Navigation Compose dengan menentukannya sebagai bagian dari inisialisasi untuk fungsi composable dan/atau navigation. (I91062, b/296912651)

Perbaikan Bug

  • Memperbaiki masalah saat NavHost di Navigation Compose gagal menampilkan transisi dengan benar saat menggunakan Kembali Sistem tanpa gestur. (Iceeae, b/325998468)

Versi 2.8.0-alpha03

21 Februari 2024

androidx.navigation:navigation-*:2.8.0-alpha03 dirilis. Versi 2.8.0-alpha03 berisi commit ini.

Perubahan API

  • NavBackStackEntry.savedStateHandle kini ditandai sebagai @MainThread karena menggunakan kode yang harus berada di thread utama. (Ibb988, b/299523245)

Perbaikan Bug

  • Memperbaiki masalah di Navigation yang menyebabkan ViewModel NavGraph menjadi DESTROYED terlalu cepat karena ViewModel entri terkait bukan bagian dari status tersimpan. (Ib6bb7, b/317581849)

Pembaruan Dependensi

Versi 2.8.0-alpha02

7 Februari 2024

androidx.navigation:navigation-*:2.8.0-alpha02 dirilis. Versi 2.8.0-alpha02 berisi commit ini.

Fitur Baru

  • Navigation Compose kini menyediakan dukungan untuk Kembali dalam aplikasi Prediktif melalui API SeekableTransitionState baru dari compose-animation. Hal ini memungkinkan Anda menggunakan gestur kembali untuk melihat tujuan sebelumnya dengan Transisi kustom sebelum memutuskan untuk melakukan commit transaksi melalui gestur yang telah selesai atau membatalkan. (I8b8e9)

Versi 2.8.0-alpha01

24 Januari 2024

androidx.navigation:navigation-*:2.8.0-alpha01 dirilis. Versi 2.8.0-alpha01 berisi commit berikut.

Perbaikan Bug

  • Memperbaiki kebocoran BackStackState saat beberapa panggilan saveState di tujuan akan menyebabkan beberapa status disimpan, tetapi hanya status pertama yang dapat dipulihkan. (I598b0, b/309559751)
  • Memperbaiki masalah saat argumen non-String tidak akan ditampilkan dengan benar saat menggunakan helper NavigationUI untuk mengisi judul panel aplikasi. (#636, b/316676794)

Pembaruan Dependensi

Kontribusi Eksternal

  • Terima kasih SimonMarquis karena telah memperbaiki masalah tampilan untuk argumen non-String saat menggunakan helper NavigationUI untuk mengisi judul panel aplikasi.

Versi 2.7.7

Versi 2.7.7

7 Februari 2024

androidx.navigation:navigation-*:2.7.7 dirilis. Versi 2.7.7 berisi commit ini.

Perbaikan Bug

  • Di-backport dari Navigasi 2.8.0-alpha01: Memperbaiki kebocoran BackStackState saat beberapa panggilan saveState() pada satu NavBackStackEntry akan menyebabkan beberapa status disimpan, tetapi hanya status pertama yang disimpan yang dapat dipulihkan. (I598b0, b/309559751)
  • Di-backport dari Navigation 2.8.0-alpha01: Memperbaiki masalah saat argumen non-String tidak akan ditampilkan dengan benar saat menggunakan helper NavigationUI untuk mengisi judul panel aplikasi. (#636, b/316676794)

Kontribusi Eksternal

  • Terima kasih SimonMarquis karena telah memperbaiki masalah tampilan untuk argumen non-String saat menggunakan helper NavigationUI untuk mengisi judul panel aplikasi.

Versi 2.7.6

Versi 2.7.6

13 Desember 2023

androidx.navigation:navigation-*:2.7.6 dirilis. Versi 2.7.6 berisi commit ini.

Perbaikan Bug

  • Fungsi NavGraph equals() kini mempertimbangkan node grafik lain dengan benar, bukan hanya node yang memanggil. Hal ini akan memastikan bahwa grafik yang memiliki node dengan ID yang berbeda tidak akan lagi dianggap sama (I401cb, b/311414915)

Versi 2.7.5

Versi 2.7.5

1 November 2023

androidx.navigation:navigation-*:2.7.5 dirilis. Versi 2.7.5 berisi commit ini.

Peningkatan Performa

  • Meningkatkan performa (baik dari segi waktu maupun jumlah alokasi) perbandingan dua grafik secara signifikan. Artinya, panggilan seperti setGraph yang secara internal membandingkan grafik baru dengan grafik yang ada jauh lebih cepat dan menghasilkan lebih sedikit frame yang dilewati. Terima kasih Michał Z atas analisis menyeluruh yang menghasilkan peningkatan ini. (I6ad62)
  • NavHost kini akan merender tujuan awal pada penerusan komposisi pertama, bukan menunggu penerusan kedua untuk membaca status yang diperbarui. (I439a7, b/304852206)

Perbaikan Bug

  • Memperbaiki masalah saat data sebelumnya akan muncul jika Anda memanggil setGraph lebih dari sekali dengan grafik yang sama persis hanya jika ada tujuan dalam grafik yang berisi tindakan yang menautkan dua tujuan. (Ieaed7)
  • Dialog yang dibuka dan ditutup secara berurutan tidak akan lagi bocor ke daftar NavController.visibleEntries. (I67586, b/287969970)
  • Saat entri muncul, diikuti dengan perubahan konfigurasi, ViewModel entri kini akan dihapus dengan benar jika saveState bernilai salah. (Idf242, b/298164648)
  • Memperbaiki masalah yang menyebabkan NavController dapat menangani deep link yang sama lebih dari sekali jika data sebelumnya benar-benar kosong sebelum perubahan konfigurasi atau panggilan ke setGraph hanya jika Intent yang masuk memiliki tanda FLAG_ACTIVITY_NEW_TASK yang ditetapkan. (I73c7f)

Update Dependensi

  • Navigasi dengan Fragment kini bergantung pada Fragment 1.6.2, memperbaiki masalah saat instance ViewModel fragmen bertingkat tidak akan dihapus saat memanggil clearBackStack.

Versi 2.7.4

Versi 2.7.4

4 Oktober 2023

androidx.navigation:navigation-*:2.7.4 dirilis. Versi 2.7.4 berisi commit ini.

Fitur Baru

  • Menambahkan dukungan untuk popUpTo agar dapat menggunakan rute dengan argumen untuk memungkinkan kembali ke entri tertentu yang menggunakan argumen yang sama persis, yang cocok dengan dukungan yang ditemukan di popBackStack. (I731f4, b/299255572)

Perbaikan Bug

  • Memperbaiki masalah saat mengganggu navigasi dengan navigasi lain dengan popUpTo akan menyebabkan FragmentNavigator mengalami error. (I3c848, b/301887045)
  • Memperbaiki masalah saat menekan kembali sistem menyebabkan currentDestination tidak diupdate dengan benar agar cocok dengan Fragment yang ditampilkan. (Id0d6c, b/289877514)
  • Siklus proses DialogFragment kini akan berpindah dengan benar ke status RESUMED saat dialog di atasnya ditutup. (I88f0d, b/301811387)

Versi 2.7.3

Versi 2.7.3

20 September 2023

androidx.navigation:navigation-*:2.7.3 dirilis. Versi 2.7.3 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah di Navigasi dengan Fragment yang menyebabkan daftar visibleEntries berisi entri yang salah. (I5caa9, b/288520638)
  • Memperbaiki masalah yang menyebabkan tujuan Floating Window (yaitu Dialogs, Bottomsheets, dll.) tidak pernah mendapatkan callback Lifecycle RESUMED. (I3b866, b/287505132)

Versi 2.7.2

Versi 2.7.2

6 September 2023

androidx.navigation:navigation-*:2.7.2 dirilis. Versi 2.7.2 berisi commit ini.

Perbaikan Bug

  • Navigation kini bergantung pada Lifecycle 2.6.2, yang memperbaiki interaksi antara rememberSaveable dan NavHost Navigation Compose yang akan menyebabkan status tujuan rememberSaveable dan instance SavedStateHandle milik ViewModel tidak dipulihkan dengan benar setelah penghentian dan pembuatan ulang proses. (b/298059596, b/289436035)
  • Memperbaiki masalah saat menampilkan beberapa dialog di Navigation Compose secara bersamaan dengan dialog yang sebagian dikaburkan (misalnya, bukan dialog paling atas) akan berada dalam status Siklus Proses CREATED, bukan status STARTED. (aosp/2728520, b/289257213)
  • Memperbaiki masalah saat menampilkan beberapa dialog di Navigation Compose secara bersamaan, saat menutup dialog paling atas akan menyebabkan dialog paling atas yang baru terjebak dalam status Siklus Proses STARTED, bukan berpindah dengan benar ke RESUMED. (aosp/2629401, b/286371387)
  • Safe Args Navigasi tidak lagi membuat instance tugasnya dengan cepat jika tidak benar-benar dieksekusi. (I0e385, b/260322841)

Pembaruan Dependensi

  • Navigation Compose kini bergantung pada Compose 1.5.1.

Versi 2.7.1

Versi 2.7.1

23 Agustus 2023

androidx.navigation:navigation-*:2.7.1 dirilis. Versi 2.7.1 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah di Navigasi dengan Compose saat menggunakan Scaffold, Anda mungkin mendapatkan error karena mencoba mengakses Lifecycle.State.DESTROYED ViewModel. (I1dc11, b/268422136)

Versi 2.7.0

Versi 2.7.0

9 Agustus 2023

androidx.navigation:navigation-*:2.7.0 dirilis. Versi 2.7.0 berisi commit ini.

Perubahan penting sejak 2.6.0

Animasi dari Accompanist

Setelah AnimatedContent stabil, kita dapat memindahkan kode dari Accompanist Navigation Animation kembali ke Navigation Compose itu sendiri.

Artinya, semua dukungan untuk menetapkan transisi kustom yang ada di AnimatedNavHost didukung secara langsung di NavHost.

Tidak ada perubahan tambahan yang akan dilakukan pada Animasi Navigasi Accompanist dan kami akan segera menghentikannya secara resmi, beserta panduan tentang cara bermigrasi kembali ke Navigation Compose itu sendiri, tetapi ini akan menjadi kebalikan dari panduan migrasi tanpa perubahan API lain yang diperlukan jika Anda sudah menggunakan Accompanist alpha terbaru (0.31.2-alpha). (b/197140101)

Perbaikan Bug

  • NavHost di Navigation Compose kini dengan benar mengintersep panggilan kembali sistem bahkan setelah Aktivitas DIHENTIKAN dan DILANJUTKAN. (Icb6de, b/279118447)

Update Dependensi

  • Navigation kini bergantung pada Compose 1.5.0 dari 1.1.0.

Versi 2.7.0-rc01

26 Juli 2023

androidx.navigation:navigation-*:2.7.0-rc01 dirilis. Versi 2.7.0-rc01 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah saat lambda EnterTransition dan ExitTransition yang dibuat sebagai bagian dari NavHost berpotensi tetap berada dalam memori bahkan setelah NavHost dihapus dari komposisi. (I893d0)

Masalah Umum

  • Ada masalah dari Navigation 2.6.x yang saat menavigasi dengan popUpTo dapat menyebabkan IllegalArgumentException. Pengecualian ini mungkin dapat dihindari dengan menyusun ulang grafik Anda, mirip dengan saran yang disarankan di sini. (b/287133013)

Versi 2.7.0-beta02

28 Juni 2023

androidx.navigation:navigation-*:2.7.0-beta02 dirilis. Versi 2.7.0-beta02 berisi commit ini.

Perbaikan Bug

  • Navigation Compose kini memiliki urutan z yang tepat untuk transisi kustom yang menggunakan navigasi dengan opsi popUpTo.(/Ib1c3a, b/285153947)

Versi 2.7.0-beta01

7 Juni 2023

androidx.navigation:navigation-*:2.7.0-beta01 dirilis. Versi 2.7.0-beta01 berisi commit ini.

Perbaikan Bug

  • NavHost di Navigation Compose kini mengintersep panggilan kembali sistem dengan benar meskipun setelah Activity menjadi STOPPED dan RESUMED. (Icb6de, b/279118447)

Versi 2.7.0-alpha01

24 Mei 2023

androidx.navigation:navigation-*:2.7.0-alpha01 dirilis. Versi 2.7.0-alpha01 berisi commit ini.

Animasi dari Accompanist

Setelah AnimatedContent stabil, kita dapat memindahkan kode dari Accompanist Navigation Animation kembali ke Navigation Compose itu sendiri.

Artinya, semua dukungan untuk menetapkan transisi kustom yang ada di AnimatedNavHost didukung secara langsung di NavHost.

Tidak ada perubahan tambahan yang akan dilakukan pada Animasi Navigasi Accompanist dan kami akan segera menghentikannya secara resmi, beserta panduan tentang cara bermigrasi kembali ke Navigation Compose itu sendiri, tetapi ini akan menjadi kebalikan dari panduan migrasi tanpa perubahan API lain yang diperlukan jika Anda sudah menggunakan Accompanist alpha terbaru (0.31.2-alpha). (b/197140101)

Perbaikan Bug

  • Dari Navigation 2.6.0-rc02: Memperbaiki masalah pada Navigasi di Fragmen saat menavigasi dengan popUpTo dan memunculkan fragmen dari data sebelumnya tanpa membuat ulang tampilannya akan menyebabkan kembali sistem berhenti berfungsi. (Ieb8d4, b/281726455)

Update Dependensi

  • Navigation kini bergantung pada Compose 1.5.0-beta01.

Versi 2.6.0

Versi 2.6.0

7 Juni 2023

androidx.navigation:navigation-*:2.6.0 dirilis. Versi 2.6.0 berisi commit ini.

Perubahan penting pada Navigasi sejak versi 2.5.0

  • arguments NavBackStackEntry dan arguments yang diteruskan ke OnDestinationChangedListener sekarang hanya merupakan salinan argumen yang tidak dapat diubah yang dibuat saat Anda membuka tujuan. Artinya, setiap perubahan yang dilakukan pada Paket tersebut tidak akan diterapkan dalam akses berikutnya ke instance arguments atau OnDestinationChangedListener lainnya.
  • NavDeepLink kini mendukung nilai default untuk array, yang memungkinkan dukungan bagi parameter kueri berulang yang akan dipetakan ke jenis array argumen. NavType kini juga menyertakan metode default yang dapat diganti untuk menggabungkan dua nilai yang diuraikan.
  • Subclass kustom NavType kini dapat mengganti serializeAsValue untuk melakukan serialisasi nilai ke dalam String, yang memungkinkan serialisasi dan deserialisasi (melalui parseValue) dienkapsulasi sepenuhnya dalam class NavType. StringType kini mengganti metode ini untuk memanggil Uri.encode pada String tertentu.

Perubahan penting pada Navigation Compose sejak versi 2.5.0

  • Saat melihat pratinjau composable dengan NavHost, composable tersebut kini akan menampilkan startDestination NavGraph secara default.
  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) kini mendukung rute dengan argumen yang terisi sebagian atau sepenuhnya. Perhatikan bahwa argumen harus sama persis dengan argumen entri.
  • Mencoba membuat NavDeepLink kosong menggunakannavDeepLink Kotlin DSL kini akan menghasilkan peringatan lint yang menunjukkan bahwa deep link memerlukan uri, action, dan/atau mimetype yang valid.

Perubahan penting pada Navigasi dengan Fragmen sejak versi 2.5.0

  • NavHostFragment tidak lagi mengintersep tombol kembali sistem itu sendiri. Hal ini memungkinkan FragmentManager yang mendasarinya menangani kembali sistem. Hal ini memungkinkan Fragment 1.7.0-alpha01 dan yang lebih baru untuk memberikan animasi Kembali Prediktif Dalam Aplikasi di perangkat Android U.
  • Saat menggunakan Navigation dengan Fragment, mencoba melakukan FragmentTransaction secara manual yang menambahkan fragmen ke data sebelumnya FragmentManager kini akan menampilkan IllegalArgumentException. Anda harus selalu menambahkan fragmen melalui navigate() API.
  • Saat menggunakan string yang sama persis dengan ${applicationId} sebagai placeholder di atribut app:data dan app:dataPattern dalam elemen aktivitas file XML navigasi, placeholder akan otomatis diisi dengan packageName konteks setelah inflasi.
  • FragmentNavigator kini menggunakan API transisi saat membuka dan memunculkan NavBackStackEntries. Hal ini berarti NavBackStackEntry Lifecycle kini akan menunggu penyelesaian efek khusus fragmen masuk dan keluar sebelum memindahkan Lifecycle.State akhir.
  • DialogFragmentNavigator kini menggunakan API transisi saat membuka dan memunculkan NavBackStackEntries. Hal ini berarti NavBackStackEntry Lifecycle kini akan menunggu DialogFragment Lifecycle dipindahkan ke DESTROYED sebelum beralih ke DESTROYED itu sendiri.
  • NavHostFragment kini memungkinkan Anda mengambil NavController segera setelah NavHostFragment dilampirkan ke FragmentManager, bukan hanya setelah onCreate().
  • Dukungan Navigasi untuk Modul Fitur Dinamis kini bergantung pada Library Play Feature Delivery yang terperinci.
  • Safe Args Navigasi kini bergantung pada Plugin Android Gradle versi 7.3.0. Artinya, Safe Args kini hanya kompatibel dengan versi 7.3.0+.

Perubahan penting pada NavigationUI sejak versi 2.5.0

  • Saat meneruskan ID grafik navigasi ke AppBarConfiguration (seperti melalui Menu), NavigationUI sekarang hanya mempertimbangkan tujuan awal grafik navigasi tersebut sebagai tujuan tingkat atas, bukan salah menandai setiap tujuan dalam grafik sebagai tujuan tingkat atas. Perilaku meneruskan ID setiap tujuan tidak berubah. Fungsi yang sama ini tersedia untuk kode Anda sendiri melalui fungsi isTopLevelDestination baru pada AppBarConfiguration.
  • Integrasi setupWithNavController di NavigationUI agar berfungsi dengan panel aplikasi atas kini akan mengurai nilai R.string untuk argumen ReferenceType yang ditemukan di android:label ke dalam nilai String-nya, bukan menghasilkan output bilangan bulat resource yang dibuat otomatis.
  • NavigationUI kini menyediakan log jika gagal menavigasi melalui MenuItem yang dipilih.

Versi 2.6.0-rc02

24 Mei 2023

androidx.navigation:navigation-*:2.6.0-rc02 dirilis. Versi 2.6.0-rc02 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah pada Navigasi di Fragmen saat menavigasi dengan popUpTo dan memunculkan fragmen dari data sebelumnya tanpa membuat ulang tampilannya akan menyebabkan kembali sistem berhenti berfungsi. (Ieb8d4, b/281726455)

Versi 2.6.0-rc01

10 Mei 2023

androidx.navigation:navigation-*:2.6.0-rc01 dirilis. Versi 2.6.0-rc01 berisi commit berikut ini.

Perbaikan Bug

  • Memperbaiki masalah di Navigasi dengan fragmen saat menghapus fragmen melalui navigasi dengan popUpTo dalam callback siklus proses onResume()-nya akan menyebabkan IllegalStateException. (I21884, b/279644470)

Versi 2.6.0-beta01

19 April 2023

androidx.navigation:navigation-*:2.6.0-beta01 dirilis. Versi 2.6.0-beta01 berisi commit ini.

Fitur Baru

  • NavBackStackEntry kini menyediakan implementasi toString kustom. (Iff00b)

Perbaikan Bug

  • Saat menggunakan Navigation dengan Fragment, mencoba melakukan FragmentTransaction secara manual yang menambahkan fragmen ke data sebelumnya FragmentManager kini akan menampilkan IllegalArgumentException. Anda harus selalu menambahkan fragmen melalui navigate() API. (I6d38e)
  • Jika ada navigate yang menambahkan entri dan popBackStack yang menghapusnya dalam frame yang sama, entri teratas yang dihasilkan di data sebelumnya kini akan konsisten kembali ke RESUMED Lifecycle.State. (Id8067, b/276495952)

Versi 2.6.0-alpha09

5 April 2023

androidx.navigation:navigation-*:2.6.0-alpha09 dirilis. Versi 2.6.0-alpha09 berisi commit ini.

Perbaikan Bug

  • Memperbaiki pemeriksaan untuk rute yang tidak valid sehingga jika NavDestination berisi NavArgument non-nullable, rute tujuan ini harus berisi placeholder untuk argumen yang bernama sama dengan NavArgument non-nullable. (Ic62bf, b/274697949)
  • Navigasi deeplink berdasarkan Action/MimeType kini akan gagal jika operasi navigasi tidak memiliki NavArgument non-nullable yang diperlukan oleh NavDestination yang cocok dengan Action/MimeType. (Ibfa17, b/271777424)
  • Saat NavController menetapkan grafik dengan rute dan tujuan yang sama seperti grafik sebelumnya, kini grafik tersebut akan mengganti node grafik saat ini dan tujuan data sebelumnya dengan instance baru dengan benar. Hal ini memperbaiki error saat menggunakan onLaunchSingleTop tanpa menyimpan status di Navigation Compose. Tindakan ini juga memperbaiki error saat menavigasi ke tujuan yang terkait dengan build grafik root dan data sebelumnya yang salah. (I5bc58, b/275258161, b/275407804)

Versi 2.6.0-alpha08

22 Maret 2023

androidx.navigation:navigation-*:2.6.0-alpha08 dirilis. Versi 2.6.0-alpha08 berisi commit ini.

Fitur Baru

  • NavHostFragment kini memungkinkan Anda mengambil NavController segera setelah NavHostFragment dilampirkan ke FragmentManager, bukan hanya setelah onCreate(). (Ic6382, b/220186282)

Perbaikan Bug

  • Memperbaiki NullPointerException saat memunculkan grafik bertingkat yang menyertakan argumen non-nullable. (6b3581, b/249988437)
  • Saat menggunakan kembali sistem setelah melakukan navigasi dengan popUpTo, status NavController akan muncul ke entri yang benar. (I3a8ec, b/270447657)
  • FragmentNavigator kini akan memunculkan entri dengan benar saat data sebelumnya ditampilkan melalui kembali sistem atau popBackStack() dan apakah transaksi menggunakan efek untuk fragmen atau tidak. (I81bdf)
  • Menambahkan fragmen ke FragmentManager FragmentNavigator tanpa menggunakan navigasi tidak akan lagi menyebabkan error. (b17204, b/274167493)

Update Dependensi

Versi 2.6.0-alpha07

8 Maret 2023

androidx.navigation:navigation-*:2.6.0-alpha07 dirilis. Versi 2.6.0-alpha07 berisi commit ini.

Perbaikan Bug

  • Varian API getBackStackEntry, popBackStack, clearBackStack yang mengambil rute kini menggunakan pola rute dengan argumen nullable dan parameter kueri nullable (I22294, b/269302500)
  • Memperbaiki masalah saat memanggil clearBackStack() dari NavController tidak akan menghapus status tersimpan di pengelola fragmen yang terkait dengan data sebelumnya yang dihapus. (Ic1cce, b/271190202)
  • Memperbaiki regresi di 2.6.0-alpha06 yang menyebabkan MenuItem yang salah di BottomNavigationView ditandai saat menggunakan Sistem kembali di antara tab. (I634f6, b/270447657)
  • Memperbaiki regresi di 2.6.0-alpha06 yang menyebabkan NavBackStackEntry tidak dipindahkan ke status RESUMED saat menggunakan Animation. (Ib3589, b/269646882)

Versi 2.6.0-alpha06

22 Februari 2023

androidx.navigation:navigation-*:2.6.0-alpha06 dirilis. Versi 2.6.0-alpha06 berisi commit ini.

Fitur baru

  • Saat melihat pratinjau composable dengan NavHost, composable tersebut kini akan menampilkan startDestination NavGraph secara default. (I2b89f)

Perubahan API

  • Semua overload NavController navigate sekarang dianotasi dengan @MainThread untuk memastikan overload tersebut dipanggil pada thread utama. (I2c0b0, b/263427111)

Perbaikan Bug

  • Memperbaiki error saat mencoba menavigasi menggunakan Navigasi Fragmen Dinamis. (I3ee29, b/268360479)
  • Memperbaiki bug yang menyebabkan menavigasi ke fragmen lain melalui tombol kembali sistem tidak memperbarui panel bawah ke item yang dipilih yang benar (If559f, b/269044426)

Masalah Umum

  • Saat menggunakan Navigasi dengan Fragmen, Siklus Proses NavBackStackEntry gagal mencapai RESUMED saat menggunakan Animation API. (b/269646882)
  • Saat menggunakan Navigation dengan Fragment, dan menavigasi dengan BottomNavigation, jika Anda mencoba memulihkan data sebelumnya dengan beberapa entri, BottomMenuItem tidak diperbarui dengan benar. (b/270447657)
  • Saat menggunakan Navigation dengan Fragment, setelah memulihkan status, NavBackStackEntry Lifecycle tidak mendapatkan DESTROYED saat fragmennya adalah DESTROYED . (b/270610768)

Versi 2.6.0-alpha05

8 Februari 2023

androidx.navigation:navigation-*:2.6.0-alpha05 dirilis. Versi 2.6.0-alpha05 berisi commit ini.

Fitur Baru

  • NavController.popBackStack(route), NavController.getBackStackEntry(route), NavController.clearBackStack(route) kini mendukung rute dengan argumen yang terisi sebagian atau sepenuhnya. Perhatikan bahwa argumen harus sama persis dengan argumen entri. (Iebd28, Ic678c, I3b37b, b/257514373)
  • FragmentNavigator kini menggunakan API transisi saat membuka dan memunculkan NavBackStackEntries. Hal ini berarti NavBackStackEntry Lifecycle kini akan menunggu penyelesaian efek khusus fragmen masuk dan keluar sebelum memindahkan Lifecycle.State akhir. (I3cb19, b/238686802)
  • DialogFragmentNavigator kini menggunakan API transisi saat membuka dan memunculkan NavBackStackEntries. Hal ini berarti NavBackStackEntry Lifecycle kini akan menunggu DialogFragment Lifecycle dipindahkan ke DESTROYED sebelum beralih ke DESTROYED itu sendiri. (I53ee5, b/261213893)

Perubahan API

  • NavigatorState kini menyediakan prepareForTransition API untuk memungkinkan Navigator memindahkan NavBackStackEntries ke Lifecycle.State menengah. (I42c21, b/238686802)
  • Anda kini dapat mengakses data sebelumnya yang terkait dengan NavGraphNavigator atau ComposeNavigator melalui properti backstack. ComposeNavigator kini juga menampilkan callback onTransitionComplete() untuk menandai NavBackStackEntry yang telah menjalankan navigasi atau operasi popBackStack sebagai selesai. (I02062, I718db, b/257519195)

Perbaikan Bug

  • Status navigator kini tidak akan beroperasi saat menggunakan push/popWithTransition API dan entri sudah ditangani. (Iadbfa, b/261213893)
  • Saat menggunakan launchSingleTop dengan NavGraph bertingkat, semua tujuan yang dimulai dari tujuan asli ke startDestination hanya akan ditambahkan dengan benar ke bagian atas data sebelumnya. (Id4bea, b/253256629)
  • Navigation kini akan mengganti instance DialogFragment dengan benar saat membuka tujuan yang sama dan menyetel flag launchSingleTop sebagai benar (true). (I45b5a, b/149572817)
  • Navigation SafeArgs tidak akan lagi menyebabkan error kompilasi saat menggunakan argumen yang panjangnya tepat 19 karakter. (Id60bc, b/257110095)

Versi 2.6.0-alpha04

9 November 2022

androidx.navigation:navigation-*:2.6.0-alpha04 dirilis. Versi 2.6.0-alpha04 berisi commit ini.

Fitur Baru

  • Subclass kustom NavType kini dapat mengganti serializeAsValue untuk melakukan serialisasi nilai ke dalam String, yang memungkinkan serialisasi dan deserialisasi (melalui parseValue) dienkapsulasi sepenuhnya dalam class NavType. StringType kini mengganti metode ini untuk memanggil Uri.encode pada String tertentu. (Ie5213, b/247637434)
  • NavigationUI kini menyediakan log jika gagal menavigasi melalui MenuItem yang dipilih. (I2af5a, b/247730357)

Perbaikan Bug

  • Deep link navigasi kini diuraikan dengan lambat, bukan pada inisialisasi grafik, yang dapat meningkatkan performa aplikasi saat diluncurkan. (Iab0ab)
  • Memperbaiki error yang disebabkan oleh navigasi ke atas setelah deep linking ke tujuan dengan argumen default null. (I51c24, b/243183636)

Pembaruan Dependensi

  • Dukungan Navigasi untuk Modul Fitur Dinamis kini bergantung pada Library Play Feature Delivery yang terperinci. (Ib4ddc)
  • Safe Args Navigasi kini bergantung pada Plugin Android Gradle versi 7.3.0. Artinya, Safe Args kini hanya kompatibel dengan versi 7.3.0+. (I47e49)

Versi 2.6.0-alpha03

24 Oktober 2022

androidx.navigation:navigation-*:2.6.0-alpha03 dirilis. Versi 2.6.0-alpha03 berisi commit ini.

Perbaikan Bug

  • Dari Navigation 2.5.3: NavHost tidak lagi menyebabkan NoSuchElementException saat tidak ada tujuan yang tersedia untuk ditulis oleh Crossfade. Metode ini hanya akan melewati komposisi. (Ieb46e, b/253299416)
  • Dari Navigation 2.5.3: Memperbaiki masalah saat status Compose yang disimpan (misalnya, penggunaan rememberSaveable) tidak dilupakan dan dihapus saat tujuan dikeluarkan dari data sebelumnya. (I64949)

Update Dependensi

Versi 2.6.0-alpha02

5 Oktober 2022

androidx.navigation:navigation-*:2.6.0-alpha02 dirilis. Versi 2.6.0-alpha02 berisi commit ini.

Perubahan Perilaku

  • Saat meneruskan ID grafik navigasi ke AppBarConfiguration (seperti melalui Menu), NavigationUI sekarang hanya mempertimbangkan tujuan awal grafik navigasi tersebut sebagai tujuan tingkat atas, bukan salah menandai setiap tujuan dalam grafik sebagai tujuan tingkat atas. Perilaku meneruskan ID setiap tujuan tidak berubah. Fungsi yang sama ini tersedia untuk kode Anda sendiri melalui fungsi isTopLevelDestination baru pada AppBarConfiguration. (Ie936e, b/238496771)

Perbaikan Bug

  • Komponen navigation:navigation-fragment kini bergantung pada Fragment versi 1.5.2. (I00ba4)
  • Item menu yang dipilih tidak akan diperbarui lagi saat menavigasi ke tujuan FloatingWindow seperti dialog. (I4cde8, b/240308330)

Versi 2.6.0-alpha01

7 September 2022

androidx.navigation:navigation-*:2.6.0-alpha01 dirilis. Versi 2.6.0-alpha01 berisi commit berikut.

Fitur Baru

  • Integrasi setupWithNavController di NavigationUI agar berfungsi dengan panel aplikasi atas kini akan mengurai nilai R.string untuk argumen ReferenceType yang ditemukan di android:label ke dalam nilai String-nya, bukan menghasilkan output bilangan bulat resource yang dibuat otomatis. (I5f803, b/167959935)
  • NavDeepLink kini mendukung nilai default untuk array, yang memungkinkan dukungan bagi parameter kueri berulang yang akan dipetakan ke jenis array argumen. NavType kini juga menyertakan metode default yang dapat diganti untuk menggabungkan dua nilai yang diuraikan. (Id68c3, b/209977108)
  • Saat menggunakan string yang sama persis dengan ${applicationId} sebagai placeholder di atribut app:data dan app:dataPattern dalam elemen aktivitas file XML navigasi, placeholder akan otomatis diisi dengan packageName konteks setelah inflasi. (Iaabde, b/234223561)
  • Mencoba membuat NavDeepLink kosong menggunakannavDeepLink Kotlin DSL kini akan menghasilkan peringatan lint yang menunjukkan bahwa deep link memerlukan uri, action, dan/atau mimetype yang valid. (I08d2f, b/154038883)

Perubahan API

  • Menambahkan fungsi ekstensi NavDestination baru untuk mengurai label dinamis dengan argumen dalam bentuk android:label="{arg}" menjadi String. Mendukung argumen ReferenceType dengan menguraikan nilai R.string ke dalam nilai String-nya. (I07d89, b/236269380)

Perubahan Perilaku

  • arguments NavBackStackEntry dan arguments yang diteruskan ke OnDestinationChangedListener sekarang hanya merupakan salinan argumen yang tidak dapat diubah yang dibuat saat Anda membuka tujuan. Artinya, setiap perubahan yang dilakukan pada Paket tersebut tidak akan diterapkan dalam akses berikutnya ke instance arguments atau OnDestinationChangedListener lainnya. (I676f5)

Perbaikan Bug

  • Dari Navigation 2.5.2: Dynamic Navigation kini berupaya menginstal tujuan Activity dengan benar dari modul lain sebelum menuju ke sana. (Ia2c16, b/240292838)
  • Dari Navigation 2.5.2: Navigation kini akan mengganti instance Fragment dengan benar saat membuka tujuan yang sama dan menyetel flag launchSingleTop ke benar (true). (I5a2f1, b/237374580)
  • Dari Navigation 2.5.2: Memperbaiki IllegalStateException yang disebabkan oleh navigasi ke grafik bertingkat ganda yang berbagi induk dengan tujuan awal yang baru muncul. (I9f7cb, b/243778589)

Versi 2.5

Versi 2.5.3

24 Oktober 2022

androidx.navigation:navigation-*:2.5.3 dirilis. Versi 2.5.3 berisi commit ini.

Perbaikan Bug

  • NavHost tidak lagi menyebabkan NoSuchElementException saat tidak ada tujuan yang tersedia untuk ditulis oleh Crossfade. Metode ini hanya akan melewati komposisi. (Ieb46e, b/253299416)
  • Memperbaiki masalah saat status Compose yang disimpan (misalnya, penggunaan rememberSaveable) tidak dilupakan dan dihapus saat tujuan dikeluarkan dari data sebelumnya. (I64949)

Versi 2.5.2

7 September 2022

androidx.navigation:navigation-*:2.5.2 dirilis. Versi 2.5.2 berisi commit ini.

Perbaikan Bug

  • Dynamic Navigation kini mencoba menginstal tujuan Activity dari modul lain dengan benar sebelum menuju ke sana. (Ia2c16, b/240292838)
  • Navigation kini akan mengganti instance Fragment dengan benar saat membuka tujuan yang sama dan menyetel flag launchSingleTop sebagai benar (true). (I5a2f1, b/237374580)
  • Memperbaiki IllegalStateException yang disebabkan oleh navigasi ke grafik bertingkat ganda yang berbagi induk dengan tujuan awal yang baru muncul. (I9f7cb, b/243778589)

Pembaruan Dependensi

Versi 2.5.1

27 Juli 2022

androidx.navigation:navigation-*:2.5.1 dirilis. Versi 2.5.1 berisi commit ini.

Perbaikan Bug

  • Navigation Safe Args tidak lagi menyebabkan peringatan penghentian di class yang dihasilkan saat menggunakan jenis argumen kustom yang disimpan di Bundle. (Id86ed, b/237725966)

Update Dependensi

Versi 2.5.0

29 Juni 2022

androidx.navigation:navigation-*:2.5.0 dirilis. Versi 2.5.0 berisi commit ini.

Perubahan penting sejak versi 2.4.0

  • Integrasi CreationExtras - Navigation kini memiliki kemampuan untuk menyediakan ViewModelProvider.Factory stateless melalui CreationExtras Lifecycle 2.5.0.

Navigation SafeArgs

  • Navigation Safe Args telah mengupgrade dependensi Android Gradle Plugin untuk bergantung pada 7.0.4, sehingga kompatibilitas untuk versi AGP sebelum 7.0 akan diturunkan.
  • Menambahkan dukungan untuk atribut namespace build.gradle yang akan digunakan, bukan applicationId.

Perubahan Lainnya

  • visibleEntries API tidak lagi bersifat eksperimental dan menyediakan fungsi untuk mengambil semua entri yang tujuannya saat ini terlihat sesuai dengan NavController.

Versi 2.5.0-rc02

15 Juni 2022

androidx.navigation:navigation-*:2.5.0-rc02 dirilis. Versi 2.5.0-rc02 berisi commit ini.

Perbaikan Bug

  • Memperbaiki error yang disebabkan oleh peralihan cepat di antara tujuan bawah saat menggunakan Navigation Compose NavHost. (I3979a, b/234054916)
  • Navigation SafeArgs tidak akan error lagi saat menggunakan applicationIdSuffix dan namespace tanpa applicationId atau saat applicationId dan namespace berbeda. (I754b1, b/233119646)
  • NavArgument kini memiliki fungsi toString() kustom untuk menampilkan nilai internal argumen. (I900a8)

Versi 2.5.0-rc01

11 Mei 2022

androidx.navigation:navigation-*:2.5.0-rc01 dirilis. Versi 2.5.0-rc01 berisi commit ini.

Fitur Baru

  • Menambahkan aturan lint baru untuk memperingatkan agar tidak menempatkan elemen <deeplink> di dalam elemen <activity> dalam file navigation.xml Anda.(Ic15a5, b/178403185)

Perbaikan Bug

  • Cakupan composable di NavHost dan DialogHost kini dibuang dalam urutan yang diharapkan, yaitu composable dalam dibuang sebelum composable luar. (I157e6)
  • Navigation SafeArgs kini menggunakan PathSensitivity.RELATIVE di ArgumentsGenerationTask untuk memungkinkan kemampuan merelokasi cache. Ini berarti entri cache kini dapat digunakan kembali dari build CI ke build lokal. (I5f67c, b/173420454)
  • Aturan lint UnrememberedGetBackStackEntryDetector telah diperbarui untuk memastikan bahwa panggilan remember yang mengelilingi panggilan ke getBackStackEntry() juga meneruskan objek NavBackStackEntry sebagai kunci.(Ib7081, b/227382831)

Versi 2.5.0-beta01

20 April 2022

androidx.navigation:navigation-*:2.5.0-beta01 dirilis. Versi 2.5.0-beta01 berisi commit ini.

Perbaikan Bug

  • DialogNavigator sekarang menggunakan popWithTransition saat menjalankan panggilan dismiss(). Tindakan ini memperbaiki kondisi race saat menggunakan ViewModel dalam tujuan dialog yang akan menyebabkan IllegalStateException ketika menutup Dialog dengan menggunakan sistem kembali atau mengetuk di luar dialog untuk keluar. (Id7376, b/226552301)

Update Dependensi

  • Navigasi kini bergantung pada Lifecycle 2.5.0-beta01, yang memperbaiki IllegalStateException ketika menyarangkan satu NavHost dalam NavHost lain di tab navigasi bawah non-utama saat menggunakan beberapa data sebelumnya.

Versi 2.5.0-alpha04

6 April 2022

androidx.navigation:navigation-*:2.5.0-alpha04 dirilis. Versi 2.5.0-alpha04 berisi commit ini.

Perubahan API

Perbaikan Bug

  • NavHost kini bergantung pada visibleEntries dari NavController untuk menentukan entri mana yang akan ditulis. Ini berarti bahwa saat menggunakan NavHost bertingkat, NavHost kini akan dianimasikan dengan benar. (I4ba2b, b/225394514)
  • visibleEntries StateFlow yang disediakan oleh NavController kini didasarkan pada status Siklus Proses maksimum entri, bukan status Siklus Proses saat ini. Artinya, meskipun siklus proses host navController berada di bawah STARTED, daftar keseluruhan yang terlihat akan tetap sama. (I9e2a8, b/225394514)
  • SavedStateViewFactory sekarang mendukung penggunaan CreationExtras meskipun diinisialisasi dengan SavedStateRegistryOwner. Jika tambahan disediakan, argumen yang diinisialisasi akan diabaikan. (I6c43b, b/224844583)
  • NavDeepLink kini dapat mengurai URI dengan parameter kueri tunggal tanpa nilai. (I0efe8, b/148905489)
  • String kosong kini dianggap sebagai argumen yang valid di deep link. (I70a0d, b/217399862)
  • Navigation Safe Args tidak akan lagi error saat menggunakan namespace dan tidak akan ada AndroidManifest.xml. (I17ccf, b/227229815)

Versi 2.5.0-alpha03

23 Februari 2022

androidx.navigation:navigation-*:2.5.0-alpha03 dirilis. Versi 2.5.0-alpha03 berisi commit ini.

Perubahan API

  • Anda kini dapat meneruskan CreationExtras ke by navGraphViewModels untuk membuat ViewModel. (I29217, b/217618359)

Perbaikan Bug

  • NavDeepLinks kini mendukung karakter baris baru yang dienkode yang disematkan dalam rute/URI deep link dengan benar. (I513d1, b/217815060)
  • CreationExtras kini berfungsi dengan benar saat digunakan dengan NavBackStackEntries untuk membuat ViewModels. (I69161, b/217617710)
  • Navigation Safe Args kini mendukung penggunaan namespace yang ditentukan di build.gradle sebagai ganti paket di AndroidManifest. (I659ef, b/217414933)

Versi 2.5.0-alpha02

9 Februari 2022

androidx.navigation:navigation-*:2.5.0-alpha02 dirilis. Versi 2.5.0-alpha02 berisi commit ini.

Perbaikan Bug

  • Dari Navigation 2.4.1: NavHostFragment kini akan menetapkan OnBackPressedDispatcher dengan benar saat menggunakan viewbinding dengan grafik bertingkat. (Ifbb51, b/214577959)
  • Dari Navigation 2.4.1: Saat melakukan deep linking melalui beberapa NavGraph bertingkat, data sebelumnya kini akan menyertakan tujuan awal perantara dengan benar. (I504c0, b/214383060)

Versi 2.5.0-alpha01

26 Januari 2022

androidx.navigation:navigation-*:2.5.0-alpha01 dirilis. Versi 2.5.0-alpha01 berisi commit ini.

Fitur Baru

Perbaikan Bug

  • Memperbaiki masalah saat mengakses ViewModel yang dibuat melalui by navGraphViewModels() dari onCreate() Fragment akan gagal dengan IllegalStateException. (I8a14d)
  • NavDeepLink tidak akan lagi mendekode argumen dua kali, yang berarti argumen yang tepat sekarang diteruskan ke tujuan akhir Anda. (I31b0a, b/210711399)

Safe Args

  • Safe Args sekarang bergantung pada Plugin Android Gradle versi 7.0.4. Hal ini berarti Safe Args Navigation tidak akan kompatibel lagi dengan Android Studio versi sebelum 7.0, tetapi sekarang kompatibel dengan Plugin Android Gradle 7.1.0 dan yang lebih baru. (I41c88, b/213086135, b/207670704)

Versi 2.4.2

Versi 2.4.2

6 April 2022

androidx.navigation:navigation-*:2.4.2 dirilis. Versi 2.4.2 berisi commit ini.

Perbaikan Bug

Versi 2.4.1

Versi 2.4.1

9 Februari 2022

androidx.navigation:navigation-*:2.4.1 dirilis. Versi 2.4.1 berisi commit ini.

Perbaikan Bug

  • NavHostFragment kini akan menetapkan OnBackPressedDispatcher dengan benar saat menggunakan viewbinding dengan grafik bertingkat. (Ifbb51, b/214577959)
  • Saat melakukan deep linking melalui beberapa NavGraph bertingkat, data sebelumnya kini akan menyertakan tujuan awal perantara dengan benar. (I504c0, b/214383060)
  • Di-backport dari Navigation 2.5.0-alpha01: Memperbaiki masalah saat mengakses ViewModel yang dibuat melalui by navGraphViewModels() dari onCreate() Fragment akan gagal dengan IllegalStateException. (I8a14d)
  • Di-backport dari Navigation 2.5.0-alpha01: NavDeepLink tidak lagi mendekode argumen dua kali, yang berarti bahwa argumen yang didekode dengan benar sekarang diteruskan ke tujuan akhir Anda. (I31b0a, b/210711399)
  • Di-backport dari Navigation 2.5.0-alpha01: Safe Args kini bergantung pada Plugin Android Gradle versi 7.0.4. Artinya, Safe Args Navigation tidak akan kompatibel lagi dengan Android Studio versi sebelum 7.0, tetapi sekarang kompatibel dengan Plugin Android Gradle 7.1.0 dan yang lebih baru. (I41c88, b/213086135, b/207670704)

Versi 2.4.0

Versi 2.4.0

26 Januari 2022

androidx.navigation:navigation-*:2.4.0 dirilis. Versi 2.4.0 berisi commit ini.

Perubahan penting sejak versi 2.3.0

  • Semua artefak Navigation telah ditulis ulang dalam Kotlin. Hal ini meningkatkan nullability class menggunakan generik (seperti subclass NavType). Semua fungsi ekstensi Kotlin yang dulunya merupakan bagian dari artefak -ktx telah dipindahkan ke artefak utamanya masing-masing. Artefak -ktx akan terus dipublikasikan, tetapi sepenuhnya kosong.
  • Artefak navigation-fragment sekarang berisi implementasi bawaan dari tata letak dua panel melalui AbstractListDetailFragment baru. Fragmen ini menggunakan SlidingPaneLayout untuk mengelola panel daftar (yang disediakan oleh subclass Anda) dan panel detail, yang menggunakan NavHostFragment sebagai implementasinya, seperti yang dapat dilihat di contoh implementasi kami.
  • Metode currentBackStackEntryAsFlow() pada NavController menyediakan Flow yang akan muncul setiap kali NavBackStackEntry saat ini berubah. Alur ini dapat digunakan sebagai alternatif untuk mengelola OnDestinationChangedListener secara manual.
  • NavController sekarang menawarkan kemampuan untuk mengambil daftar semua instance NavBackStackEntry yang terlihat sebagai StateFlow melalui properti visibleEntries eksperimental.
  • Sekarang Anda dapat memperluas class NavType untuk membuat NavTypes kustom. Jenis kustom hanya didukung saat membuat grafik navigasi secara terprogram, misalnya melalui Navigation Graph Kotlin DSL.
  • Navigation kini menyediakan findStartDestination() dan getHierarchy() API yang dapat digunakan untuk membantu menerapkan NavigationUI kustom. findStartDestination() adalah fungsi ekstensi di NavGraph yang akan menemukan tujuan awal sebenarnya yang akan ditampilkan saat Anda membuka grafik, meskipun startDestination itu sendiri merupakan NavGraph bertingkat. getHierarchy() adalah fungsi di NavDestination yang dapat digunakan untuk memverifikasi apakah tujuan tertentu berada dalam hierarki tujuan lain.

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • Metode NavigationUI yang menggunakan BottomNavigationView telah diperbarui agar menggunakan superclass yang diperkenalkan di Material 1.4.0, NavigationBarView. Hal ini memungkinkan metode ini untuk digunakan dengan NavigationRailView.

  • Saat meng-inflate elemen <action> melalui XML, atribut animasi dapat menggunakan atribut yang diambil dari tema menggunakan sintaksis app:enterAnim="?attr/transitionEnter".

  • Safe Args sekarang menghasilkan metode fromSavedStateHandle() untuk setiap class NavArgs. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    

Rute Navigation dan Kotlin DSL

Versi Navigation sebelumnya bergantung pada setiap tujuan yang memiliki ID bilangan bulat konstan yang akan mengidentifikasinya secara unik dari tujuan yang setara dan memungkinkan Anda untuk melakukan navigate() ke tujuan tersebut secara langsung atau melalui tindakan. Meskipun sistem ini tetap valid dan berguna, terutama ketika Anda menentukan grafik navigasi dalam XML dan dapat menggunakan konstanta R.id yang dihasilkan otomatis atau Safe Args (yang menggunakan konstanta tersebut untuk menghasilkan kode pada waktu build), sistem bilangan bulat unik ini tidak memahami makna semantik dan ekspresi yang diperlukan untuk mendukung grafik dinamis sepenuhnya yang dibuat secara terprogram pada runtime melalui Navigation Kotlin DSL.

Rilis ini memperkenalkan opsi baru untuk mengidentifikasi tujuan secara unik dalam grafik navigasi menurut rute. Rute adalah String yang menentukan jalur unik ke suatu tujuan. Semua metode DSL Kotlin yang mengambil ID tujuan kini tidak digunakan lagi dan diganti dengan API setara yang menggunakan rute.

Setiap rute harus diperlakukan sebagai bagian 'jalur' dari Uri yang menentukan tujuan tersebut, misalnya, home, profile/{userId}, profile/{userId}/friends, dll. Saat identitas tujuan dikaitkan dengan bagian konten tertentu, argumen dinamis tersebut harus menjadi bagian dari rute yang mengikuti aturan yang sama seperti deep link implisit.

Semua NavController API yang sebelumnya hanya menggunakan ID sekarang memiliki overload yang menggunakan String rute. Ini termasuk navigate(), popBackStack(), popUpTo(), dan getBackStackEntry().

Hal ini memiliki beberapa implikasi API:

  • Properti Kotlin popUpTo pada DSL Kotlin tidak digunakan lagi dan digantikan dengan popUpToId.
  • getStartDestination() API tidak digunakan lagi dan digantikan dengan getStartDestinationId().

Tidak seperti saat menavigasi menurut ID, menavigasi menurut rute akan mengikuti aturan yang sama seperti deep link implisit karena Anda dapat langsung menavigasi ke tujuan mana pun dalam grafik bertingkat. Hal ini memastikan bahwa rute tersebut dapat digunakan dalam project multi-modul tanpa menambahkan deep link yang terlihat dari luar secara eksplisit ke setiap tujuan.

Navigation Compose

Artefak navigation-compose menyediakan integrasi antara Navigation Component dan Jetpack Compose. Artefak ini menggunakan fungsi @Composable sebagai tujuan dalam aplikasi Anda.

Rilis ini menyediakan:

  • Composable NavHost yang memungkinkan Anda membuat grafik navigasi melalui DSL Kotlin, menggunakan tujuan composable dan dialog, ditambah dukungan untuk Navigator opsional seperti yang berasal dari Accompanist Navigation Material.
  • Dukungan wajib untuk crossfading antar-tujuan. Accompanist Navigation Animation dapat digunakan untuk mengontrol transisi masuk dan keluar menggunakan API Compose eksperimental.
  • Cakupan Lifecycle ke setiap tujuan composable. Setiap tujuan hanya mencapai status RESUMED saat transisi masuk selesai dan langsung turun ke STARTED saat transisi keluar dimulai, sehingga memungkinkan Anda menghindari semua masalah IllegalStateException dan multi-sentuh hanya dengan memicu panggilan navigate ketika status Lifecycle adalah RESUMED.
  • Cakupan ViewModel (melalui viewModel() API dari Lifecycle ViewModel Compose 2.4.0 atau hiltViewModel() dari Hilt Navigation Compose 1.0.0 di tingkat tujuan, yang menyediakan cakupan yang bertahan dari perubahan konfigurasi dan berada di data sebelumnya (saat konten Composable Anda dibuang) serta sinyal di onCleared() ViewModel yang menunjukkan penghapusan permanen dan pembersihan status yang terkait dengan NavBackStackEntry.
  • Cakupan status rememberSaveable di tingkat tujuan, yang memastikan bahwa semua status composable disimpan dan dipulihkan secara otomatis saat Anda kembali ke tujuan.
  • Dukungan penuh untuk menyimpan dan memulihkan status NavController dan status tujuannya setelah penghentian dan pembuatan ulang proses.
  • Integrasi otomatis dengan tombol kembali sistem.
  • Dukungan untuk meneruskan argumen, melampirkan deep link ke tujuan, dan menampilkan hasil ke tujuan sebelumnya.

  • Helper khusus Compose di rememberNavController() dan currentBackStackEntryAsState() untuk memungkinkan pengangkatan status dan menghubungkan NavController ke composable di luar NavHost (seperti menu navigasi bawah).

val navController = rememberNavController()
Scaffold { innerPadding ->
    NavHost(navController, "home", Modifier.padding(innerPadding)) {
        composable("home") {
            // This content fills the area provided to the NavHost
            HomeScreen()
        }
        dialog("detail_dialog") {
            // This content will be automatically added to a Dialog() composable
            // and appear above the HomeScreen or other composable destinations
            DetailDialogContent()
        }
    }
}

Lihat panduan Navigation Compose untuk mengetahui informasi selengkapnya.

Beberapa data sebelumnya

NavController bertanggung jawab untuk mengelola data sebelumnya dari tujuan, menambahkan tujuan ke data sebelumnya saat Anda navigate() (mengarahkan) ke tujuan tersebut, dan menghapusnya saat Anda memanggil popBackStack() atau memicu tombol kembali sistem. Class NavOptions yang sudah ada dan integrasi ke elemen <action> dalam XML grafik navigasi telah diperluas untuk mendukung penyimpanan dan pemulihan data sebelumnya.

Sebagai bagian dari perubahan ini, metode NavigationUI dari onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), dan NavigationView.setupWithNavController() sekarang otomatis menyimpan dan memulihkan status tujuan yang muncul, sehingga memungkinkan dukungan untuk beberapa data sebelumnya tanpa perubahan kode apa pun. Saat menggunakan Navigation dengan Fragment, ini adalah cara yang disarankan untuk diintegrasikan dengan beberapa data sebelumnya.

API yang mendasari untuk menyimpan dan memulihkan status ditampilkan melalui sejumlah platform:

  • Dalam XML Navigation, elemen <action> sekarang dapat menggunakan atribut boolean app:popUpToSaveState dan app:restoreState untuk menyimpan status tujuan apa pun yang muncul melalui app:popUpTo dan memulihkan status yang terkait dengan tujuan yang diteruskan sebagai app:destination:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • Dalam DSL Kotlin navOptions, Anda dapat menambahkan properti boolean restoreState dan properti boolean saveState di builder popUpTo:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.findStartDestination().id) {
        saveState = true
      }
    }
    
  • Dalam membuat objek NavOptions secara manual melalui NavOptions.Builder, Anda dapat menggunakan setRestoreState() dan overload baru ke setPopUpTo() yang memerlukan parameter saveState tambahan.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • Panggilan terprogram ke popBackStack() kini dapat menyertakan parameter saveState tambahan.

  • Anda dapat menggunakan metode clearBackStack() untuk menghapus status yang sebelumnya disimpan dengan popBackStack() atau popUpToSaveState.

Dalam semua kasus, NavController akan menyimpan dan memulihkan status setiap NavBackStackEntry, termasuk instance ViewModel dengan cakupan tujuan navigasi apa pun. Navigator API telah diupdate untuk memungkinkan setiap Navigator mendukung penyimpanan dan pemulihan statusnya sendiri.

Perubahan perilaku

  • NavDeepLinkBuilder kini menambahkan PendingIntent.FLAG_IMMUTABLE ke PendingIntent yang ditampilkan oleh createPendingIntent(), memastikan bahwa API ini berfungsi seperti yang diharapkan saat menargetkan Android 12.
  • Navigation kini bergantung pada Lifecycle 2.3.1 dan menandai setGraph(), popBackStack(), navigateUp(), dan navigate(), yakni metode yang mengupdate NavBackStackEntry Lifecycle, sebagai @MainThread, dengan menyelaraskan Navigation terhadap penerapan thread utama yang diperkenalkan dalam Lifecycle 2.3.0.
  • Deep link sekarang memverifikasi bahwa semua argumen yang diperlukan (yang tanpa nilai default) ada di Uri.
  • Argumen yang diuraikan NavDeepLink sekarang menganggap tanda pagar dengan cara yang sama seperti tanda tanya sebagai pemisah antarsegmen jalur, sehingga mencegah argumen membentang di sepanjang tanda pagar.
  • Saat membuat tindakan, kode Kotlin yang dihasilkan dari Safe Args kini menempatkan argumen tanpa nilai default sebelum argumen dengan nilai default sebagai parameter.
  • Saat membuat argumen, Safe Args kini menetapkan parameter tanpa nilai default lebih dahulu sebelum menetapkan parameter dengan nilai default.
  • Safe-Args sekarang bergantung pada Plugin Android Gradle 4.2.0. Ini berarti Anda tidak lagi mendapatkan peringatan penggunaan applicationIdTextResource.

Masalah umum

  • Perbaikan di Navigation 2.5.0-alpha01: mengakses ViewModel yang dibuat melalui by navGraphViewModels() dari onCreate() Fragment akan gagal dengan IllegalStateException. (b/213504272)
  • Perbaikan di Navigation 2.5.0-alpha01: Safe Args 2.4.0 tidak kompatibel dengan Plugin Android Gradle 7.1.0 dan yang lebih baru. (b/213086135)
  • Deep linking dengan beberapa grafik navigasi bertingkat tidak membuat seluruh data sebelumnya dengan benar. (b/214383060)

Versi 2.4.0-rc01

15 Desember 2021

androidx.navigation:navigation-*:2.4.0-rc01 dirilis. Versi 2.4.0-rc01 berisi commit ini.

Perubahan perilaku

  • Sekarang argumen yang diuraikan NavDeepLink akan menganggap tanda pagar sama seperti tanda tanya, yaitu sebagai pemisah antar-argumen. (I21309, b/180042703)

Perbaikan Bug

  • Deeplink tidak akan lagi mengabaikan argumen dengan nilai yang sama dengan nama placeholder. (If8017, b/207389470)
  • NavController tidak akan lagi error saat membuka tujuan bertingkat menggunakan transisi setelah NavController dipulihkan. (I0f7c9, b/205021623)
  • Sekarang, pesan error jika menggunakan startDestination yang tidak valid akan ditetapkan secara default ke rute tujuan awal, jika tersedia. (I86b9d, b/208041894)

Perbaikan Bug Navigation Compose

  • Memperbaiki potensi error yang disebabkan oleh peralihan cepat antara tujuan awal dan tujuan lain menggunakan item menu navigasi bawah. (Ic8976, b/208887901)
  • Sekarang tujuan dialog telah dipulihkan dengan benar di atas layar setelah perubahan konfigurasi atau penghentian proses. (I4c0dc, b/207386169)
  • Memperbaiki masalah saat mencoba mengambil ViewModel dari NavBackStackEntry dialog akan gagal saat dialog ditutup. (I6b96d, b/206465487)
  • Memperbaiki masalah saat menggunakan tujuan activity dengan NavHost Navigation Compose yang akan menghasilkan rekomposisi tanpa batas. (I8f64c)
  • Memperbaiki kebocoran di Navigation Compose yang menyimpan referensi ke aktivitas lama setelah perubahan konfigurasi atau penghentian proses. (I4efcb, b/204905432)

Perbaikan Bug Safe Args

  • SafeArgs tidak lagi error saat mencoba memulihkan array parcelable kustom setelah penghentian proses. (I618e8, b/207315994)
  • Memperbaiki bug dalam safe args yang tidak akan mengizinkan array boolean memiliki nilai null. (I8c396, b/174787525)

Versi 2.4.0-beta02

3 November 2021

androidx.navigation:navigation-*:2.4.0-beta02 dirilis. Versi 2.4.0-beta02 berisi commit ini.

Perubahan API

  • Penanganan deep link eksplisit dan implisit sekarang otomatis menambahkan flag saveState saat menavigasi ke grafik lain, yang memastikan bahwa kode seperti NavigationUI.setupWithNavController dan kode menggunakan beberapa data sebelumnya berfungsi seperti yang diharapkan. (Ic8807)

Perubahan Perilaku

  • Pola deep link sekarang dikompilasi dengan lambat di NavDeepLink, bukan selama inflation. Ini akan mengoptimalkan waktu inflation grafik navigasi yang menyertakan deep link. (b8d257, b/184149935)

Perbaikan Bug

  • Memperbaiki masalah ketika NavBackStackEntries yang didorong ke bawah ke Lifecycle.State.CREATED setelah berpindah ke Lifecycle.State.STARTED saat NavHost ditambahkan langsung ke setContent() aktivitas. (Ia5ac1, b/203536683)
  • Memperbaiki kondisi race saat memunculkan tujuan DialogFragment dari data sebelumnya sebelum dialog benar-benar ditampilkan tidak akan benar-benar menutup dialog, sehingga terjadi error saat dialog yang salah ditutup secara manual oleh pengguna. (I687e5)
  • Memperbaiki masalah saat onNavDestinationSelected API di NavigationUI akan menampilkan true meskipun Anda tidak benar-benar navigate() ke grafik navigasi tersebut. Proses ini sekarang menggunakan logika yang sama yang digunakan secara internal oleh setupWithNavController hanya untuk memilih MenuItem yang terkait dengan tujuan saat ini menggunakan hierarchy tujuan. (I2b053)

Versi 2.4.0-beta01

27 Oktober 2021

androidx.navigation:navigation-*:2.4.0-beta01 dirilis. Versi 2.4.0-beta01 berisi commit ini.

Fitur Baru

  • Kini Anda dapat menggunakan by navGraphViewModel dengan rute sebagai alternatif menggunakan ID sehingga akan memberikan dukungan yang lebih baik menggunakan DSL Kotlin Navigasi dengan Fragment. (I901e3, b/201446416)

Perubahan API

  • visibleEntries API kini bersifat eksperimental. (I93f6f)

Perbaikan Bug

  • ViewModels tidak akan dihancurkan lagi saat transisi terganggu dengan menavigasi bolak-balik di antara layar yang sama (Id52d8, b/200817333)
  • Argumen NavDeepLink nullable tidak lagi memerlukan nilai default saat menambahkan deep link ke NavDestination. (I5aad4, b/201320030)
  • NavBackStackEntries sekarang dengan Lifecycle yang berbeda tidak lagi dianggap sama. Ini berarti NavHost akan merekomposisi semua tujuan dengan benar saat melakukan navigasi dengan singleTop dan ketika memilih ulang item menu bawah. (I1b351, b/196997433)
  • Memperbaiki masalah terkait AbstractListDetailFragment yang menyebabkan atribut layout_width dan layout_weight pada panel daftar yang ditampilkan oleh onCreateListPaneView() menjadi salah ditangani atau diabaikan. (f5fbf3)
  • Status visual tujuan dialog sekarang tetap sinkron dengan status DialogFragmentNavigator. Ini berarti memanggil dismiss() API asinkron untuk DialogFragment secara manual kini menghapus semua tujuan dialog di atas dialog yang kini ditutup. Hal ini tidak memengaruhi kasus ketika Anda menggunakan popUpTo atau popBackStack() untuk menutup dialog. (I77ba2)
  • AbstractAppBarOnDestinationChangedListener sekarang memiliki pesan error yang lebih jelas untuk onDestinationChanged(). (Ie742d)

Versi 2.4.0-alpha10

29 September 2021

androidx.navigation:navigation-*:2.4.0-alpha10 dirilis. Versi 2.4.0-alpha10 berisi commit ini.

Fitur Baru

  • NavController sekarang menawarkan kemampuan untuk mengambil daftar semua instance NavBackStackEntry yang terlihat melalui visibleEntries StateFlow (Ia964e)
  • rememberNavController() sekarang menggunakan kumpulan instance Navigator opsional yang akan ditambahkan ke NavController yang ditampilkan untuk mendukung Navigator opsional lebih baik seperti dari Accompanist Navigation Material. (I4619e)

Perbaikan Bug

  • Navigation dinamis tidak akan lagi mengalami error saat Activity dibuat ulang. (Ifa6a3, b/197942869)
  • Memperbaiki masalah dengan tombol kembali di sistem yang terjadi hanya setelah muncul kembali ke tujuan composable yang berisi NavHost. (3ed148, b/195668143)
  • SafeArgs sekarang membuat argumen untuk fromBundle() dan fromSavedStateHandle() dalam urutan parameter yang benar. (I824a8, b/200059831)

Versi 2.4.0-alpha09

15 September 2021

androidx.navigation:navigation-*:2.4.0-alpha09 dirilis. Versi 2.4.0-alpha09 berisi commit ini.

Fitur Baru

  • Kini Anda dapat menggunakan metode clearBackStack() untuk menghapus status yang sebelumnya disimpan dengan popBackStack() atau popUpToSaveState. (I80a0f)
  • Kini Anda dapat meneruskan daftar argumen dan/atau deep link ke builder grafik navigasi bertingkat dan akan otomatis ditambahkan ke grafik yang dihasilkan. (I8a470, b/182545357)

Perubahan API

  • Fungsi DSL Kotlin navArgument kini menjadi bagian dari navigation-common, bukan navigation-compose. Anda perlu mengupdate impor untuk terus menggunakan fungsi ini. (I1d095)

Perubahan Perilaku

  • Saat membuat argumen, Safe Args kini menetapkan parameter tanpa nilai default lebih dahulu sebelum menetapkan parameter dengan nilai default. (I89709, b/198493585)

Perbaikan Bug

  • Saat menggunakan Navigation Compose, NavGraphs hanya akan menjadi DESTROYED setelah semua turunannya DESTROYED (dihancurkan). (I86552, b/198741720)
  • Argumen NavDeepLink nullable tidak lagi memerlukan nilai default. (Ia14ef, b/198689811)
  • Memanggil setGraph() dengan grafik baru kini juga akan menghapus data sebelumnya yang tersimpan selain perilaku sebelumnya yang memunculkan data sebelumnya. (I97f96)
  • Memperbaiki masalah saat instance OnDestinationChangedListener dan currentBackStackEntryFlow tidak diberi tahu saat menggunakan launchSingleTop. (Iaaebc)

Update Dependensi

Versi 2.4.0-alpha08

1 September 2021

androidx.navigation:navigation-*:2.4.0-alpha08 dirilis. Versi 2.4.0-alpha08 berisi commit ini.

Fitur Baru

  • Sekarang Anda dapat memperluas class NavType untuk membuat NavTypes kustom. Jenis kustom hanya didukung saat membuat grafik navigasi secara terprogram, misalnya melalui Navigation Graph Kotlin DSL. (I78440, b/196871885)

Perubahan Perilaku

  • Saat membuat tindakan, kode Kotlin yang dihasilkan dari Safe Args kini menempatkan argumen tanpa nilai default sebelum argumen dengan nilai default sebagai parameter. (Idb697, b/188855904)
  • Deep link sekarang memverifikasi bahwa semua argumen yang diperlukan (yang tanpa nilai default) ada di Uri. (#204, b/185527157)

Perbaikan Bug

  • Penggunaan getBackStackEntry dan previousBackStackEntry di dalam composable(), bersama dengan remember(), tidak akan lagi menyebabkan pengecualian jika tidak ada tujuan di data sebelumnya. (I75138, b/194313238)
  • Navigation Compose kini merekomposisi dengan benar saat mengubah argumen data sebelumnya dan menggunakan launchSingleTop=true. (Iebd69, b/186392337)
  • Tidak akan ada ArrayIndexOutOfBoundsException lagi saat memanggil setGraph dengan grafik berisi 13 atau 29 tujuan. (I1a9f1, b/195171984)
  • Generator java SafeArgs seharusnya tidak lagi menyebabkan peringatan lint saat menghasilkan class Args. (I1a666, b/185843837)

Kontribusi Eksternal

  • Terima kasih ospixd karena telah memastikan bahwa deep link memverifikasi bahwa semua argumen yang diperlukan (yang tanpa nilai default) ada di Uri. (#204, b/185527157)

Versi 2.4.0-alpha07

18 Agustus 2021

androidx.navigation:navigation-*:2.4.0-alpha07 dirilis. Versi 2.4.0-alpha07 berisi commit ini.

Perbaikan Bug

  • Navigation Compose kini menyimpan status dengan benar setelah konfigurasi berubah dan saat mengubah grafik ketika menggunakan beberapa fitur data sebelumnya. (If5a3d, b/195141957)
  • Memilih kembali tab yang sama saat menggunakan navigasi Compose dengan beberapa data sebelumnya tidak akan lagi menghasilkan layar kosong. (I860dc, b/194925622)
  • NavHost kini mengamati perubahan dalam Lifecycle.State NavBackStackEntry yang berarti penggunaan NavHost dalam fragmen kini akan direkomposisi dengan benar, bukan menghasilkan layar kosong, karena siklus proses berubah. (I4eb85, b/195864489)
  • Memperbaiki masalah saat menutup DialogFragment tidak akan memperbarui status NavController dengan benar setelah membuat ulang aktivitas (yaitu setelah perubahan konfigurasi). (Icd72b)
  • Memperbaiki masalah saat memunculkan tujuan dialog tidak akan memperbarui penanganan tombol kembali sistem NavController, yang berpotensi menyebabkan NavController mengintersep tombol kembali meskipun tidak memiliki data sebelumnya untuk dimunculkan. (If3b34)
  • Safe-Args sekarang otomatis menghasilkan metode toSavedStateHandle untuk argumen yang dapat digunakan untuk menguji kode ViewModel Anda. (If1e2d, b/193353880)

Versi 2.4.0-alpha06

4 Agustus 2021

androidx.navigation:navigation-*:2.4.0-alpha06 dirilis. Versi 2.4.0-alpha06 berisi commit ini.

Perubahan API

  • Metode requireSlidingPaneLayout() dan requireDetailPaneNavHostFragment() di AbstractListDetailFragment masing-masing telah diubah namanya menjadi getSlidingPaneLayout() dan getDetailPaneNavHostFragment(). (I34a08)

Perubahan Perilaku

  • Saat menavigasi dengan animasi (seperti Crossfade), Lifecycle tujuan baru sekarang hanya akan menjangkau RESUMED ketika animasi selesai. (If0543, b/172112072, b/194301889)
  • NavHost Navigation Compose sekarang menyetel grafik sebagai bagian dari komposisi pertama. (Ieb7be)

Perbaikan Bug

  • Memunculkan tujuan terakhir dalam grafik navigasi tidak lagi melemparkan ClassCastException. (If0543, b/172112072, b/194301889)
  • Memperbaiki NullPointerException yang akan terjadi saat menambahkan deep link tanpa Uri dan menavigasi melalui rute atau deep link. (938a0c, b/193805425)
  • Memperbaiki masalah di Navigation Compose saat NavBackStackEntry yang memiliki deep link tidak akan menjangkau status RESUMED. (I192c5)
  • Memperbaiki masalah saat memunculkan tujuan dialog tidak akan memperbarui penanganan tombol kembali sistem NavController, yang berpotensi menyebabkan NavController mengintersep tombol kembali meskipun tidak memiliki data sebelumnya untuk dimunculkan. (aosp/1782668)

Versi 2.4.0-alpha05

21 Juli 2021

androidx.navigation:navigation-*:2.4.0-alpha05 dirilis. Versi 2.4.0-alpha05 berisi commit ini.

Perubahan Perilaku

  • NavHost Navigation Compose sekarang selalu menggunakan Crossfade saat menavigasi tujuan. (I07049, b/172112072)
  • Anda sekarang dapat membuat perubahan pada grafik NavHost. Grafik dengan startDestination dan tujuan yang sama pada grafik akan dianggap setara dan tidak akan menghapus data NavController sebelumnya. (I0b8db, b/175392262)

Perbaikan Bug

  • Memperbaiki NoSuchElementException saat memanggil popBackStack() dari dalam LifecycleObserver yang dilampirkan ke NavBackStackEntry yang disebabkan oleh update reentrant ke status NavController. (I64621)
  • AbstractListDetailFragment kini memungkinkan SlidingPaneLayout untuk dihilangkan sepenuhnya dari APK Anda saat AbstractListDetailFragment tidak digunakan. (I611ad)
  • NavGraph dan NavDestination kini mengganti metode yang setara, sehingga dua objek dengan nilai yang sama akan dianggap setara. (I166eb, b/175392262)

Versi 2.4.0-alpha04

1 Juli 2021

androidx.navigation:navigation-*:2.4.0-alpha04 dirilis. Versi 2.4.0-alpha04 berisi commit ini.

Fitur Baru

  • Artefak navigation-fragment sekarang berisi implementasi bawaan dari tata letak dua panel melalui AbstractListDetailFragment baru. Fragmen ini menggunakan SlidingPaneLayout untuk mengelola panel daftar (yang disediakan oleh subclass Anda) dan panel detail, yang menggunakan NavHostFragment sebagai implementasinya, seperti yang dapat dilihat di contoh implementasi kami. (Iac4be, b/191276636)
  • NavHost dari artefak navigation-compose sekarang mendukung tujuan dialog, selain tujuan composable. Setiap tujuan dialog ini akan ditampilkan dalam Composable Dialog, yang mengambang di atas tujuan composable saat ini. (I011d0)
val navController = rememberNavController()
    Scaffold { innerPadding ->
        NavHost(navController, "home", Modifier.padding(innerPadding)) {
            composable("home") {
                // This content fills the area provided to the NavHost
                HomeScreen()
            }
            dialog("detail_dialog") {
                // This content will be automatically added to a Dialog() composable
                // and appear above the HomeScreen or other composable destinations
                DetailDialogContent()
            }
        }
    }

Perubahan API

  • Fungsi add di NavigatorState telah diganti namanya menjadi push. Semua panggilan ke add() saat ini harus diubah ke push(). (Ie89fc, b/172112072)
  • Instance Navigator kustom kini dapat menggunakan pushWithTransaction API dan popWithTransition API di NavigatorState untuk mendorong atau memunculkan tujuan secara asinkron. Perhatikan bahwa API ini belum digunakan oleh navigator yang disertakan. (Ic4d7c, b/172112072)

Perubahan Perilaku

  • NavDeepLinkBuilder kini menambahkan PendingIntent.FLAG_IMMUTABLE ke PendingIntent yang ditampilkan oleh createPendingIntent(), memastikan bahwa API ini berfungsi seperti yang diharapkan saat menargetkan Android 12. (If8c52)

Perbaikan Bug

  • Memperbaiki masalah <include-dynamic> saat argumen yang diteruskan ke grafik tidak akan diteruskan dengan benar ke grafik yang disertakan secara dinamis. (I3e115)
  • Memperbaiki NullPointerException saat menavigasi ke tujuan menggunakan argumen string[] dengan nilai default @null. (I1fbe8)
  • Menambahkan aturan ProGuard untuk @Navigator.Name, yang memperbaiki masalah saat menggunakan mode lengkap R8 3.1. (I2add9, b/191654433)
  • SafeArgs tidak akan gagal lagi saat membuat aplikasi dengan versi Kotlin sebelum 1.5.0. (Icd1ff, b/190739257)

Versi 2.4.0-alpha03

16 Juni 2021

androidx.navigation:navigation-*:2.4.0-alpha03 dirilis. Versi 2.4.0-alpha03 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah saat dua panggilan navigate() diperlukan untuk menavigasi ke grafik dinamis yang disertakan. (I7785c, b/188859835)
  • Memperbaiki regresi yang diperkenalkan di Navigation 2.4.0-alpha01 saat setupActionBarWithNavController() tidak akan menghapus ikon Atas dengan benar saat Anda berada di tujuan level atas. (I5d443, b/189868637)
  • Memperbaiki IllegalStateException saat memanggil popBackStack() setelah sebelumnya menampilkan grafik root NavController. (I2a330, b/190265699)
  • Aturan ProGuard untuk by navArgs() kini diterapkan dengan benar saat menggunakan navigation-common atau artefak apa pun yang bergantung padanya. (I68800, b/190082521)
  • OnDestinationChangedListener yang memanggil navigate() saat pertama kali menerima callback kini mendapatkan callback kedua dengan benar untuk tujuan yang dinavigasikan. (Ie5f9e, b/190228815)
  • Safe Args tidak lagi mengalami error saat digunakan dengan modul fitur dinamis dan AGP 7.0+. (I69518, b/189966576)

Masalah Umum

  • Safe Args akan gagal dengan error Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’ saat menggunakan Gradle 6.7.0 karena dependensi pada Kotlin versi lama. Hal ini dapat diatasi dengan memperbarui untuk menggunakan Gradle 7.0. (b/190739257)

Versi 2.4.0-alpha02

2 Juni 2021

androidx.navigation:navigation-*:2.4.0-alpha02 dirilis. Versi 2.4.0-alpha02 berisi commit ini.

Fitur Baru

  • Rute sekarang didukung untuk tujuan Activity, Fragment, dan Dialog, serta di seluruh DSL Kotlin DynamicNavigation. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
  • NavigationUI telah menambahkan API eksperimental untuk sementara guna memungkinkan tidak ikut menyimpan status Anda. Meskipun selalu menyimpan status merupakan perilaku yang benar, masih ada penggunaan library yang tidak digunakan lagi (yaitu fragmen yang dipertahankan) yang tidak dapat didukung saat menyimpan status, sehingga hal ini memberikan peluang bagi aplikasi untuk dikonversi secara perlahan dari API yang tidak didukung. (Idf93c)
  • Navigation kini menyediakan API findDestination() dan getHierarchy() yang dapat digunakan untuk membantu menerapkan NavigationUI kustom. findDestination() adalah fungsi ekstensi pada NavGraph yang akan menemukan tujuan dalam grafik. getHierarchy() adalah fungsi pada NavDestination yang dapat digunakan untuk memverifikasi apakah tujuan tertentu berada dalam hierarki tujuan lain. (I2932f, b/188183365)

    val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
    
  • Metode NavigationUI yang menggunakan BottomNavigationView telah diperbarui agar menggunakan superclass yang diperkenalkan di Material 1.4.0, NavigationBarView. Hal ini memungkinkan metode ini untuk digunakan dengan NavigationRailView. (Ib0b36, b/182938895)

  • Saat meng-inflate elemen <action> melalui XML, atribut animasi dapat menggunakan atribut yang diambil dari tema menggunakan sintaksis app:enterAnim="?attr/transitionEnter". (I07bc1, b/178291654)

Perubahan API

Perbaikan Bug

  • DialogFragmentNavigator sekarang menggunakan NavigatorState.pop() API untuk memberi tahu NavController saat dialog ditutup dengan menekan tombol kembali sistem atau mengklik di luarnya, sehingga memastikan bahwa status NavController selalu sinkron dengan status Navigator. (I2ead9)
  • Navigation tidak lagi memberikan ConcurrentModificationException saat menggunakan manipulasi daftar OnDestinationChangedListeners dari dengan callback onDestinationChanged. (Ib1707, b/188860458)

  • Safe Args tidak lagi mengalami error saat mencoba membuat properti arah di Kotlin. (Id2416, b/188564435)

  • Metode setId di NavDestination sekarang dianotasi dengan benar menggunakan @IdRes, sehingga hanya menerima ID resource. (I69b80)

  • Parameter int findNode sekarang adalah resId, bukan resid. (I7711d)

Pembaruan Dependensi

  • Safe-Args sekarang bergantung pada Plugin Android Gradle 4.2.0. Ini berarti Anda tidak lagi mendapatkan peringatan penggunaan applicationIdTextResource. (I6d67b, b/172824579)

Versi 2.4.0-alpha01

18 Mei 2021

androidx.navigation:navigation-*:2.4.0-alpha01 dirilis. Versi 2.4.0-alpha01 berisi commit ini.

Fitur Baru

  • Metode currentBackStackEntryAsFlow() pada NavController menyediakan Flow yang akan muncul setiap kali NavBackStackEntry saat ini berubah. Alur ini dapat digunakan sebagai alternatif untuk mengelola OnDestinationChangedListener secara manual. (I19c4a, #89, b/163947280)

Beberapa data sebelumnya

NavController bertanggung jawab untuk mengelola data sebelumnya dari tujuan, menambahkan tujuan ke data sebelumnya saat Anda navigate() (mengarahkan) ke tujuan tersebut, dan menghapusnya saat Anda memanggil popBackStack() atau memicu tombol kembali sistem. Class NavOptions yang sudah ada dan integrasi ke dalam entri <action> dalam XML grafik navigasi telah diperluas untuk mendukung penyimpanan dan pemulihan data sebelumnya. (b/80029773)

Sebagai bagian dari perubahan ini, metode NavigationUI dari onNavDestinationSelected(), BottomNavigationView.setupWithNavController(), dan NavigationView.setupWithNavController() sekarang otomatis menyimpan dan memulihkan status tujuan yang muncul, sehingga memungkinkan dukungan untuk beberapa data sebelumnya tanpa perubahan kode apa pun. Saat menggunakan Navigation dengan Fragment, ini adalah cara yang disarankan untuk diintegrasikan dengan beberapa data sebelumnya. (Ie07ca)

API yang mendasari untuk menyimpan dan memulihkan status ditampilkan melalui sejumlah platform:

  • Dalam XML Navigation, elemen <action> sekarang dapat menggunakan atribut boolean app:popUpToSaveState dan app:restoreState untuk menyimpan status tujuan apa pun yang muncul melalui app:popUpTo dan memulihkan status yang terkait dengan tujuan yang diteruskan sebagai app:destination:

    <action
      android:id=”@+id/swap_stack”
      app:destination=”@id/second_stack”
      app:restoreState=”true”
      app:popUpTo=”@id/first_stack_start_destination”
      app:popUpToSaveState=”true” />
    
  • Dalam DSL Kotlin navOptions, Anda dapat menambahkan properti boolean restoreState dan properti boolean saveState di builder popUpTo:

    // Use the navigate() method that takes a navOptions DSL Builder
    navController.navigate(selectedBottomNavRoute) {
      launchSingleTop = true
      restoreState = true
      popUpTo(navController.graph.startDestinationId) {
        saveState = true
      }
    }
    
  • Dalam membuat objek NavOptions secara manual melalui NavOptions.Builder, Anda dapat menggunakan setRestoreState() dan overload baru ke setPopUpTo() yang memerlukan parameter saveState tambahan.

    NavOptions navOptions = new NavOptions.Builder()
      .setLaunchSingleTop(true)
      .setRestoreState(true)
      .setPopUpTo(navController.getGraph().getStartDestinationId(),
        false, // inclusive
        true) // saveState
      .build();
    navController.navigate(selectedBottomNavId, null, navOptions);
    
  • Panggilan terprogram ke popBackStack() kini dapat menyertakan parameter saveState tambahan.

Dalam semua kasus, NavController akan menyimpan dan memulihkan status setiap NavBackStackEntry, termasuk instance ViewModel dengan cakupan tujuan navigasi apa pun. Navigator API telah diupdate untuk memungkinkan setiap Navigator mendukung penyimpanan dan pemulihan statusnya sendiri.

ComposeNavigator yang digunakan untuk tujuan composable di Navigation Compose, serta FragmentNavigator dan DynamicFragmentNavigator yang digunakan untuk tujuan <fragment> di Navigation dengan Fragment telah diupdate untuk menggunakan Navigator API baru dan mendukung penyimpanan dan pemulihan status.

Rute Navigation

Rute adalah String yang secara unik mengidentifikasi tujuan. Meskipun sebelumnya hanya digunakan di Navigation Compose, konsep ini kini telah ditingkatkan menjadi bagian dari Navigation API inti. Hal ini memberikan alternatif untuk menggunakan ID bilangan bulat saat menyusun grafik melalui Navigation Kotlin DSL. (b/172823546)

Semua API yang sebelumnya hanya menggunakan ID sekarang memiliki overload yang mengambil rute String. Ini termasuk navigate(), popBackStack(), popUpTo(), dan getBackStackEntry().

Hal ini memiliki beberapa implikasi API:

  • Properti kotlin popUpTo pada DSL Kotlin tidak digunakan lagi dan digantikan dengan popUpToId. (I59c73, b/172823546)
  • getStartDestination() API tidak digunakan lagi dan digantikan dengan getStartDestinationId(). (I0887f, b/172823546)

Untuk developer yang mengupgrade Navigation Compose versi sebelumnya ke Navigation Compose 2.4.0-alpha01, ini berarti impor berikut pada metode ekstensi tidak lagi diperlukan dan harus dihapus:

import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo

Argumen KEY_ROUTE telah diganti dengan properti route di NavDestination, sehingga Anda dapat memanggil navBackStackEntry.destination.route secara langsung.

Perubahan API

  • Semua artefak Navigation telah ditulis ulang dalam Kotlin. Hal ini meningkatkan nullability class menggunakan generik (seperti subclass NavType). Semua fungsi ekstensi Kotlin yang dulunya merupakan bagian dari artefak -ktx telah dipindahkan ke artefak utamanya masing-masing. Artefak -ktx akan terus dipublikasikan, tetapi sepenuhnya kosong. (b/184292145)
  • NavDeepLinkBuilder sekarang mendukung penambahan beberapa tujuan yang berbeda ke data sebelumnya yang dihasilkan. (I3ee0d, b/147913689)
  • Menambahkan fungsi factory untuk DynamicNavHostFragment (Icd515, b/175222619)
  • ID unik NavBackStackEntry kini ditampilkan sebagai bagian dari API publiknya. (Ie033a)
  • Kolom name dan argument serta fungsi destrukturisasi NamedNavArgument sekarang menjadi publik. (#174, b/181320559)
  • Memperkenalkan ekstensi NavBackStackEntry#provideToCompositionLocals baru yang menyediakan NavBackStackEntry untuk lokal komposisi yang relevan. (#175, b/187229439)

Safe Args

  • Safe Args sekarang menghasilkan metode fromSavedStateHandle() untuk setiap class NavArgs. (#122, b/136967621)

    class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() {
      // Create a HomeDestinationArgs class with type safe accessors for each argument
      // defined on your destination
      private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle)
    }
    
  • Mengupdate Safe Args untuk bergantung pada KotlinPoet 1.8.0. (#172, b/183990444)

Perubahan Perilaku

  • Navigation kini bergantung pada Lifecycle 2.3.1 dan menandai setGraph(), popBackStack(), navigateUp(), dan navigate(), yakni metode yang mengupdate NavBackStackEntry Lifecycle, sebagai @MainThread, dengan menyelaraskan Navigation terhadap penerapan thread utama yang diperkenalkan dalam Lifecycle 2.3.0. (b/171125856)
  • Mengurai argumen Enum dari deep link kini tidak peka huruf besar/kecil, sehingga deep link seperti http://www.example.com/red dapat mencocokkan deep link www.example.com/{color} meskipun saat enum memiliki nilai RED. (#152, b/135857840)

Kompatibilitas Compose

  • androidx.navigation:navigation-compose:2.4.0-alpha01 hanya kompatibel dengan Compose versi 1.0.0-beta07 dan yang lebih baru.

Perbaikan Bug

  • Memperbaiki masalah saat placeholder argumen akhir lebih diprioritaskan daripada deep link yang memiliki akhiran yang sama persis. (#153, b/184072811)
  • NavHostFragment sekarang mendukung Navigator khusus yang menggunakan @Navigator.Name("dialog") sama seperti DialogFragmentNavigator default. (Ib1c2c, b/175979140)
  • Meningkatkan perilaku NavigatorProvider#addNavigator untuk memastikan bahwa memanggilnya berulang kali dengan instance yang sama tidak menimbulkan masalah. (#176, b/187443146)

Kontribusi Eksternal

  • Terima kasih simonschiller karena telah membuat dukungan untuk Safe Args yang menghasilkan metode fromSavedStateHandle() untuk setiap class NavArgs. (#122, b/136967621)
  • Terima kasih Bradleycorn karena telah membuat penguraian argumen Enum dari deep link yang tidak peka huruf besar/kecil. (#152, b/135857840)
  • Terima kasih osipxd karena telah memperbaiki masalah saat placeholder argumen akhir lebih diprioritaskan daripada deep link yang memiliki akhiran yang sama persis. (#153, b/184072811)
  • Terima kasih tatocaster karena telah mengupdate Safe Args bergantung pada KotlinPoet 1.8.0. (#172, b/183990444)
  • Terima kasih jossiwolf karena telah membuat kolom name dan argument, serta mendestrukturisasi fungsi NamedNavArgument menjadi publik. (#174, b/181320559)
  • Terima kasih jossiwolf karena telah memperkenalkan ekstensi NavBackStackEntry#provideToCompositionLocals baru yang menyediakan NavBackStackEntry untuk lokal komposisi yang relevan. (#175, b/187229439)
  • Terima kasih jossiwolf karena telah meningkatkan perilaku NavigatorProvider#addNavigator untuk memastikan bahwa memanggilnya berulang kali dengan instance yang sama tidak menimbulkan masalah. (#176, b/187443146)

Versi 1.0.0-alpha10

7 April 2021

androidx.navigation:navigation-compose:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit ini.

Perubahan API

  • NavHost kini menerima Modifier, yang akan diteruskan ke fungsi container composable, yang menggabungkan composable tujuan. (I85aca, b/175125483)

Perbaikan Bug

  • NavHost kini berfungsi meskipun OnBackPressedDispatcherOwner tidak ditemukan, seperti halnya saat melihat pratinjau NavHost. (I7d8b4)
  • Navigation Compose kini bergantung pada Navigation 2.3.5, yang memperbaiki masalah saat menggunakan BackHandler di dalam tujuan NavHost. (I7e63b, b/182284739)

Versi 1.0.0-alpha09

10 Maret 2021

androidx.navigation:navigation-compose:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit ini.

Perubahan API

  • LocalViewModelStoreOwner.current kini menampilkan ViewModelStoreOwner nullable untuk menentukan lebih baik apakah ViewModelStoreOwner tersedia di komposisi saat ini. API yang memerlukan ViewModelStoreOwner, seperti viewModel() dan NavHost, masih menampilkan pengecualian jika ViewModelStoreOwner tidak ditetapkan. (Idf39a)

Perbaikan Bug

  • Navigation Compose kini bergantung pada Navigation 2.3.4 yang mencakup perbaikan untuk mencoba menetapkan objek ViewModelStore yang sama setelah grafik ditetapkan. (I65c24, b/177825470)

Versi 1.0.0-alpha08

24 Februari 2021

androidx.navigation:navigation-compose:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.

Fitur Baru

  • NavHost kini mengisi CompositionLocal LocalSavedStateRegistryOwner dengan NavBackStackEntry tujuan tersebut, memastikan bahwa setiap status yang disimpan langsung ke SavedStateRegistry akan disimpan dan dipulihkan bersama tujuan. (I435d7, b/179469431)

Versi 1.0.0-alpha07

10 Februari 2021

androidx.navigation:navigation-compose:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.

Update Dependensi

Versi 1.0.0-alpha06

28 Januari 2021

androidx.navigation:navigation-compose:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.

Perubahan API

  • Menambahkan metode ekstensi getBackStackEntry(route: String) di NavController yang menampilkan NavBackStackEntry terkait. (If8931)

Versi 1.0.0-alpha05

13 Januari 2021

androidx.navigation:navigation-compose:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.

Diperbarui agar bergantung pada Compose 1.0.0-alpha10.

Versi 1.0.0-alpha04

16 Desember 2020

androidx.navigation:navigation-compose:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.

  • Diupdate agar kompatibel dengan Compose 1.0.0-alpha09.

Versi 1.0.0-alpha03

2 Desember 2020

androidx.navigation:navigation-compose:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah saat popBackStack() dan navigateUp() tidak akan berfungsi setelah perubahan konfigurasi atau penghentian dan pembuatan ulang proses. (Icea47, b/173281473)
  • Melakukan navigasi ke grafik bertingkat dalam NavHost kini berfungsi dengan baik. (I0948d, b/173647694)

Versi 1.0.0-alpha02

11 November 2020

androidx.navigation:navigation-compose:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.

Perubahan API

  • Navigation compose kini mendukung NavOptions untuk menggunakan operasi popUpTo dan launchSingleTop (If96c3, b/171468994)
  • Menambahkan fungsi navigasi yang mengambil rute, bukan ID, yang memungkinkan Anda membuat grafik bersarang di DSL Navigation Compose. (I1661d)
  • startDestination kini muncul sebelum rute dalam daftar parameter untuk NavHost (Ie620e)
  • Kini Anda dapat membuat grafik menggunakan rute sebagai tujuan awal di luar composable NavHost. (Iceb75)

Versi 1.0.0-alpha01

28 Oktober 2020

android.navigation:navigation-compose:1.0.0-alpha01 dirilis. Versi 1.0.0-alpha01 berisi commit ini.

Fitur Baru

Artefak navigation-compose menyediakan integrasi antara Navigation Component dan Jetpack Compose. Artefak ini menggunakan fungsi @Composable sebagai tujuan dalam aplikasi Anda.

Rilis awal ini menyediakan:

  • Composable NavHost memungkinkan Anda membuat grafik navigasi melalui DSL Kotlin.
  • Cakupan siklus proses, ViewModel, dan status yang diingat di tingkat tujuan.
  • Integrasi otomatis dengan tombol kembali sistem.
  • Dukungan untuk meneruskan argumen, melampirkan deep link ke tujuan, dan menampilkan hasil ke tujuan sebelumnya.
  • Helper khusus Compose di rememberNavController() dan currentBackStackEntryAsState() untuk memungkinkan pengangkatan status dan menghubungkan NavController ke composable di luar NavHost (seperti menu navigasi bawah).

Lihat panduan Navigation Compose untuk mengetahui informasi selengkapnya.

Versi 2.3.5

Versi 2.3.5

7 April 2021

androidx.navigation:navigation-*:2.3.5 dirilis. Versi 2.3.5 berisi commit ini.

Fitur Baru

  • Saat bernavigasi menggunakan NavDeepLinkRequest atau Uri, kini Anda dapat mengakses Uri, tindakan, dan jenis mime di tujuan yang dihasilkan dengan mendapatkan intent dari argumen melalui KEY_DEEP_LINK_INTENT, mencerminkan fungsi yang sudah tersedia untuk deep linking eksternal. (I975c3, b/181521877)

Perbaikan Bug

  • OnBackPressedCallbacks ditambahkan ke dispatcher dengan NavBackStackEntry karena LifecycleOwner kini melakukan intersepsi kembali dengan benar setelah Activity Lifecycle adalah STOPPED, lalu STARTED (Iff94f, b/182284739)
  • Penguraian domain deep link kini tidak peka huruf besar/kecil, sehingga memastikan www.example.com cocok dengan www.example.com dan www.Example.com. Perlu diketahui bahwa nama parameter kueri masih peka huruf besar/kecil. (#144, b/153829033)
  • Memperbaiki NullPointerException yang dapat terjadi saat tujuan memiliki beberapa argumen default yang non-nullable dan Anda menavigasi ke tujuan itu dengan hanya mengganti subkumpulan argumen tersebut. (aosp/1644827)

Update Dependensi

Kontribusi Eksternal

  • Terima kasih bentrengrove atas permintaan pull yang membuat penguraian domain deep link tidak peka huruf besar/kecil. (#144, b/153829033)

Versi 2.3.4

Versi 2.3.4

10 Maret 2021

androidx.navigation:navigation-*:2.3.4 dirilis. Versi 2.3.4 berisi commit ini.

Fitur Baru

  • Argumen ReferenceType kini dapat diuraikan dengan benar saat dikirim sebagai bagian dari URI deeplink. Ini mendukung nilai bilangan bulat mentah serta nilai heksa yang diawali dengan 0x. (#127, b/179166693)
  • android:defaultValue untuk argumen dengan app:argType="float" kini mendukung nilai default bilangan bulat, memungkinkan Anda menggunakan android:defaultValue="0", bukan menggunakan 0.0. (#117, b/173766247)

Perbaikan Bug

  • Memperbaiki progres penginstalan saat menggunakan dukungan Navigation untuk fitur dinamis. (Ib27a7, b/169636207)
  • Memanggil setViewModelStore atau setLifecycleOwner dengan objek sama yang kini telah ditetapkan tanpa pengoperasian (Idf491, b/177825470)
  • Safe-Args kini menambahkan anotasi sembunyi pada metode yang tepat saat menggunakan java. (I8fbc5, b/179463137)

Kontribusi Eksternal

  • Terima kasih JvmName atas permintaan pull-nya untuk memastikan bahwa argumen ReferenceType kini dapat diuraikan dengan benar saat dikirim sebagai bagian dari URI deeplink. (#127, b/179166693)
  • Terima kasih tatocaster atas permintaan pull-nya untuk mengizinkan defaultValue untuk argumen dengan app:argType=”float” kini mendukung nilai default bilangan bulat. (#117, b/173766247)

Versi 2.3.3

Versi 2.3.3

27 Januari 2021

androidx.navigation:navigation-*:2.3.3 dirilis. Versi 2.3.3 berisi commit ini.

Perbaikan Bug

  • Tidak ada lagi error saat memunculkan NavBackStackEntry sebelum Lifecycle dipindahkan ke CREATED. (Ie3ba3)
  • Memperbaiki regresi yang disebabkan oleh b/171364502 ketika memilih aktivitas dengan nilai resource animasi 0 yang menyebabkan ResourceNotFoundException. (I7aedb, b/176819931)

Versi 2.3.2

Versi 2.3.2

2 Desember 2020

androidx.navigation:navigation-*:2.3.2 dirilis. Versi 2.3.2 berisi commit ini.

Perbaikan Bug

  • Memperbaiki regresi dalam NavigationUI, saat penggunaan tujuan <activity> dengan onNavDestinationSelected 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 menggunakan launchSingleTop. (I2c5cb)
  • Memperbaiki masalah saat navigasi ke grafik navigasi bertingkat tidak akan membuat instance grafik baru di data sebelumnya. (Ifc831)
  • Memperbaiki masalah saat penggunaan navigate() dengan popUpTo 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 dengan FragmentScenario dan Navigation.setViewNavController(). (I69e0d)

Versi 2.3.1

Versi 2.3.1

14 Oktober 2020

androidx.navigation:navigation-*:2.3.1 dirilis. Versi 2.3.1 berisi commit ini.

Fitur Baru

  • Resource Animator default telah ditambahkan ke UI Navigation dan direkomendasikan pada resource animasi default. (b/167430145)
  • NavOptions kini mengganti metode hashcode dan equals (b/161586466)
  • Navigation kini menyertakan tujuan saat ini dalam IllegalArgumentException "No destination with ID" (Tidak ada tujuan dengan ID), yang akan meningkatkan (kualitas) pengalaman proses debug developer. (b/168311416)

Perbaikan Bug

  • Safe Args tidak akan lagi menggabungkan baris yang ditampilkan, meskipun nama class argumen yang dihasilkan lebih dari 100 karakter. (b/168584987)

Perubahan Dependensi

  • navigation-ui kini bergantung pada DrawerLayout 1.1.1, memastikan bahwa NavigationUI dapat membuka panel samping meskipun menggunakan LOCK_MODE_LOCKED_CLOSED atau LOCK_MODE_LOCKED_OPEN. (b/162253907)
  • Safe Args kini bergantung pada KotlinPoet 1.6.0 (aosp/1435911)
  • Safe Args kini bergantung pada AGP 4.0.1 (aosp/1442337)

Versi 2.3.0

Versi 2.3.0

24 Juni 2020

androidx.navigation:navigation-*:2.3.0 dirilis. Versi 2.3.0 berisi commit ini.

Perubahan utama sejak versi 2.2.0

  • Integrasi Modul Fitur: Artefak navigation-dynamic-features-runtime dan navigation-dynamic-features-fragment memungkinkan Anda membuka halaman tujuan yang ditentukan dalam modul fitur, yang secara otomatis menangani penginstalan modul fitur sesuai kebutuhan. Lihat Menavigasi dengan modul fitur untuk informasi selengkapnya.
  • Pengujian Navigation: Artefak navigation-testing menyediakan TestNavHostController yang memungkinkan Anda menetapkan tujuan saat ini dan memverifikasi data sebelumnya setelah operasi navigasi. Lihat Menguji Navigation untuk informasi selengkapnya.
  • Menampilkan Hasil: NavBackStackEntry yang terkait dengan setiap tujuan di data Navigation sebelumnya kini memungkinkan Anda mengakses SavedStateHandle yang cocok untuk menyimpan status tersimpan dalam jumlah kecil yang harus dihubungkan dengan entri data tertentu sebelumnya. Lihat Menampilkan hasil ke Tujuan sebelumnya untuk informasi selengkapnya.
  • Dukungan NavigationUI untuk Openable: Semua penggunaan DrawerLayout di NavigationUI telah diganti dengan antarmuka Openable yang lebih umum yang ditambahkan di CustomView 1.1.0 dan diterapkan oleh DrawerLayout di DrawerLayout 1.1.0.
  • Dukungan Tindakan dan Jenis MIME di deep link: Deep linking 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 baru. Lihat Menavigasi menggunakan NavDeepLinkRequest untuk informasi selengkapnya.

Masalah Umum

  • Dukungan untuk tindakan deep link dan jenis MIME belum tersedia di Penggabungan Manifes. Hingga hal tersebut tersedia, setiap elemen <intent-filter> yang dihasilkan dari elemen <nav-graph> dalam manifes tidak akan menyertakan jenis MIME dalam elemen <data> atau <action> kustom. Anda harus menambahkan <intent-filter> yang sesuai ke manifes secara manual.

Versi 2.3.0-rc01

10 Juni 2020

androidx.navigation:navigation-*:2.3.0-rc01 dirilis. Versi 2.3.0-rc01 berisi commit ini.

Perbaikan Bug

  • Memperbaiki NullPointerException saat mengganti instance tujuan tanpa argumen dengan instance lain yang disertai argumen menggunakan singleTop. (b/158006669)
  • Semua pengecualian destination is unknown yang ditampilkan oleh NavController kini memiliki informasi proses debug tambahan untuk membantu menentukan status NavController. (b/157764916)

Versi 2.3.0-beta01

20 Mei 2020

androidx.navigation:navigation-*:2.3.0-beta01 dirilis. Versi 2.3.0-beta01 berisi commit ini.

Perbaikan Bug

  • Memperbaiki masalah ketika Lifecycle dari NavBackStackEntry tidak diupdate dengan benar setelah dihentikannya proses. (b/155218371)
  • Instance OnDestinationChangedListener yang terdaftar sebelum memanggil setGraph() sekarang dikirim dengan benar ke tujuan yang dipulihkan setelah dihentikannya proses. (b/155218371)
  • Saat menggunakan singleTop, argumen NavBackStackEntry kini telah diupdate dengan benar lalu dikirimkan ke semua instance OnDestinationChangeListener. (b/156545508)

Update Dependensi

Versi 2.3.0-alpha06

29 April 2020

androidx.navigation:navigation-*:2.3.0-alpha06 dirilis. (Versi 2.3.0-alpha06 berisi commit ini.)

Fitur Baru

  • Deep link telah diperluas untuk mendukung app:action 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 Dynamic Navigation. (b/148969800)

Perbaikan Bug

  • Memperbaiki masalah yang menyebabkan Intent deep link diabaikan saat menggunakan tujuan awal bertingkat. (b/154532067)

Versi 2.3.0-alpha05

15 April 2020

androidx.navigation:navigation-*:2.3.0-alpha05 dirilis. Versi 2.3.0-alpha05 berisi commit ini.

Fitur Baru

  • Untuk penyertaan grafik dinamis yang menggunakan <include-dynamic>, Anda tidak perlu lagi 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)

Update dependensi

Versi 2.3.0-alpha04

18 Maret 2020

androidx.navigation:navigation-*:2.3.0-alpha04 dirilis. Versi 2.3.0-alpha04 berisi commit ini.

Fitur Baru

  • Menambahkan dukungan untuk tujuan aktivitas dan fragmen modul fitur di Navigation Kotlin DSL. (b/148969800)

Perubahan API

  • Class DynamicExtras tidak lagi menggunakan pola builder dan kini dapat dibuat secara langsung. (aosp/1253671)
  • DynamicActivityNavigator kini 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)

Update Dependensi

  • Artefak Navigation Dynamic Features kini bergantung pada Play Core 1.6.5. (b/149556401)

Versi 2.3.0-alpha03

4 Maret 2020

androidx.navigation:navigation-*:2.3.0-alpha03 dirilis. Versi 2.3.0-alpha03 berisi commit ini.

Perubahan API

  • AppBarConfiguration sekarang tidak lagi mengandalkan 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 ini.

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 Menampilkan 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 ini.

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, yang menyediakan penginstalan modul fitur on-demand lancar saat menuju ke tujuan tersebut. Lihat Menavigasi dengan modul fitur untuk informasi selengkapnya. (b/132170186)

Perbaikan bug

  • Dari Navigation 2.2.1: Deep link tanpa parameter kueri kini mengabaikan semua parameter kueri dengan benar, bukan menambahkannya ke elemen {argument} akhir atau yang tidak cocok dengan deep link. (b/147447512)
  • Dari 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)

Update 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 ini.

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

Update 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 ini.

Perbaikan bug

  • Deep link tanpa parameter kueri kini mengabaikan parameter kueri dengan benar, bukan menambahkannya ke elemen {argument} akhir atau yang tidak cocok dengan deep link. (b/147447512)
  • Aturan navigation-ui ProGuard 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)

Update 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 ini.

Perubahan penting sejak versi 2.1.0

  • NavBackStackEntry: Anda kini dapat memanggil NavController.getBackStackEntry(), meneruskan ID tujuan atau grafik navigasi pada data sebelumnya. NavBackStackEntry yang ditampilkan 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 ini.

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 ini.

Perbaikan bug

  • Memperbaiki masalah penguraian deep link saat menggunakan parameter kueri dan argumen sebagai bagian terakhir jalur yang mencegah penguraian lebih dari satu karakter argumen jalur akhir. (b/144554689)
  • Memperbaiki masalah penguraian deep link yang menyebabkan parameter opsional menerima "@null", 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 ini.

Perubahan dependensi

  • Navigation sekarang bergantung pada androidx.lifecycle 2.2.0-rc02.

Versi 2.2.0-rc01

23 Oktober 2019

androidx.navigation:navigation-*:2.2.0-rc01 dirilis tanpa perubahan sejak 2.2.0-beta01. Versi 2.2.0-rc01 berisi commit ini.

Versi 2.2.0-beta01

9 Oktober 2019

androidx.navigation:navigation-*:2.2.0-beta01 dirilis. Versi 2.2.0-beta01 berisi commit ini.

Fitur baru

  • NavDestination dan subclass-nya sekarang 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 saat 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 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 saat 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 factory 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: getViewModelStore() API 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 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 mengetahui informasi selengkapnya.
  • Tujuan dialog: Sekarang Anda dapat membuat tujuan <dialog> yang akan menampilkan DialogFragment saat Anda melakukan navigate ke sana. NavHostFragment secara default mendukung tujuan dialog. Lihat Membuat tujuan dari DialogFragment untuk informasi selengkapnya.
  • Menavigasi dengan Uri: Sekarang Anda dapat melakukan 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 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 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 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 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 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

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 menampilkan DialogFragment saat Anda melakukan 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 md menjadi 220 md 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 siklus proses 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 peningkatan (kualitas) 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 saat runtime dan di seluruh Safe Args. Hasilnya, hanya argumen dengan app:argType="reference" yang nilai default-nya dapat mengarah ke resource lain (misalnya @color/colorPrimary). Mencoba menggunakan nilai default referensi 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 saat 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; 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 Naik dengan benar. b/120395362
  • Class Directions yang dihasilkan Safe Args kini dengan benar menangani tindakan global yang memiliki ID yang sama dengan tindakan pada suatu tujuan. b/122962504
  • Class NavDirections yang dihasilkan Safe Args sekarang memiliki nilai hashCode() yang sama jika equals() menampilkan benar (true). 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; 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; 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 bergantung pada Support Library 28.0.0 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 flag 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 fungsinya. 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 kemunculan 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 yang dapat diserialisasi, termasuk nilai Enum. Jenis Enum dapat menetapkan nilai default menggunakan literal enum tanpa nama class (misalnya app:defaultValue="READ") b/111316353
  • Safe Args mendukung array dari semua jenis yang didukung b/111487504
  • Safe Args sekarang mengabaikan subfolder direktori resource b/117893516
  • Safe Args menambahkan anotasi @Override jika sesuai b/117145301

Versi 1.0.0-alpha07

29 Oktober 2018

Fitur Baru

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

Perubahan API

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

Perbaikan Bug

  • NavigationUI.setupWithNavController() tidak lagi membocorkan tampilan jika digunakan dengan tampilan 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 Directions dan Args kini memiliki implementasi toString() yang berguna. b/111843389

Versi 1.0.0-alpha05

10 Agustus 2018

Perbaikan Bug

  • Memperbaiki bug yang menyebabkan perilaku data sebelumnya yang salah. b/111907708
  • Memperbaiki bug di equals() class Generated Args. b/111450897
  • Memperbaiki kegagalan pembuatan di Safe Args. b/109409713
  • Memperbaiki konversi dari pengenal resource ke nama java. b/111602491
  • Memperbaiki pesan error tentang nullability di plugin Safe Args.
  • Menambahkan anotasi nullability yang hilang.

Versi 1.0.0-alpha04

19 Juli 2018

Navigation 1.0.0-alpha04 dan plugin gradle Safe Args yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.

Perubahan API/Perilaku

  • NavHostFragment akan selalu mengatur Fragment saat ini sebagai fragmen navigasi utama, memastikan bahwa pengelola fragmen turunan muncul sebelum NavController luar muncul b/111345778

Safe Args

  • Perubahan yang Dapat Menyebabkan Gangguan: app:type telah diubah 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 sistem setelah melakukan deep link ke tujuan fragmen. b/111515685

Versi 1.0.0-alpha03

12 Juli 2018

Navigation 1.0.0-alpha03 dan plugin gradle Safe Args yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.

Perubahan API/Perilaku

  • Metode NavigationUI.setupWithNavController untuk Toolbar telah ditambahkan b/109868820
  • Metode NavigationUI.setupWithNavController untuk CollapsingToolbarLayout telah ditambahkan b/110887183
  • popBackStack() sekarang menampilkan nilai salah ketika data sebelumnya kosong atau ketika ID tujuan yang diberikan tidak ada di data sebelumnya b/110893637
  • FragmentNavigator kini mengabaikan operasi navigasi setelah FragmentManager memiliki status tersimpan, yang menghindari pengecualian "Tidak dapat melakukan tindakan ini setelah onSaveInstanceState" b/110987825

Safe Args

  • Perubahan yang Dapat Menyebabkan Gangguan: Karakter non-alfanumerik dalam nama tindakan dan argumen akan diganti dengan CamelCase dalam nama metode NavDirections masing-masing
    • Misalnya DemoController.index akan 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 kini dapat diterapkan ke project library. b/80036553
  • Plugin Safe Args kini dapat diterapkan ke project fitur. b/110011752

Perbaikan Bug

  • Memperbaiki masalah saat menavigasi selama metode siklus proses Fragment b/109916080
  • Memperbaiki masalah saat menjelajahi grafik bertingkat beberapa kali b/110178671
  • Memperbaiki masalah saat menggunakan setPopUpTo dengan tujuan pertama dalam grafik b/109909461
  • Memperbaiki masalah saat semua nilai app:defaultValue diteruskan sebagai String b/110710788
  • aapt2 yang dipaketkan dengan Plugin Android Gradle 3.2 Beta 01 kini menambahkan aturan keep untuk setiap atribut android:name dalam file XML Navigation b/79874119
  • Memperbaiki kebocoran memori saat mengganti FragmentNavigator default b/110900142

Versi 1.0.0-alpha02

7 Juni 2018

Perubahan Perilaku

  • FragmentNavigator sekarang menggunakan setReorderingAllowed(true). b/109826220

  • Navigation sekarang meng-URLDecode argumen yang diurai dari URL deep link. b/79982454

Perbaikan Bug

  • Memperbaiki IllegalStateException saat memanggil navigasi dari metode siklus proses Fragment. b/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 fragmen 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 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 di NavOptions tidak digunakan lagi. b/80338878

  • Atribut launchDocument untuk tindakan dan API yang diatribusikan 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.