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
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle
文件中包含以下 classpath
:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
您还必须应用以下两个可用插件之一。
如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块的 build.gradle
文件中:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
根据迁移到 AndroidX 文档,您的 gradle.properties
文件中必须具有 android.useAndroidX=true
。
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
如需将 Safe Args 添加到您的项目,请在顶层 build.gradle
文件中包含以下 classpath
:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
您还必须应用以下两个可用插件之一。
如需生成适用于 Java 模块或 Java 和 Kotlin 混合模块的 Java 语言代码,请将以下行添加到应用或模块的 build.gradle
文件中:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
此外,如需生成仅适用于 Kotlin 模块的 Kotlin 语言代码,请添加以下行:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
根据迁移到 AndroidX 文档,您的 gradle.properties
文件中必须具有 android.useAndroidX=true
。
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