Il modo consigliato per navigare da una destinazione all'altra è utilizzare Safe Args Plug-in Gradle. Questo plug-in genera classi di oggetti e builder che consentono navigazione sicura per la digitazione tra le destinazioni. Utilizza Safe Args per navigazione e passaggio di dati tra destinazioni.
Attiva Safe Arg
Per aggiungere arg. sicuri
al tuo progetto, includi i seguenti classpath
nel file build.gradle
di primo livello:
Alla moda
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") } }
Devi inoltre applicare uno dei due plug-in disponibili.
Per generare un codice del linguaggio Java adatto a moduli Java o misti Java e Kotlin, aggiungi
questa riga nel file build.gradle
della tua app o del tuo modulo:
Alla moda
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
In alternativa, per generare un codice Kotlin adatto ai moduli solo Kotlin, aggiungi:
Alla moda
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Devi avere android.useAndroidX=true
nel tuo
gradle.properties
file in base a
Migrazione ad AndroidX.
Codice generato
Dopo aver attivato Safe Args, il codice generato contiene classi e metodi per ogni azione che hai definito, nonché le classi che corrispondono a ogni e la destinazione di destinazione.
Safe Args genera una classe per ogni destinazione in cui ha origine un'azione. La
il nome della classe generato aggiunge "Directions" alla classe di destinazione di origine
. Ad esempio, se la destinazione di origine è denominata
SpecifyAmountFragment
, la classe generata è denominata
SpecifyAmountFragmentDirections
.
La classe generata contiene un metodo statico per ogni azione definita nel
destinazione di origine. Questo metodo utilizza tutti i parametri di azione definiti come
argomenti e restituisce un oggetto NavDirections
che puoi passare direttamente
a navigate()
.
Esempio di Args sicuro
Ad esempio, considera un grafico di navigazione con una singola azione che collega due
destinazioni, SpecifyAmountFragment
e ConfirmationFragment
. La
ConfirmationFragment
richiede un singolo parametro float
che fornisci come parte
dell'azione.
Safe Args genera una classe SpecifyAmountFragmentDirections
con una singola
actionSpecifyAmountFragmentToConfirmationFragment()
, e un metodo interno
chiamata ActionSpecifyAmountFragmentToConfirmationFragment
. La parte interna
deriva da NavDirections
e archivia l'ID azione e
float
. L'oggetto NavDirections
restituito può quindi essere passato
direttamente a navigate()
, come mostrato nell'esempio seguente:
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);
}
Per ulteriori informazioni sul trasferimento dei dati tra destinazioni con Safe Args, consulta Utilizza Safe Args per trasmettere dati con la sicurezza dei tipi.
Garantisci la sicurezza dei tipi utilizzando Safe Args
Naviga tra le destinazioni utilizzando Safe Args Plug-in Gradle. Questo plug-in genera semplici classi di oggetti e builder abilitare la navigazione sicura per il tipo e il passaggio di argomenti tra le destinazioni.
Per aggiungere arg. sicuri
al tuo progetto, includi i seguenti classpath
nel file build.gradle
di primo livello:
Alla moda
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") } }
Devi inoltre applicare uno dei due plug-in disponibili.
Per generare un codice del linguaggio Java adatto a moduli Java o misti Java e Kotlin, aggiungi
questa riga nel file build.gradle
della tua app o del tuo modulo:
Alla moda
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
In alternativa, per generare un codice Kotlin adatto ai moduli solo Kotlin, aggiungi:
Alla moda
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Devi avere android.useAndroidX=true
nel tuo
gradle.properties
file in base a
Migrazione ad AndroidX.
Una volta attivato Safe Args, il plug-in genera codice che contiene classi e
per ogni azione definita. Per ogni azione, anche Safe Args
Genera una classe per ogni destinazione di origine, ovvero la destinazione
da cui ha origine l'azione. Il nome della classe generato è una combinazione
il nome della classe di destinazione di origine e la parola "Directions". Ad esempio:
Se la destinazione è denominata SpecifyAmountFragment
, la classe generata è
denominato SpecifyAmountFragmentDirections
. La classe generata contiene un
per ogni azione definita nella destinazione di origine. Questo metodo richiede
qualsiasi parametro di azione definito come argomenti e restituisce un oggetto NavDirections
che puoi passare a navigate()
.
Ad esempio, supponiamo di avere un grafico di navigazione con una singola azione
collega la destinazione di origine, SpecifyAmountFragment
, a un server
destinazione, ConfirmationFragment
.
Safe Args genera una classe SpecifyAmountFragmentDirections
con una singola
actionSpecifyAmountFragmentToConfirmationFragment()
, che restituisce un
NavDirections
oggetto. Questo oggetto NavDirections
restituito può quindi essere passato
direttamente a navigate()
, come mostrato nell'esempio seguente:
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); }
Per ulteriori informazioni sul trasferimento dei dati tra le destinazioni con Safe Args, consulta Utilizza Safe Args per trasferire dati con la sicurezza del tipo in Trasmetti dati tra destinazioni.