הדרך המומלצת לניווט בין יעדים היא להשתמש ב-Safe Args הפלאגין של Gradle. הפלאגין הזה יוצר מחלקות של אובייקטים ו-builder שמאפשרים בניווט בטוח בין יעדים. שימוש בארגומנטים בטוחים עבור ניווט והעברת נתונים בין יעדים.
הפעלת ארגומנטים בטוחים
כדי להוסיף ארגומנטים בטוחים
בפרויקט, כוללים את ה-classpath
הבא בקובץ build.gradle
ברמה העליונה:
מגניב
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") } }
צריך גם להחיל אחד משני יישומי הפלאגין הזמינים.
כדי ליצור קוד שפה של Java שמתאים למודולים של Java או Java משולבים או Kotlin, מוסיפים
את השורה הבאה לקובץ build.gradle
של האפליקציה או המודול:
מגניב
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
לחלופין, כדי ליצור קוד Kotlin שמתאים למודולים של Kotlin בלבד, מוסיפים:
מגניב
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
חייב להיות לך android.useAndroidX=true
קובץ אחד (gradle.properties
) לפי
מעבר ל-AndroidX.
הקוד שנוצר
אחרי ההפעלה של Safe Args, הקוד שנוצר מכיל מחלקות ושיטות עבור כל פעולה שהגדרתם וגם סיווגים שמתאימים לכל פעולת שליחה ומקבלים את היעד.
Safe Args יוצר מחלקה לכל יעד שממנו בוצעה הפעולה.
שם הכיתה שנוצר מוסיף "Directions" למחלקה של היעד המרכזי
שם. לדוגמה, אם שם היעד שנקבע הוא
SpecifyAmountFragment
, השם של המחלקה שנוצרה
SpecifyAmountFragmentDirections
.
המחלקה שנוצרה מכילה שיטה סטטית לכל פעולה שמוגדרת בפונקציה
היעד ההתחלתי. השיטה הזו משתמשת בכל פרמטרים מוגדרים של פעולה בתור
ארגומנטים ומחזיר אובייקט NavDirections
שאפשר להעביר ישירות
אל navigate()
.
דוגמה לארגומנטים בטוחים
לדוגמה, נבחן תרשים ניווט עם פעולה אחת שמחברת בין
יעדים, SpecifyAmountFragment
וConfirmationFragment
.
ConfirmationFragment
לוקח פרמטר float
אחד שאתם מספקים כחלק
של הפעולה.
Safe Args יוצר מחלקה SpecifyAmountFragmentDirections
עם בודד
actionSpecifyAmountFragmentToConfirmationFragment()
,
בשם ActionSpecifyAmountFragmentToConfirmationFragment
. התוכן הפנימי
נגזרת מ-NavDirections
ושומרת את מזהה הפעולה המשויך וגם
float
. לאחר מכן אפשר להעביר את האובייקט NavDirections
שהוחזר
ישירות אל navigate()
, כמו בדוגמה הבאה:
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);
}
למידע נוסף על העברת נתונים בין יעדים באמצעות 'ארגומנטים בטוחים', אפשר לעיין במאמר שימוש ב-Safe Args להעברת נתונים באופן בטיחותי.
שימוש ב-Safe Args כדי לשמור על בטיחות הסוג
ניווט בין יעדים באמצעות הארגומנטים הבטוחים הפלאגין של Gradle. הפלאגין הזה יוצר מחלקות פשוטות של אובייקטים ו-builder הפעלת ניווט ללא פגיעה בטיפוס והעברת ארגומנטים בין יעדים.
כדי להוסיף ארגומנטים בטוחים
בפרויקט, כוללים את ה-classpath
הבא בקובץ build.gradle
ברמה העליונה:
מגניב
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") } }
צריך גם להחיל אחד משני יישומי הפלאגין הזמינים.
כדי ליצור קוד שפה של Java שמתאים למודולים של Java או Java משולבים או Kotlin, מוסיפים
את השורה הבאה לקובץ build.gradle
של האפליקציה או המודול:
מגניב
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
לחלופין, כדי ליצור קוד Kotlin שמתאים למודולים של Kotlin בלבד, מוסיפים:
מגניב
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
חייב להיות לך android.useAndroidX=true
קובץ אחד (gradle.properties
) לפי
מעבר ל-AndroidX.
אחרי שמפעילים את Safe Args, הפלאגין יוצר קוד שמכיל מחלקות ו-
שיטות לכל פעולה שהגדרתם. לכל פעולה, גם Safe Args
יוצרת מחלקה לכל יעד מקור, שהוא היעד
שממנו בוצעה הפעולה. שם הכיתה שנוצר הוא שילוב של
שם מחלקת היעד והמילה "Directions". לדוגמה,
אם היעד הוא SpecifyAmountFragment
, המחלקה שנוצרה היא
בשם SpecifyAmountFragmentDirections
. המחלקה שנוצרה מכילה ערך סטטי
לכל פעולה שהוגדרה ביעד המקור. השיטה הזו
כל פרמטר פעולה מוגדר כארגומנטים ומחזיר אובייקט NavDirections
שאפשר להעביר אל navigate()
.
לדוגמה, נניח שיש לנו תרשים ניווט עם פעולה אחת
מחבר את יעד המוצא, SpecifyAmountFragment
,
היעד, ConfirmationFragment
.
Safe Args יוצר מחלקה SpecifyAmountFragmentDirections
עם בודד
actionSpecifyAmountFragmentToConfirmationFragment()
, שמחזירה
אובייקט NavDirections
. לאחר מכן ניתן להעביר את האובייקט NavDirections
שהוחזר
ישירות אל navigate()
, כמו בדוגמה הבאה:
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); }
לקבלת מידע נוסף על העברת נתונים בין יעדים באמצעות Safe Args, אפשר לעיין במאמר שימוש בארגומנטים בטוחים כדי להעביר נתונים עם אבטחת סוג בנתוני מעבר בין יעדים.