Komponent Nawigacja współpracuje z systemem operacyjnym Android, aby utrzymywać back stack jako użytkownik porusza się w Twojej aplikacji. W niektórych przypadkach pomocne może być pozostawienie kilku stron w tym samym czasie, kiedy użytkownik porusza się między nimi. Na przykład jeśli Twoja aplikacja zawiera bottom, nawigacja lub nawigacja szuflada, wielokrotne tył obsługa stosu pozwala użytkownikom swobodnie przełączać się między procesami w aplikacji nie tracąc przy tym miejsca.
Komponent Nawigacja udostępnia interfejsy API, które obsługują wiele stosów wstecznych przez
Zapisywanie i przywracanie stanu miejsc docelowych w nawigacji
NavigationUI
klasa obejmuje
które obsługują tę funkcję automatycznie, ale możesz też użyć bazowych interfejsów API.
ręcznie, aby uzyskać bardziej spersonalizowaną implementację.
Automatyczne wdrażanie pomocy za pomocą NavigationUI
Zajęcia NavigationUI
obejmuje interfejsy API, które automatycznie zapisują i przywracają stan pozycji menu jako
użytkownik przechodzi między nimi. Te interfejsy API implementują obsługę wielu bazowych technologii wstecznych przez
domyślnie w tych przypadkach:
- Przy odpowiednim przeciążeniu
setupWithNavController()
aby powiązać instancjęNavigationView
lubBottomNavigationView
zNavController
, tak jak opisane w sekcji Dodawanie nawigacji szuflada lub Dół nawigacji. - Jeśli używasz
onNavDestinationSelected()
aby utworzyć niestandardowe menu nawigacyjne UI powiązany z hostowanymi miejscami docelowymi przez instancjęNavController
.
Te interfejsy API nie wymagają wprowadzania dodatkowych zmian w kodzie w celu wdrożenia wielu backendów jest zalecanym sposobem obsługi wielu backendów .
Ręczne wdrażanie pomocy za pomocą bazowych interfejsów API
Jeśli elementy dostarczone przez NavigationUI
nie spełniają Twoich wymagań,
mogą używać bazowych interfejsów API do zapisywania i przywracania stosów zwrotnych za pomocą jednego z
z innych platform interfejsu API
dostępnych w komponencie Nawigacja.
Plik XML nawigacji
W pliku XML nawigacji elementy <action>
na wykresie nawigacyjnym mogą używać funkcji
app:popUpToSaveState
, by zapisać stan wszystkich miejsc docelowych, które są
działanie wykonane przy użyciu metody app:popUpTo
. Może też użyć app:restoreState
w celu przywrócenia zapisanego wcześniej stanu miejsca docelowego zdefiniowanego w
atrybut app:destination
.
Tych atrybutów możesz użyć do obsługi wielu stosów zwrotnych. Podczas nawigacji
działanie musi przenieść użytkownika z jednego stosu wstecznego do drugiego, ustaw oba
app:popUpToSaveState
i app:restoreState
do true
w odpowiednich
<action>
. Dzięki temu działanie zapisze stan bieżącej tylnej części ekranu.
stosu, przywracając przywrócony wcześniej stan miejsca docelowego
stosu, o ile istnieje.
Następujący przykład pokazuje działanie wykorzystujące oba te atrybuty:
<action
android:id=”@+id/swap_stack”
app:destination=”@id/second_stack”
app:restoreState=”true”
app:popUpTo=”@id/first_stack_start_destination”
app:popUpToSaveState=”true” />
Opcje nawigacji
Zajęcia NavOptions
umożliwia przekazywanie specjalnych opcji nawigacji w celu zapisywania i przywracania stosu
, gdy używasz nawigacji NavController
. Dzieje się tak niezależnie od tego, czy tworzysz
instancji NavOptions
przy użyciu interfejsu Kotlin
DSL lub
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);
Aby dowiedzieć się więcej o przekazywaniu opcji nawigacji, zobacz Zastosuj NavOptions. automatycznie.
Dodatkowe materiały
Aby dowiedzieć się więcej o obsłudze wielu stosów wstecznych za pomocą komponentu Nawigacja, zapoznaj się z tymi dodatkowymi materiałami:
Posty na blogu
- MAD Skills: Poruszanie się po wielu pakietach na Medium
- Nawigacja: szczegółowe omówienie wielu stosów wstecznych na Medium
Próbki
- Teraz na Androidzie w GitHubie
- Jetnews w GitHubie
- Jetsnack w GitHubie