Mithilfe von Navigationsaktionen können Sie Verbindungen zwischen Fragmenten herstellen. Durch Aufrufen eines Navigationsaktion Nutzende von einem Ziel zu einem anderen führt. Dieser Leitfaden wird erklärt, was Aktionen sind und wie Sie sie erstellen und verwenden können.
Übersicht
Jede Aktion hat eine eindeutige ID und kann zusätzliche Attribute enthalten, wie z. B. Ziel. Das Ziel definiert den Bildschirm, zu dem die App den Nutzer weiterleitet. wenn sie die Aktion auslösen. Die Aktion kann auch Argumente verwenden, um Daten zu übertragen von einem Ziel zum anderen.
- Sichere Argumente:Mit Aktionen können Sie Ressourcen-IDs durch Sichere Argumente Von Args generierte Vorgänge, die zusätzliche Sicherheit bei der Kompilierungszeit bieten.
- Animationen:Sie können auch Übergänge zwischen den Zielen animieren. Weitere Informationen finden Sie unter Übergänge zwischen Zielen animieren.
Beispiele
Definieren Sie mithilfe der <action>
-Tags Aktionen in der XML-Datei des Navigationsdiagramms. Die
implementiert das folgende Snippet eine Aktion, die einen Übergang von
FragmentA
in FragmentB
.
<fragment
android:id="@+id/fragmentA"
android:name="com.example.FragmentA">
<action
android:id="@+id/action_fragmentA_to_fragmentB"
app:destination="@id/fragmentB" />
</fragment>
Mithilfe einer Aktion navigieren
Wenn Sie mit dieser Aktion navigieren möchten, rufen Sie NavController.navigate()
auf und übergeben
die Aktion id
ist:
navController.navigate(R.id.action_fragmentA_to_fragmentB)
Globale Aktionen
Mit globalen Aktionen können Sie von überall aus zu einem Ziel navigieren.
Für jedes Ziel in Ihrer App, das über mehr als einen Pfad zugänglich ist, eine entsprechende globale Aktion zu definieren, Ziel.
Betrachten Sie das folgende Beispiel. results_winner
und game_over
müssen beide Ziele an der Zielanwendung "Zuhause" angezeigt werden. Die
Die Aktion „action_pop_out_of_game
“ bietet die Möglichkeit dazu.
action_pop_out_of_game
ist eine globale Aktion außerhalb eines bestimmten Fragments.
Das bedeutet, dass Sie sie überall im
in_game_nav_graph
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/in_game_nav_graph"
app:startDestination="@id/in_game">
<!-- Action back to destination which launched into this in_game_nav_graph -->
<action android:id="@+id/action_pop_out_of_game"
app:popUpTo="@id/in_game_nav_graph"
app:popUpToInclusive="true" />
<fragment
android:id="@+id/in_game"
android:name="com.example.android.gamemodule.InGame"
android:label="Game">
<action
android:id="@+id/action_in_game_to_resultsWinner"
app:destination="@id/results_winner" />
<action
android:id="@+id/action_in_game_to_gameOver"
app:destination="@id/game_over" />
</fragment>
<fragment
android:id="@+id/results_winner"
android:name="com.example.android.gamemodule.ResultsWinner" />
<fragment
android:id="@+id/game_over"
android:name="com.example.android.gamemodule.GameOver"
android:label="fragment_game_over"
tools:layout="@layout/fragment_game_over" />
</navigation>