Cara yang direkomendasikan untuk bernavigasi antar-tujuan adalah dengan menggunakan plugin Safe Args Gradle. Plugin ini menghasilkan class builder dan objek yang mengaktifkan navigasi dengan keamanan jenis antar-tujuan. Gunakan Safe Args untuk menavigasi dan meneruskan data antar-tujuan.
Mengaktifkan 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.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" 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.
Kode yang dihasilkan
Setelah mengaktifkan Safe Args, kode yang dihasilkan akan berisi class dan metode untuk setiap tindakan yang Anda tentukan serta class yang terkait dengan setiap tujuan pengiriman dan penerimaan.
Safe Args menghasilkan class untuk setiap tujuan tempat asal tindakan. Nama class yang dihasilkan menambahkan "Directions" ke nama class tujuan awal. Misalnya, jika tujuan awal diberi nama SpecifyAmountFragment
, class yang dihasilkan akan diberi nama SpecifyAmountFragmentDirections
.
Class yang dihasilkan berisi metode statis untuk setiap tindakan yang ditentukan pada tujuan awal. Metode ini menggunakan setiap parameter tindakan
yang ditentukan sebagai argumen dan menampilkan objek NavDirections
yang dapat langsung Anda teruskan
ke navigate()
.
Contoh Safe Args
Misalnya, perhatikan grafik navigasi dengan satu tindakan yang menghubungkan dua
tujuan, yaitu SpecifyAmountFragment
dan ConfirmationFragment
. ConfirmationFragment
menggunakan satu parameter float
yang Anda sediakan sebagai bagian
dari tindakan.
Safe Args menghasilkan class SpecifyAmountFragmentDirections
dengan satu
metode, actionSpecifyAmountFragmentToConfirmationFragment()
, dan class dalam
yang disebut ActionSpecifyAmountFragmentToConfirmationFragment
. Class dalam diperoleh dari NavDirections
dan menyimpan ID tindakan dan parameter float
yang terkait. Objek NavDirections
yang ditampilkan ini kemudian dapat diteruskan langsung ke navigate()
, seperti yang ditunjukkan dalam contoh berikut:
Kotlin
override fun onClick(v: View) {
val amount: Float = ...
val action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount)
v.findNavController().navigate(action)
}
Java
@Override
public void onClick(View view) {
float amount = ...;
action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount);
Navigation.findNavController(view).navigate(action);
}
Untuk informasi selengkapnya tentang meneruskan data antartujuan dengan Safe Args, lihat Menggunakan Safe Args untuk meneruskan data dengan keamanan jenis.
Memastikan keamanan jenis menggunakan Safe Args
Bernavigasi antar-tujuan menggunakan plugin Safe Args Gradle. Plugin ini menghasilkan class builder dan objek sederhana yang mengaktifkan navigasi dengan keamanan jenis dan argumen yang melewati antartujuan.
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.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" 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.
Setelah Anda mengaktifkan Safe Args, plugin tersebut akan menghasilkan kode yang berisi class dan
metode untuk setiap tindakan yang telah Anda tentukan. Untuk setiap tindakan, Safe Args juga
menghasilkan class untuk setiap tujuan asal, yang merupakan tujuan
di mana tindakan tersebut berasal. Nama class yang dihasilkan adalah kombinasi
nama class tujuan asal dan kata "Directions". Misalnya,
jika tujuan diberi nama SpecifyAmountFragment
, class yang dihasilkan akan diberi nama
SpecifyAmountFragmentDirections
. Class yang dihasilkan berisi metode statis untuk setiap tindakan yang ditentukan pada
tujuan awal. Metode ini menggunakan
parameter tindakan yang ditentukan sebagai argumen dan menampilkan sebuah objek
NavDirections
yang dapat Anda teruskan ke navigate()
.
Sebagai contoh, asumsikan kita memiliki grafik navigasi dengan satu tindakan yang
menghubungkan tujuan asal, SpecifyAmountFragment
, ke tujuan
penerima, ConfirmationFragment
.
Safe Args akan menghasilkan class SpecifyAmountFragmentDirections
dengan satu
metode, actionSpecifyAmountFragmentToConfirmationFragment()
yang menampilkan
objek NavDirections
. Objek NavDirections
yang ditampilkan ini nantinya dapat langsung diteruskan
ke navigate()
, seperti yang ditunjukkan dalam contoh berikut:
Kotlin
override fun onClick(view: View) { val action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment() view.findNavController().navigate(action) }
Java
@Override public void onClick(View view) { NavDirections action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment(); Navigation.findNavController(view).navigate(action); }
Untuk informasi selengkapnya tentang meneruskan data antar-tujuan dengan Safe Args, lihat Menggunakan Safe Args untuk meneruskan data dengan keamanan jenis di Meneruskan data antar tujuan.