Es wird empfohlen, zur Navigation zwischen Zielorten die sicheren Args zu verwenden. Gradle-Plug-in. Dieses Plug-in generiert Objekt- und Builder-Klassen, die typsichere Navigation zwischen Zielen. Verwenden Sie sichere Argumente für Navigieren und Datenübergabe zwischen Zielen
Sichere Argumente aktivieren
Um sichere Argumente hinzuzufügen
fügen Sie folgendes classpath
in Ihre übergeordnete build.gradle
-Datei ein:
Cool
buildscript { repositories { google() } dependencies { def nav_version = "2.8.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Sie müssen außerdem eines der beiden verfügbaren Plug-ins anwenden.
Um für Java oder gemischte Java- und Kotlin-Module den Java-Sprachcode zu generieren,
diese Zeile in die build.gradle
-Datei Ihrer App oder Ihres Moduls ein:
Cool
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternativ können Sie folgenden Code hinzufügen, um Kotlin-Code zu generieren, der für reine Kotlin-Module geeignet ist:
Cool
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
android.useAndroidX=true
muss in deinem
gradle.properties
Datei gemäß
Zu AndroidX migrieren
Generierter Code
Nachdem Sie sichere Args aktiviert haben, enthält der generierte Code Klassen und Methoden für definierten Aktionen sowie Klassen für die einzelnen gesendeten und Empfängerziel.
Sichere Args generiert eine Klasse für jedes Ziel, von dem eine Aktion ausgeht. Die
mit dem generierten Klassennamen „Directions“ mit der ursprünglichen Zielklasse
Namen. Wenn der Ausgangsort z. B. den Namen
SpecifyAmountFragment
, die generierte Klasse hat den Namen
SpecifyAmountFragmentDirections
.
Die generierte Klasse enthält eine statische Methode für jede Aktion, die im
Ursprungsziel. Bei dieser Methode werden alle definierten Aktionsparameter als
und gibt ein NavDirections
-Objekt zurück, das Sie direkt
an navigate()
.
Sichere Args-Beispiel
Stellen Sie sich beispielsweise ein Navigationsdiagramm mit einer einzigen Aktion vor, die zwei
SpecifyAmountFragment
und ConfirmationFragment
. Die
ConfirmationFragment
verwendet einen einzelnen float
-Parameter, den Sie als Teil angeben
der Handlung.
Sichere Args generiert eine SpecifyAmountFragmentDirections
-Klasse mit einem einzelnen
actionSpecifyAmountFragmentToConfirmationFragment()
und einer inneren
Klasse namens ActionSpecifyAmountFragmentToConfirmationFragment
. Das innere
Klasse wird von NavDirections
abgeleitet und speichert die zugehörige Aktions-ID und
float
-Parameter. Das zurückgegebene NavDirections
-Objekt kann dann
direkt an navigate()
, wie im folgenden Beispiel gezeigt:
Kotlin
override fun onClick(v: View) {
val amount: Float = ...
val action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount)
v.findNavController().navigate(action)
}
Java
@Override
public void onClick(View view) {
float amount = ...;
action =
SpecifyAmountFragmentDirections
.actionSpecifyAmountFragmentToConfirmationFragment(amount);
Navigation.findNavController(view).navigate(action);
}
Weitere Informationen zur Übergabe von Daten zwischen Zielen mit sicheren Argumenten finden Sie unter Sichere Args verwenden, um Daten mit Typsicherheit zu übergeben
Typsicherheit durch Verwendung von Safe Args gewährleisten
Mithilfe von sicheren Args zwischen Zielen navigieren Gradle-Plug-in. Dieses Plug-in generiert einfache Objekt- und Builder-Klassen, typsichere Navigation und Argumentübergabe zwischen Zielen aktivieren
Um sichere Argumente hinzuzufügen
fügen Sie folgendes classpath
in Ihre übergeordnete build.gradle
-Datei ein:
Cool
buildscript { repositories { google() } dependencies { def nav_version = "2.8.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Sie müssen außerdem eines der beiden verfügbaren Plug-ins anwenden.
Um für Java oder gemischte Java- und Kotlin-Module den Java-Sprachcode zu generieren,
diese Zeile in die build.gradle
-Datei Ihrer App oder Ihres Moduls ein:
Cool
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
Alternativ können Sie folgenden Code hinzufügen, um Kotlin-Code zu generieren, der für reine Kotlin-Module geeignet ist:
Cool
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
android.useAndroidX=true
muss in deinem
gradle.properties
Datei gemäß
Zu AndroidX migrieren
Nachdem Sie sichere Args aktiviert haben, generiert das Plug-in Code, der Klassen und
Methoden für jede von Ihnen definierte Aktion anwenden. Bei jeder Aktion werden
generiert eine Klasse für jedes Startziel, d. h. das Ziel
von dem die Handlung ausgeht. Der generierte Klassenname ist eine Kombination aus
den Namen der Ausgangsklasse und das Wort „Directions“. Beispiel:
Wenn das Ziel den Namen SpecifyAmountFragment
hat, lautet die generierte Klasse
mit dem Namen SpecifyAmountFragmentDirections
. Die generierte Klasse enthält eine statische
-Methode für jede im Ursprungsziel definierte Aktion. Diese Methode nimmt
beliebige festgelegte Aktionsparameter als Argumente und gibt ein NavDirections
-Objekt zurück
die Sie an navigate()
übergeben können.
Nehmen wir als Beispiel an, wir haben ein Navigationsdiagramm mit einer einzigen Aktion,
verbindet das Ausgangsziel SpecifyAmountFragment
mit einem empfangenden
Ziel: ConfirmationFragment
.
Sichere Args generiert eine SpecifyAmountFragmentDirections
-Klasse mit einem einzelnen
actionSpecifyAmountFragmentToConfirmationFragment()
, die eine
NavDirections
-Objekt. Dieses zurückgegebene NavDirections
-Objekt kann dann
direkt an navigate()
, wie im folgenden Beispiel gezeigt:
Kotlin
override fun onClick(view: View) { val action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment() view.findNavController().navigate(action) }
Java
@Override public void onClick(View view) { NavDirections action = SpecifyAmountFragmentDirections .actionSpecifyAmountFragmentToConfirmationFragment(); Navigation.findNavController(view).navigate(action); }
Weitere Informationen zur Übergabe von Daten zwischen Zielen mit sicheren Argumenten finden Sie unter Verwenden Sie sichere Args zur Weitergabe von Daten mit dem Typ "Sicherheit" in Daten übertragen zwischen Ziele