רכיב הניווט פועל עם מערכת ההפעלה Android כדי לשמור על מקבץ חזרה בתור המשתמש מנווט באפליקציה שלך. במקרים מסוימים, מומלץ לשמור על ריבוי מקבצים בו-זמנית, כשהמשתמש עובר ביניהם. לדוגמה, אם האפליקציה שלך כוללת את הכרטיסייה קרקעית ניווט או ניווט חלונית הזזה, מספר אחורי תמיכה בסטאקים מאפשרת למשתמשים לעבור בחופשיות בין התהליכים באפליקציה בלי לאבד את מקומם באף אחד מהם.
רכיב הניווט מספק ממשקי API שתומכים במספר מקבצים
שמירה ושחזור של מצב היעדים בניווט
גרפי.
הכיתה NavigationUI
כוללת
שיטות שמטפלות בזה באופן אוטומטי, אבל אפשר גם להשתמש בממשקי ה-API
כדי לבצע הטמעה מותאמת אישית.
הטמעת תמיכה באופן אוטומטי באמצעות NavigationUI
הכיתה NavigationUI
כוללת ממשקי API ששומרים ומשחזרים את המצב של האפשרויות בתפריט באופן אוטומטי
שהמשתמש עובר ביניהם. ממשקי ה-API האלה מיישמים תמיכה במספר קריסות על ידי
כברירת מחדל במקרים הבאים:
- כשמשתמשים בעומס היתר המתאים של
setupWithNavController()
כדי לשייך מופע שלNavigationView
אוBottomNavigationView
עם במופע שלNavController
, כמו מתואר במאמר הוספת ניווט חלונית הזזה או תחתית ניווט. - כשמשתמשים
onNavDestinationSelected()
כדי ליצור תפריט ניווט בהתאמה אישית ממשק משתמש שמקושר ליעדים מתארחים מופיע במופעNavController
.
לא צריך לבצע שינויים נוספים בקוד כדי להטמיע כמה סטאקים חוזרים באמצעות ממשקי ה-API האלה והם הדרך המומלצת לתמוך בכמה מקבצים אפליקציה.
הטמעת תמיכה באופן ידני באמצעות ממשקי API בסיסיים
אם הרכיבים שסופקו על ידי NavigationUI
לא עונים על הדרישות שלך,
להשתמש בממשקי ה-API הבסיסיים כדי לשמור ושחזור של מקבץ חזרה באמצעות אחד
פלטפורמות ה-API האחרות שרכיב הניווט מספק.
XML של הניווט
ב-XML של הניווט, רכיבי <action>
בתרשים הניווט יכולים להשתמש ב-
app:popUpToSaveState
כדי לשמור את המצב של היעדים
הפעולה קפצה באמצעות app:popUpTo
. הם יכולים גם להשתמש בapp:restoreState
כדי לשחזר כל מצב שנשמר בעבר לגבי היעד שהוגדר
המאפיין app:destination
.
אפשר להשתמש במאפיינים האלה כדי לתמוך בכמה מקבצים. כאשר מתבצע ניווט
צריך להעביר את המשתמש ממקבץ אחד לאחר, להגדיר את שתי האפשרויות
app:popUpToSaveState
ו-app:restoreState
עד true
בהתאמה
רכיב <action>
. כך הפעולה שומרת את המצב של
יקובצו יחד וגם לשחזר את המצב של היעד שנשמר בעבר.
סטאק, אם יש.
בדוגמה הבאה מוצגת פעולה שמשתמשת בשני המאפיינים האלה:
<action
android:id=”@+id/swap_stack”
app:destination=”@id/second_stack”
app:restoreState=”true”
app:popUpTo=”@id/first_stack_start_destination”
app:popUpToSaveState=”true” />
אפשרויות ניווט
הכיתה NavOptions
מאפשר להעביר אפשרויות ניווט מיוחדות כדי לשמור ולשחזר מקבצים
כשמנווטים באמצעות NavController
. הדבר נכון בין אם אתה יוצר
של NavOptions
באמצעות Kotlin
DSL או באמצעות
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);
למידע נוסף על העברת אפשרויות ניווט, ראו החלת אפשרויות הניווט באופן פרוגרמטי.
מקורות מידע נוספים
כדי לקבל מידע נוסף על תמיכה בכמה מקבצים אחורה באמצעות רכיב הניווט, אפשר להיעזר במקורות המידע הנוספים הבאים:
פוסטים בבלוגים
- MAD מיומנויות: ניווט בכמה מקבצים ב-Medium
- ניווט: התעמקות במקבצים מרובים ב-Medium
דוגמיות
- עכשיו ב-Android אפליקציה ב-GitHub
- Jetnews ב-GitHub
- Jetsnack ב-GitHub