Die Navigationskomponente arbeitet mit dem Android-Betriebssystem, um die Back-Stack als Nutzer in Ihrer App navigieren. In einigen Fällen kann es hilfreich sein, mehrere Gruppen von Back Stacks, wobei der Nutzer zwischen ihnen hin- und herwechseln kann. Enthält Ihre App beispielsweise unten eingeblendete Navigation oder Navigation Schublade, mehrere Rücken Dank Stack-Unterstützung können Nutzer beliebig zwischen Abläufen in Ihrer App wechseln. ohne ihren Platz zu verlieren.
Die Navigationskomponente bietet APIs, die mehrere Back-Stacks unterstützen, indem sie
Speichern und Wiederherstellen des Status von Zielen in Ihrer Navigation
Diagramm. Die
NavigationUI
Kurs enthält
die dies automatisch verarbeiten. Sie können aber auch die zugrunde liegenden APIs verwenden,
um eine individuellere Implementierung zu erhalten.
Unterstützung automatisch mit NavigationUI implementieren
Klasse NavigationUI
enthält APIs, die den Status von Menüpunkten automatisch
wie Nutzende zwischen ihnen wechseln. Diese APIs implementieren mehrere Back-Stacks, indem sie
in den folgenden Fällen als Standardeinstellung festgelegt:
- Wenn Sie die entsprechende Überlastung
setupWithNavController()
um eine Instanz vonNavigationView
oderBottomNavigationView
mit einemNavController
-Instanz, als wie unter Navigationselemente hinzufügen Drawer oder Unten Navigation. - Wenn Sie
onNavDestinationSelected()
um ein benutzerdefiniertes Navigationsmenü Benutzeroberfläche, die mit gehosteten Zielen verknüpft ist durch eineNavController
-Instanz.
Diese APIs erfordern keine weiteren Codeänderungen, um mehrere Back-Stacks zu implementieren unterstützen. Diese sind die empfohlene Methode zur Unterstützung mehrerer Back-Stacks in Ihrem
Support manuell mit zugrunde liegenden APIs implementieren
Wenn die von NavigationUI
bereitgestellten Elemente nicht deinen Anforderungen entsprechen,
die zugrunde liegenden APIs zum Speichern und Wiederherstellen von Back-Stacks über eine der
mit den anderen API-Oberflächen,
die von der Komponente „Navigation“ bereitgestellt werden.
Navigations-XML
In Navigations-XML können <action>
-Elemente in Ihrer Navigationsgrafik das
app:popUpToSaveState
, um den Status aller Ziele zu speichern, die der
Aktion per app:popUpTo
ausgeführt. Sie können auch die app:restoreState
können Sie jeden zuvor gespeicherten Status für das in
Das Attribut app:destination
Sie können diese Attribute verwenden, um mehrere Back Stacks zu unterstützen. Wenn eine Navigation
Nutzende von einem Back Stack in einen anderen verschieben müssen.
app:popUpToSaveState
und app:restoreState
auf true
im entsprechenden
<action>
-Element. Auf diese Weise speichert die Aktion den Status der aktuellen
und den zuvor gespeicherten Status des Ziels wiederherstellen.
Stacks, falls vorhanden.
Das folgende Beispiel zeigt eine Aktion, bei der diese beiden Attribute verwendet werden:
<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
Klasse NavOptions
ermöglicht es Ihnen, spezielle Navigationsoptionen zu übergeben, um Stapel zu speichern und wiederherzustellen.
wenn Sie mit NavController
navigieren. Dies gilt unabhängig davon, ob Sie Ihre
Instanz von NavOptions
mit Kotlin
DSL oder die
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);
Weitere Informationen zum Übergeben von Navigationsoptionen finden Sie unter NavOptions anwenden Programmatisch garantiert.
Weitere Informationen
Wenn Sie mehr über die Unterstützung mehrerer Back-Stacks mit der Navigationskomponente erfahren möchten, finden Sie in den folgenden zusätzlichen Ressourcen:
Blogposts
- MAD Skills: Navigation durch mehrere Back Stacks auf Medium
- Navigation: Multiple Back Stacks im Detail auf Medium
Produktproben
- Jetzt für Android App auf GitHub
- JetNews auf GitHub
- Jetsnack auf GitHub