Mendukung beberapa data sebelumnya

Komponen Navigasi bekerja dengan sistem operasi Android untuk mempertahankan data sebelumnya saat pengguna membuka aplikasi Anda. Dalam beberapa kasus, mungkin ada baiknya untuk mengelola beberapa data sebelumnya secara bersamaan, dengan pengguna bergerak bolak-balik di antara data. Misalnya, jika aplikasi Anda menyertakan navigasi bawah atau panel navigasi, beberapa dukungan data sebelumnya memungkinkan pengguna Anda beralih antar-alur di aplikasi Anda dengan bebas tanpa harus kehilangan posisinya.

Komponen Navigasi menyediakan API yang mendukung beberapa data sebelumnya dengan menyimpan dan memulihkan status tujuan di grafik navigasi Anda. Class NavigationUI menyertakan metode yang menangani hal ini secara otomatis, tetapi Anda juga dapat menggunakan API dasar secara manual untuk implementasi yang lebih disesuaikan.

Menerapkan dukungan secara otomatis dengan NavigationUI

Class NavigationUI menyertakan API yang otomatis menyimpan dan memulihkan status item menu saat pengguna berpindah di antara item tersebut. API ini mengimplementasikan beberapa dukungan data sebelumnya secara default dalam kasus berikut:

API ini tidak memerlukan perubahan kode lebih lanjut untuk mengimplementasikan beberapa dukungan data sebelumnya, dan merupakan cara yang direkomendasikan untuk mendukung beberapa data sebelumnya dalam aplikasi Anda.

Mengimplementasikan dukungan secara manual dengan API dasar

Jika elemen yang disediakan oleh NavigationUI tidak memenuhi persyaratan, Anda dapat menggunakan API dasar untuk menyimpan dan memulihkan data sebelumnya melalui salah satu platform API lain yang disediakan oleh komponen Navigasi.

Dalam XML Navigasi, elemen <action> dalam grafik navigasi Anda dapat menggunakan atribut app:popUpToSaveState untuk menyimpan status tujuan apa pun yang dimunculkan tindakan menggunakan app:popUpTo. Elemen juga dapat menggunakan atribut app:restoreState untuk memulihkan status yang sebelumnya disimpan untuk tujuan yang ditentukan dalam atribut app:destination.

Anda dapat menggunakan atribut ini untuk mendukung beberapa data sebelumnya. Saat tindakan navigasi perlu memindahkan pengguna dari satu data sebelumnya ke yang lain, tetapkan app:popUpToSaveState dan app:restoreState ke true di elemen <action> yang sesuai. Dengan begitu, tindakan akan menyimpan status data sebelumnya saat ini, sekaligus memulihkan status data sebelumnya yang disimpan, jika ada.

Contoh berikut menunjukkan tindakan yang menggunakan kedua atribut tersebut:

<action
  android:id=”@+id/swap_stack”
  app:destination=”@id/second_stack”
  app:restoreState=”true”
  app:popUpTo=”@id/first_stack_start_destination”
  app:popUpToSaveState=”true” />

Class NavOptions memungkinkan Anda meneruskan opsi navigasi khusus untuk menyimpan dan memulihkan data sebelumnya saat menavigasi menggunakan NavController. Hal ini berlaku meskipun Anda membuat instance NavOptions menggunakan DSL Kotlin atau menggunakan NavOptions.Builder:

Kotlin

// Use the navigate() method that takes a navOptions DSL Builder
navController.navigate(selectedBottomNavRoute) {
  launchSingleTop = true
  restoreState = true
  popUpTo(navController.graph.findStartDestination().id) {
    saveState = true
  }
}

Java

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

Untuk mempelajari cara meneruskan opsi navigasi lebih lanjut, lihat Menerapkan NavOptions secara terprogram.

Referensi tambahan

Untuk mempelajari lebih lanjut beberapa dukungan data sebelumnya dengan komponen Navigation, lihat referensi tambahan berikut:

Postingan blog

Contoh