Obsługa wielu wstecznych stosów

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:

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.

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” />

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

Próbki