Navigazione
androidx.navigation
androidx.navigation.compose
androidx.navigation.dynamicfeatures
androidx.navigation.dynamicfeatures.fragment
androidx.navigation.dynamicfeatures.fragment.ui
androidx.navigation.fragment
androidx.navigation.fragment.compose
androidx.navigation.testing
androidx.navigation.ui
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Alpha Release |
---|---|---|---|---|
2 luglio 2025 | 2.9.1 | - | - | - |
Dichiarazione di dipendenze
Per aggiungere una dipendenza da Navigation, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli artefatti che ti servono nel file build.gradle
per
la tua app o il tuo modulo:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.1" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.1" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Safe Args
Per aggiungere Safe Args al progetto, includi il seguente classpath
nel file build.gradle
di primo livello:
Groovy
buildscript { repositories { google() } dependencies { def nav_version = "2.9.1" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.1" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Devi anche applicare uno dei due plug-in disponibili.
Per generare codice in linguaggio Java adatto per moduli Java o misti Java e Kotlin, aggiungi questa riga al file build.gradle
della tua app o del tuo modulo:
Groovy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
In alternativa, per generare codice Kotlin adatto per i moduli solo Kotlin, aggiungi:
Groovy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Devi avere android.useAndroidX=true
nel
file gradle.properties
come indicato in
Migrazione ad AndroidX.
Per informazioni sull'utilizzo delle estensioni Kotlin, consulta la documentazione di KTX.
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze di build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa libreria. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 2.9
Versione 2.9.1
2 luglio 2025
androidx.navigation:navigation-*:2.9.1
viene ritirata. La versione 2.9.1 contiene questi commit.
Correzioni di bug
- Risolto un problema che impediva agli
NavEntries
istanziati utilizzando un singolo livello superiore di andare oltre CREATED nel relativoLifecycle.State
. (I043ba, b/421095236)
Versione 2.9.0
7 maggio 2025
androidx.navigation:navigation-*:2.9.0
viene ritirata. La versione 2.9.0 contiene questi commit.
Modifiche importanti dalla versione 2.8.0
- Le azioni di Navigation Safe Args vengono ora generate con l'annotazione
@CheckResult
per garantire che vengano utilizzate.
Interfaccia del riquadro di supporto
- Ora i navigatori personalizzati possono contrassegnare le loro destinazioni come implementanti l'interfaccia
SupportingPane
, che indica aNavController
che queste destinazioni verranno mostrate insieme ad altre. Utilizzando questa interfaccia, è possibileRESUMED
più destinazioni contemporaneamente, ad esempio.
Compose Kotlin Multiplatform
- La navigazione ora offre una nuova funzione comune
NavController.handleDeepLink()
che accetta unNavDeepLinkRequest
anziché unIntent
. Ciò consente alle piattaforme diverse da Android di gestire correttamente i link diretti. Grazie Konstantin Tskhovrebov. - La navigazione ora offre
NavUri
, una nuova funzione di analisi comune che è un'API compatibile per l'URI di Android su altre piattaforme. In questo modo è possibile creare un URI in modo indipendente dalla piattaforma. Grazie Konstantin Tskhovrebov.
Funzioni type-safe
- Le API type-safe che in precedenza erano accessibili solo tramite metodi
reified
, ad esempiocomposable<YourScreen>
ora hanno versioni non concrete che accettano direttamente un'istanzaKClass
. - La sicurezza del tipo di navigazione ora supporta le classi di valori come percorso o come tipo di argomento di un percorso.
Versione 2.9.0-rc01
23 aprile 2025
androidx.navigation:navigation-*:2.9.0-rc01
viene ritirata. La versione 2.9.0-rc01 contiene questi commit.
Correzioni di bug
- Sono stati rimossi tutti i target di piattaforme non Android da Jetpack Navigation, in quanto questi target non funzionano. Ora vengono forniti stub per piattaforme diverse.(I2877d)
Versione 2.9.0-beta01
9 aprile 2025
androidx.navigation:navigation-*:2.9.0-beta01
viene ritirata. La versione 2.9.0-beta01 contiene questi commit.
Modifiche alle API
- L'API comune di
parseStringAsNavUri
è stata modificata in una funzione di fabbricaNavUri
che accetta una stringa. (I4db6e, b/403616316)
Aggiornamenti delle dipendenze
- Questa libreria ora ha come target il livello del linguaggio Kotlin 2.0 e richiede KGP 2.0.0 o versioni successive. (Idb6b5)
Versione 2.9.0-alpha09
26 marzo 2025
androidx.navigation:navigation-*:2.9.0-alpha09
viene ritirata. La versione 2.9.0-alpha09 contiene questi commit.
Nuove funzionalità
- Il modulo
navigation-testing
ora supporta desktop, Linux, macOS e iOS, oltre ad Android. (I2b770, b/398265336) NavType
è ora supportato su computer, Linux, macOS e iOS, oltre che su Android. (I297d8)
Versione 2.9.0-alpha08
12 marzo 2025
androidx.navigation:navigation-*:2.9.0-alpha08
viene ritirata. La versione 2.9.0-alpha08 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.8.9
: è stata corretta una regressione riscontrata in Navigazione 2.8.8 che richiedeva che un link diretto corrispondesse esattamente a tutti i campi di una richiesta o di un intent di link diretto per essere considerato una corrispondenza. Ciò ha causato la mancata funzionalità dei link diretti che contenevano corrispondenze parziali dei campi e non ne avevano altre. (Ie5e36, b/399826566)
Contributo esterno
- Nuova funzione di analisi comune per creare un
NavUri
. Grazie Konstantin Tskhovrebov. (If0a6a)
Versione 2.9.0-alpha07
26 febbraio 2025
androidx.navigation:navigation-*:2.9.0-alpha07
viene ritirata. La versione 2.9.0-alpha07 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui il tentativo di
saveState
con un pop-up non inclusivo comportava un savedState nullo che poteva causare un arresto anomalo durante il ripristino. (I9f3e8, b/395091644) - A partire da Navigation 2.8.8: è stata corretta la corrispondenza
NavDeepLink
in cui un link diretto e una richiesta di link diretto devono corrispondere esattamente a URI, azione e MIME. La corrispondenza non è più consentita se corrispondono solo uno o due campi. (I3b029, b/395712033) - A partire da Navigation 2.8.8: è stato corretto un bug per cui le route con percorsi jolly non corrispondono a un link diretto aggiunto (I7ea92, b/389970341)
Contributo esterno
- Estrai le API navigation-common, navigation-runtime e navigation-compose nella piattaforma comune. Grazie Konstantin Tskhovrebov. (I1e626, Ica76f, Idf479)
Problemi noti
- A causa del lavoro per risolvere il problema b/395712033, i link diretti devono avere erroneamente tutti gli stessi campi della richiesta di link diretto e/o del
Intent
. I link diretti devono corrispondere solo ai campi che contengono e i campi non inclusi devono essere ignorati. Questo problema è stato risolto per una release successiva nell'ambito di b/399826566.
Versione 2.9.0-alpha06
12 febbraio 2025
androidx.navigation:navigation-*:2.9.0-alpha06
viene ritirata. La versione 2.9.0-alpha06 contiene questi commit.
Nuove funzionalità
- Le azioni di Navigation Safe Args vengono ora generate con l'annotazione
@CheckResult
per garantire che vengano utilizzate. (I14d4c, b/356323084)
Correzioni di bug
- È stato corretto un errore in
NavController
in cui si tentava erroneamente di ripristinare gli stati backStack in un array quando venivano salvati in un elenco. (Idfb9b) - Da Navigazione
2.8.7
: Navigation Safe Args ora supporta le destinazioni componibili. (I35320, b/362791955)
Versione 2.9.0-alpha05
29 gennaio 2025
androidx.navigation:navigation-*:2.9.0-alpha05
viene ritirata. La versione 2.9.0-alpha05 contiene questi commit.
Correzioni di bug
- Risolvi un problema che causava un'animazione di ridimensionamento imprevista quando utilizzavi Navigation Compose. (I480f4, b/353294030)
- Da Navigazione
2.8.6
: le etichetteNavDestination
fornite tramite XML verranno analizzate tramiteNavType.get
per garantire che la logicaNavType
personalizzata venga rispettata. (I7ec2f, b/388100796) - Da Navigazione
2.8.6
: quando si passa a un'attività condataPattern
,ActivityNavigator
ora tenta di codificare il valore dell'argomento conNavType
. (I16376, b/383616432) - Da Navigation
2.8.5
: è stato risolto un problema che causava un'animazione di ridimensionamento imprevista quando si utilizzava Navigation Compose e si chiamava navigate nello stesso frame in cui termina l'animazione corrente. (I26cb1, b/353294030)
Versione 2.9.0-alpha04
11 dicembre 2024
androidx.navigation:navigation-*:2.9.0-alpha04
viene ritirata. La versione 2.9.0-alpha04 contiene questi commit.
Nuove funzionalità
- Le API type-safe che in precedenza erano accessibili solo tramite metodi
reified
, ad esempiocomposable<YourScreen>
ora hanno versioni non reificate che accettano direttamente un'istanzaKClass
.(Ia7eed, Id2879, Ibf244, I17d79, Id09d2, I54696, Ia47be, I93281, Ic1bf0, Iba4ee, If56a5, Icf969, I67644, I6f788, b/382094941, b/366291612, b/381938808)
La tabella seguente fornisce le API reificate e KClass.
reified | KClass |
---|---|
composable<TestClass> { } |
composable(TestClass::class) { } |
navigation<NestedGraph>(startDestination = TestClass::class) |
navigation(route = NestedGraph::class, startDestination = TestClass::class) |
dialog<TestClass> {} |
dialog(TestClass::class) {} |
navDeepLink<TestClass>(baseUri) |
navDeepLink(TestClass::class, baseUri) |
NavDeepLink.Builder.setUriPattern<TestClass>(baseUri) |
NavDeepLink.Builder.setUriPattern(TestClass::class, baseUri) |
NavDestinationBuilder.deepLink<TestDeepLink>(baseUri) { } |
NavDestinationBuilder.deepLink(TestDeepLink::class, baseUri) { } |
navController.getBackStackEntry<TestClass>() |
navController.getBackStackEntry(TestClass::class) |
navController.popBackStack<TestClass>(true) |
navController.popBackStack(TestClass::class, true) |
navController.clearBackStack<TestClass>() |
navController.clearBackStack(TestClass::class) |
NavOptions.setPopUpTo<TestClass>() |
NavOptions.setPopUpTo(TestClass::class) |
navOptions { popUpTo<TestClass> {...} } |
navOptions { popUpTo(TestClass::class) {...} } |
NavGraph.setStartDestination<TestClass>() |
NavGraph.setStartDestination(TestClass::class) |
NavGraph.findNode<TestClass>() |
NavGraph.findNode(TestClass::class) |
backStackEntry.toRoute<TestClass>() |
backStackEntry.toRoute(TestClass::class) |
savedStateHandle.toRoute<TestClass>() |
savedStateHandle.toRoute(TestClass::class) |
Modifiche alle API
- L'overload
NavGraph.setStartDestination
specifico per Kotlin per la sicurezza dei tipi è nascosto dalle origini Java. (Ic640c, b/364634035)
Correzioni di bug
- Da Navigazione
2.8.5
: è stato risolto un problema a causa del qualeNavHost
poteva generare un'eccezione all'interno diPredictiveBackHandler
se lo stack precedente viene estratto fino a 1 voce e viene attivato un pulsante Indietro del sistema nello stesso frame. (I1a429, b/375343407) - Da Navigazione
2.8.5
: è stato correttoNavDestination
NullPointerException
durante l'aggiornamento distartDestination
di un grafico. (I99421, b/361560785)
Contributo esterno
- Da Navigazione
2.8.5
: la sicurezza del tipo di navigazione ora supportaList<Enum>
come tipo di argomento di un percorso senza richiedereNavType
personalizzati. Grazie Csaba Kozák. (GH-725, b/375559962)
Versione 2.9.0-alpha03
13 novembre 2024
androidx.navigation:navigation-*:2.9.0-alpha03
viene ritirata. La versione 2.9.0-alpha03 contiene questi commit.
Nuove funzionalità
- La sicurezza del tipo di navigazione ora supporta le classi di valori come percorso o come tipo di argomento di un percorso. (I9344a, b/374347483)
Correzioni di bug
- È stato risolto un
ConcurrentModificationException
che poteva verificarsi quando unLifecycleObserver
collegato a unNavBackStackEntry
attivava una modifica dello stack precedente quando l'LifecycleOwner
host, ad esempio l'attività o il fragment contenitore, cambiava il proprio stato del ciclo di vita. (Ia9494)
Versione 2.9.0-alpha02
30 ottobre 2024
androidx.navigation:navigation-*:2.9.0-alpha02
viene ritirata. La versione 2.9.0-alpha02 contiene questi commit.
Contributo esterno
- Nuovo metodo
NavController.handleDeepLink(request: NavDeepLinkRequest)
comune. Grazie Konstantin Tskhovrebov. (I3e228)
Versione 2.9.0-alpha01
16 ottobre 2024
androidx.navigation:navigation-*:2.9.0-alpha01
viene ritirata. La versione 2.9.0-alpha01 contiene questi commit.
Nuove funzionalità
- Ora i navigatori personalizzati possono contrassegnare le loro destinazioni come implementanti l'interfaccia
SupportingPane
, che indica aNavController
che queste destinazioni verranno mostrate insieme ad altre. Utilizzando questa interfaccia, è possibileRESUMED
più destinazioni contemporaneamente, ad esempio. (Id5559) - Da Navigazione
2.8.3
: sono stati aggiunti nuovi controlli lint per i modulinavigation-common
,navigation-runtime
enavigation-compose
per identificare eventuali route type-safe non annotate correttamente con@Serializable
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Da Navigation
2.8.3
: sono stati aggiunti nuovi controlli lint per i modulinavigation-common
,navigation-runtime
enavigation-compose
per aiutare a identificare eventuali route type-safe con argomenti Enum che non sono annotati correttamente con@Keep
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Modifiche al comportamento
- Il tentativo di utilizzare un
NavController
che è stato precedentementeDESTROYED
ora causerà unIllegalStateException
. (I520da, b/369616172)
Correzioni di bug
- Aggiorna l'eccezione Enum class not found per suggerire l'utilizzo dell'annotazione
@Keep
nel caso in cui la classe Enum venga cancellata nelle build ridotte. (I90e79, b/358137294)
Problemi noti
- Si è verificato un problema con le nuove regole di lint aggiunte in
Navigation 2.8.*
che causano un erroreObsolete custom lint check
quando si tenta di eseguire lint con il plug-in Android Gradle 8.4+. (b/368070326, b/371463741)
Versione 2.8
Versione 2.8.9
12 marzo 2025
androidx.navigation:navigation-*:2.8.9
viene ritirata. La versione 2.8.9 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di regressione riscontrato in Navigation 2.8.8 che richiedeva che un link diretto corrispondesse esattamente a tutti i campi di una richiesta di link diretto o di un intent per essere considerato una corrispondenza. Ciò ha causato la mancata funzionalità dei link diretti che contenevano corrispondenze parziali dei campi e non ne avevano altre. (Ie5e36, b/399826566)
Versione 2.8.8
26 febbraio 2025
androidx.navigation:navigation-*:2.8.8
viene ritirata. La versione 2.8.8 contiene questi commit.
Correzioni di bug
- Risolto un bug per cui le route con percorsi con caratteri jolly non corrispondono a un link diretto aggiunto. (I7ea92, b/389970341)
- È stata corretta la corrispondenza
NavDeepLink
in cui un link diretto e una richiesta di link diretto devono corrispondere esattamente a URI, azione e MIME. La corrispondenza non è più consentita se corrispondono solo uno o due campi. (I3227f, b/395712033)
Problemi noti
- A causa del lavoro per risolvere il problema b/395712033, i link diretti devono avere erroneamente tutti gli stessi campi della richiesta di link diretto e/o del
Intent
. I link diretti devono corrispondere solo ai campi che contengono e i campi non inclusi devono essere ignorati. Questo problema è stato risolto per una release successiva nell'ambito di b/399826566.
Versione 2.8.7
12 febbraio 2025
androidx.navigation:navigation-*:2.8.7
viene ritirata. La versione 2.8.7 contiene questi commit.
Correzioni di bug
- Navigation Safe Args ora supporta le destinazioni componibili. (I35320, b/362791955)
Versione 2.8.6
29 gennaio 2025
androidx.navigation:navigation-*:2.8.6
viene ritirata. La versione 2.8.6 contiene questi commit.
Correzioni di bug
- Le etichette
NavDestination
fornite tramite XML verranno analizzate tramiteNavType.get
per garantire il rispetto della logicaNavType
personalizzata. (Id366d, b/388100796) - Quando si passa all'attività con
dataPattern
,ActivityNavigator
ora tenta di codificare il valore dell'argomento conNavType
. (I1a71d, b/383616432)
Versione 2.8.5
11 dicembre 2024
androidx.navigation:navigation-*:2.8.5
viene ritirata. La versione 2.8.5 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
NavHost
poteva generare un'eccezione all'interno diPredictiveBackHandler
se lo stack precedente veniva ridotto a una voce e veniva attivato un pulsante Indietro del sistema nello stesso frame. (I1a429, b/375343407) - È stato corretto
NavDestination
NullPointerException
durante l'aggiornamento distartDestination
di un grafico. (I99421, b/361560785) - Risolto un problema che causava un'animazione di ridimensionamento imprevista quando si utilizzava Navigation Compose e si chiamava navigate nello stesso frame in cui termina l'animazione corrente. (I26cb1, b/353294030)
- È stato risolto un
ConcurrentModificationException
che poteva verificarsi quando unLifecycleObserver
collegato a unNavBackStackEntry
attivava una modifica dello stack precedente quando l'LifecycleOwner
host, ad esempio l'attività o il fragment contenitore, cambiava il proprio stato del ciclo di vita. (Ia9494)
Contributo esterno
- La sicurezza del tipo di navigazione ora supporta
List<Enum>
come tipo di argomento di un percorso senza richiedereNavType
personalizzati. Grazie Csaba Kozák. (GH-725, b/375559962)
Versione 2.8.4
13 novembre 2024
androidx.navigation:navigation-*:2.8.4
viene ritirata. La versione 2.8.4 contiene questi commit.
Nuove funzionalità
- Da Navigazione
2.9.0-alpha03
: la sicurezza del tipo di navigazione ora supporta la classe di valori come percorso o come tipo di argomento di un percorso (I9344a, b/374347483)
Correzioni di bug
- Da Navigazione
2.9.0-alpha01
: il tentativo di utilizzare unNavController
che è stato precedentementeDESTROYED
ora causerà unIllegalStateException
. (I520da, b/369616172)
Versione 2.8.3
16 ottobre 2024
androidx.navigation:navigation-*:2.8.3
viene ritirata. La versione 2.8.3 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti nuovi controlli lint per i moduli
navigation-common
,navigation-runtime
enavigation-compose
per identificare eventuali route type-safe non annotate correttamente con@Serializable
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Sono stati aggiunti nuovi controlli lint per i moduli
navigation-common
,navigation-runtime
enavigation-compose
per contribuire a identificare eventuali route type-safe con argomenti Enum che non sono annotati correttamente con@Keep
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Correzioni di bug
- È stato risolto un problema per cui le nuove regole lint aggiunte in
Navigation 2.8.*
causavano un erroreObsolete custom lint check
quando si tentava di eseguire lint con il plug-in Android per Gradle 8.4 o versioni successive. (I1be3d, b/368070326, b/371463741)
Problemi noti
- Lint di navigazione genererà un errore di controllo lint personalizzato obsoleto quando si tenta di eseguire lint con Lint 16 (AGP 8.7) o versioni successive. (b/371926651)
Versione 2.8.2
2 ottobre 2024
androidx.navigation:navigation-*:2.8.2
viene ritirata. La versione 2.8.2 contiene questi commit.
Nuove funzionalità
- La sicurezza dei tipi di navigazione ora supporta le classi serializzabili che includono
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
eList<Double>?
senza richiedereNavType
personalizzati. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Correzioni di bug
- È stato migliorato il messaggio di errore visualizzato quando la navigazione non riesce a mappare l'argomento di un percorso a un
NavType
. Il nuovo messaggio di errore conterrà il nome dell'argomento, il nome completo dell'argomento e il nome completo del percorso. (Id8416, b/346264232)
Versione 2.8.1
18 settembre 2024
androidx.navigation:navigation-*:2.8.1
viene ritirata. La versione 2.8.1 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola lint per garantire l'utilizzo della funzione
popBackStack
che accetta un tipo di classe reificato quando si tenta dipopBackStack
utilizzando API type-safe. (Ief161, b/358095343)
Correzioni di bug
- Ora la navigazione richiede che la rotta passata all'
NavGraph
startDestination
contenga i valori di tutti gli argomenti obbligatori, inclusi quelli non annullabili e senza valore predefinito. (I18e74, b/362594265) - Gli argomenti sicuri di navigazione hanno aggiunto il supporto per le stringhe non nullabili, in modo che i valori "null" vengano analizzati e archiviati nel bundle così come sono. Questo si discosta dal comportamento esistente in cui i valori "null" vengono analizzati in un oggetto null. Questa modifica si applica solo ai tipi di stringa non nullabili. Le stringhe Nullable rimangono invariate. (I08b4a, b/348936238)
- Non è più possibile utilizzare un link diretto per accedere a un
NavDestination
, tranne che tramite un link diretto aggiunto esplicitamente alla destinazione. Ciò significa anche che puoi navigare verso l'itinerario di una destinazione solo con l'overload della funzione di navigazione che accetta un itinerario stringa. Questo aggiornamento corregge una vulnerabilità che consentiva di creare link diretti a una destinazione potenzialmente protetta. (Ie30e6)
Aggiornamento delle dipendenze
- Navigation Safe Args ora dipende da Kotlin 1.9.24, anziché da Kotlin 2.X, garantendo che gli sviluppatori non siano costretti a eseguire l'aggiornamento. (a4129a)
- La composizione della navigazione ora dipende da Composizione
1.7.2
.
Versione 2.8.0
4 settembre 2024
androidx.navigation:navigation-*:2.8.0
viene ritirata. La versione 2.8.0 contiene questi commit.
Modifiche importanti dalla versione 2.7.0
Sicurezza dei tipi di Kotlin DSL per la navigazione
- Ora la navigazione fornisce la sicurezza dei tipi per Kotlin DSL (utilizzato da Navigation Compose) utilizzando Kotlin Serialization per consentirti di definire le destinazioni nel grafico di navigazione tramite oggetti e classi di dati sicuri per i tipi:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Per ulteriori informazioni, consulta il post del blog Navigazione Sicurezza dei tipi di composizione di Meet.
Navigazione indietro predittiva di Composizione
- Navigation Compose ora supporta la funzionalità Indietro predittivo in-app tramite le nuove API
SeekableTransitionState
di compose-animation. In questo modo, puoi utilizzare il gesto Indietro per visualizzare la destinazione precedente con la transizione personalizzata prima di decidere se completare la transazione tramite il gesto completato o annullarla.
Composable Navigation Fragment
- È stato aggiunto un nuovo artefatto
navigation-fragment-compose
che include un'alternativaComposableNavHostFragment
aNavHostFragment
che ti consente di aggiungere destinazioni componibili ai tuoi file XML di navigazione. Ogni destinazionecomposable
deve essere espressa come metodo@Composable
di primo livello senza argomenti, il cui nome completo viene utilizzato come attributoandroid:name
in ogni destinazione. Quando si passa a una di queste destinazioni, viene creato un frammento contenitore per visualizzare i contenuti componibili.
// In HomeScreen.kt
@Composable
fun HomeScreen() {
// Your Composable content here
}
// In your navigation.xml
<composable
android:id="@+id/home_screen"
android:name="com.example.HomeScreenKt\$HomeScreen" />
Altre modifiche
- Navigation Compose ora dipende da Compose 1.7.0.
- La navigazione ora fornisce una nuova classe
CollectionNavType<T>
, una sottoclasse diNavType<T>
per argomenti basati su raccolte come elenchi, array e mappe. Tutti gli arrayNavType
predefiniti (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora ereditano da questa nuova classe. NavType
ora supporta di serie gli elenchi di numeri interi, stringhe, valori booleani, numeri in virgola mobile e numeri interi lunghi.
Versione 2.8.0-rc01
21 agosto 2024
androidx.navigation:navigation-*:2.8.0-rc01
viene ritirata. La versione 2.8.0-rc01 contiene questi commit.
Correzioni di bug
- Correzione dell'arresto anomalo della navigazione durante il passaggio di classi Enum di primo livello come argomenti type-safe. (I0ba76, b/358137294)
- Navigation 2.8 ora funziona correttamente con l'SDK 34 e non passerà all'SDK 35 fino alla release 2.9 insieme al resto delle librerie AndroidX. (b/358798728)
Versione 2.8.0-beta07
7 agosto 2024
androidx.navigation:navigation-*:2.8.0-beta07
viene ritirata. La versione 2.8.0-beta07 contiene questi commit.
Problemi noti
- A causa di b/358137294, solo le enumerazioni nidificate in un'altra classe sono supportate immediatamente. Gli enum di primo livello saranno supportati nella prossima release.
Correzioni di bug
- Quando si naviga verso destinazioni duplicate o condivise, la navigazione dà la priorità alla destinazione corrispondente più vicina alla posizione attuale nel grafico. (Ic89a4, b/352006850)
- La navigazione in safe args ora ha aggiunto un nuovo
NavType.EnumType
. Ciò significa che i tipiEnum
non richiedono piùNavType
personalizzati. Tieni presente che ilEnum
diSerialName
deve essere il nome completo predefinito. (I66d22, b/346475493) - La navigazione in Safe Args ha aggiunto il supporto integrato per i tipi di argomenti Nullable,tra cui
Int?
,Long?
,Float?
,Boolean?
eEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - L'
startDestination
diNavGraph
ora utilizzerà i valori degli argomenti predefiniti se la routestartDestination
passata aNavGraph
è esattamente uguale astartDestination.route
. (I13762, b/354046047)
Versione 2.8.0-beta06
24 luglio 2024
androidx.navigation:navigation-*:2.8.0-beta06
viene ritirata. La versione 2.8.0-beta06 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui i controlli lint
WrongStartDestinationType
non verificavano la presenza di oggetti Companion nel tipo di classe passato, impedendo a lint di rilevare l'errore. (I92b09)
Versione 2.8.0-beta05
10 luglio 2024
androidx.navigation:navigation-*:2.8.0-beta05
viene ritirata. La versione 2.8.0-beta05 contiene questi commit.
Correzioni di bug
- Correzione dell'arresto anomalo della navigazione
singleTop
quandoNavGraphs
nidificati condividono lo stesso percorsostartDestination
. (I17b94, b/294408596)
Versione 2.8.0-beta04
26 giugno 2024
androidx.navigation:navigation-*:2.8.0-beta04
viene ritirata. La versione 2.8.0-beta04 contiene questi commit.
Correzioni di bug
- La navigazione ora supporta la navigazione con stringhe vuote negli argomenti del percorso. (Ic5dbd, b/339481310)
- Migliora il messaggio di errore per i serializzatori personalizzati dichiarati direttamente nei campi della classe tramite
@Serializable(with =...)
per chiarire che al momento questa funzionalità non è supportata. (I052b0, b/341319151) - L'API di test
SavedStateHandleFactory
ora può essere utilizzata in test non Android, ma Robolectric dovrà supportare l'analisi degli argomenti con i bundle. (I76cdc, b/340966212) - È stato risolto il problema di arresto anomalo dovuto al ripristino dello stato durante la ripresa dell'app dopo l'interruzione del processo con l'utilizzo della navigazione type-safe in Compose. (Ia8f38, b/341801005)
- È stato risolto un problema in Navigation Compose per cui, dopo aver annullato il gesto di indietro predittivo, l'
NavBackStackEntry
a cui torna l'utente non torna mai allo stato del ciclo di vitaRESUMED
. In questo modo, la destinazione di ritorno viene animata correttamente anziché tornare in posizione dopo uno scorrimento. (I97a0c, b/346608857) - Quando utilizzi la funzionalità Indietro predittivo con Navigation Compose, la destinazione che viene visualizzata ora avrà l'ordine Z corretto, con un'animazione corretta sopra la destinazione in arrivo. (I2077b, b/345993681)
Versione 2.8.0-beta03
12 giugno 2024
androidx.navigation:navigation-*:2.8.0-beta03
viene ritirata. La versione 2.8.0-beta03 contiene questi commit.
Modifiche alle API
CollectionNavType
ha un nuovo metodo di riepilogoemptyCollection()
. Esegui l'override per gestire una raccolta vuota passata come argomento. (Ie4d84, b/341723133)
Correzioni di bug
- È stata aggiunta la documentazione su
NavType.serializeAsValue
eserializeAsValues
per evidenziare che gli output finali devono essere codificati come URI. (Ida6bd, b/344943214) - È stato risolto l'arresto anomalo durante la chiamata di
toRoute<T>
con un argomentoCollectionNavType
null. Quando si naviga con unCollectionNavType
null, l'argomento di output sarà il valore predefinito dichiarato nella classe Serializable o il valore restituito diemptyCollection()
se non è presente alcun valore predefinito. (I84158, Id630f, b/342672856)
Versione 2.8.0-beta02
29 maggio 2024
androidx.navigation:navigation-*:2.8.0-beta02
viene ritirata. La versione 2.8.0-beta02 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo di
ClassCastException
quando si utilizzaNavBackStackEntry.toRoute
con unNavType
personalizzato che ammette valori nulli. (I1c29b, b/342239473) - Risolti i problemi di ripristino dello stato dello stack indietro di navigazione causati dal tentativo di ripristinare una voce dello stack indietro non raggiungibile tramite ID dalla destinazione corrente. Poiché le route sono supportate dagli ID, anche le destinazioni create con le route sono state interessate. Inoltre, è stato corretto un arresto anomalo causato dalla chiamata di
clearBackStack()
che presentava lo stesso problema di base. (I423c3, b/339908057)
Versione 2.8.0-beta01
14 maggio 2024
androidx.navigation:navigation-*:2.8.0-beta01
viene ritirata. La versione 2.8.0-beta01 contiene questi commit.
Modifiche alle API
SavedStateHandle.toRoute()
ora accetta un parametrotypeMap
per i tipi di argomenti personalizzati. (Ie39fb, b/339026523)- È stata aggiunta un'API di test a
navigation-testing
per creare unSavedStateHandle
da un oggetto serializzabile Kotlin. (Id4867, b/339080702)
Correzioni di bug
- Sono state aggiunte le documentazioni dei parametri mancanti per le funzioni DSL Kotlin di Navigation. (I26a36)
Versione 2.8.0-alpha08
1° maggio 2024
androidx.navigation:navigation-*:2.8.0-alpha08
viene ritirata. La versione 2.8.0-alpha08 contiene questi commit.
Safe Args in Navigation Compose
- Il lavoro per supportare la sicurezza dei tipi in fase di compilazione per Navigation Compose e gli utenti del DSL Kotlin di Navigation basato su Kotlin Serialization è stato completato e le API sperimentali precedenti sono ora stabili. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Questa funzionalità utilizza Kotlin Serialization per consentirti di definire le destinazioni nel grafico di navigazione tramite oggetti e classi di dati type-safe:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Per ulteriori informazioni, consulta il post del blog Navigazione Sicurezza dei tipi di composizione di Meet.
Nuove funzionalità
- L'artefatto
navigation-fragment-compose
ora fornisce una composizioneLocalFragment
locale per i metodi componibili all'interno di unComposableFragment
. (If35e5) NavType
ora supporta di serie gli elenchi di numeri interi, stringhe, valori booleani, numeri in virgola mobile e numeri interi lunghi. (I4b6dd, Ia914c, b/188693139)
Versione 2.8.0-alpha07
17 aprile 2024
androidx.navigation:navigation-*:2.8.0-alpha07
viene ritirata. La versione 2.8.0-alpha07 contiene questi commit.
Nuove funzionalità
Aggiunge un nuovo artefatto
navigation-fragment-compose
che include un'alternativaComposableNavHostFragment
aNavHostFragment
che ti consente di aggiungere destinazionicomposable
ai tuoi file XML di navigazione. Ogni destinazionecomposable
deve essere espressa come metodo@Composable
di primo livello senza argomenti, il cui nome completo viene utilizzato come attributoandroid:name
in ogni destinazione. Quando si passa a una di queste destinazioni, viene creato un frammento contenitore per visualizzare i contenuti componibili. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
Modifiche alle API
- È proseguito il supporto di Safe Args in Navigation Compose utilizzando un approccio basato su Kotlin Serialization. Queste API non sono state completate e sono contrassegnate con l'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa quando l'intera superficie API sarà completata in una release futura. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db, Ib3aba, Ia668d, b/188693139)
Versione 2.8.0-alpha06
3 aprile 2024
androidx.navigation:navigation-*:2.8.0-alpha06
viene ritirata. La versione 2.8.0-alpha06 contiene questi commit.
Modifiche alle API
- È iniziato il supporto di Safe Args in Navigation Compose utilizzando un approccio basato su Kotlin Serialization. Queste API non sono state completate e sono contrassegnate con l'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa quando l'intera superficie API sarà completata in una release futura. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Correzioni di bug
NavHost
ora viene utilizzatoAlignment.TopStart
come argomento contentAlignment predefinito. In questo modo, l'impostazione è in linea con quella predefinita perAnimatedContent
e vengono corretti alcuni casi di transizione di scala imprevista dal centro. (I09e72, b/330111602)- Quando scorri con il gesto di indietro predittivo mentre utilizzi Navigation Compose, l'
NavHost
ora completa correttamente la transizione personalizzata anziché terminarla immediatamente. (I99017, b/327292110)
Versione 2.8.0-alpha05
20 marzo 2024
androidx.navigation:navigation-*:2.8.0-alpha05
viene ritirata. La versione 2.8.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora puoi passare argomenti a
NavGraph
'sstartDestination
direttamente nella routestartDestination
senza fare affidamento adefaultValue
. Ciò vale anche perNavGraph
startDestinations
nidificati. (I0e0b5, b/109505019, b/188693139)
Modifiche alle API
- È stata aggiunta una nuova classe astratta
CollectionNavType<T>
, una sottoclasse diNavType<T>
per gli argomenti basati su raccolte come elenchi, array e mappe. (Ic6d63, b/188693139) - Tutti gli array
NavType
predefiniti (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora sono di tipoCollectionNavType
(Idcf79, b/188693139) NavType
ora fornisce una nuova APIvalueEquals
aperta che determina se due valori dello stesso tipo sono uguali tra loro. (I6cb97, b/327229511)
Correzioni di bug
- I parametri di query nei link diretti ora consentono valori sotto forma di parentesi graffe intorno al nome dell'argomento (ad es.
{argName}
) come valori validi perNavTypes
basati su stringhe. In questo modo viene risolto un problema per cui un valore di questo tipo veniva considerato non valido (o assente) per tutti i tipi. (I18302, b/327274038) - Le funzioni
NavController
che supportano le route, comenavigate
opopBackStack
, ora possono corrispondere correttamente alle route compilate con argomenti di ArrayNavTypes
. (Iea805, b/327229511)
Versione 2.8.0-alpha04
6 marzo 2024
androidx.navigation:navigation-*:2.8.0-alpha04
viene ritirata. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- Ora puoi specificare
SizeTranform
per le transizioni in Navigation Compose definendole come parte dell'inizializzazione delle funzionicomposable
e/onavigation
. (I91062, b/296912651)
Correzioni di bug
- È stato risolto un problema per cui
NavHost
in Navigazione composizione non mostrava correttamente la transizione quando si utilizzava il pulsante Indietro del sistema senza un gesto. (Iceeae, b/325998468)
Versione 2.8.0-alpha03
21 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha03
viene ritirata. La versione 2.8.0-alpha03 contiene questi commit.
Modifiche alle API
NavBackStackEntry.savedStateHandle
ora è contrassegnato come@MainThread
perché utilizza codice che deve comunque trovarsi nel thread principale. (Ibb988, b/299523245)
Correzioni di bug
- È stato risolto un problema in Navigation che causava la creazione di
NavGraph
ViewModelDESTROYED
troppo presto perchéViewModel
della voce associata non faceva parte dello stato salvato. (Ib6bb7, b/317581849)
Aggiornamento delle dipendenze
- La composizione della navigazione ora dipende da Compose 1.7.0-alpha03.
Versione 2.8.0-alpha02
7 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha02
viene ritirata. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- Navigation Compose ora supporta la funzionalità Indietro predittivo in-app tramite le nuove API
SeekableTransitionState
di compose-animation. In questo modo, puoi utilizzare il gesto Indietro per visualizzare la destinazione precedente con la transizione personalizzata prima di decidere se completare la transazione tramite il gesto completato o annullarla. (I8b8e9)
Versione 2.8.0-alpha01
24 gennaio 2024
androidx.navigation:navigation-*:2.8.0-alpha01
viene ritirata. La versione 2.8.0-alpha01 contiene questi commit.
Correzioni di bug
- È stata corretta la perdita di
BackStackState
in cui più chiamatesaveState
a una destinazione comportavano il salvataggio di più stati, ma solo il primo poteva essere ripristinato. (I598b0, b/309559751) - Risolto un problema per cui gli argomenti non stringa non venivano visualizzati correttamente quando si utilizzavano gli helper
NavigationUI
per compilare il titolo delle barre delle app. (#636, b/316676794)
Aggiornamento delle dipendenze
- Navigation Compose ora dipende da Compose
1.7.0-alpha01
, che risolve un problema che poteva causare un'animazione di scalabilità imprevista. (b/297258205)
Contributo esterno
- Grazie a SimonMarquis per aver risolto il problema di visualizzazione per gli argomenti non stringa quando si utilizzano gli helper
NavigationUI
per compilare il titolo delle barre delle app.
Versione 2.7.7
Versione 2.7.7
7 febbraio 2024
androidx.navigation:navigation-*:2.7.7
viene ritirata. La versione 2.7.7 contiene questi commit.
Correzioni di bug
- Portato da Navigation
2.8.0-alpha01
: è stata corretta la perdita diBackStackState
in cui più chiamatesaveState()
su un singoloNavBackStackEntry
comportavano il salvataggio di più stati, ma solo il primo stato salvato poteva essere ripristinato. (I598b0, b/309559751) - Portato da Navigazione
2.8.0-alpha01
: è stato risolto un problema per cui gli argomenti non stringa non venivano visualizzati correttamente quando si utilizzavano gli helperNavigationUI
per compilare il titolo delle barre delle app. (#636, b/316676794)
Contributo esterno
- Grazie a SimonMarquis per aver risolto il problema di visualizzazione per gli argomenti non stringa quando si utilizzano gli helper
NavigationUI
per compilare il titolo delle barre delle app.
Versione 2.7.6
Versione 2.7.6
13 dicembre 2023
androidx.navigation:navigation-*:2.7.6
viene ritirata. La versione 2.7.6 contiene questi commit.
Correzioni di bug
- La funzione
NavGraph
equals()
ora considera correttamente i nodi dell'altro grafico anziché solo quello chiamante. In questo modo, i grafici con nodi con ID diversi non verranno più considerati uguali (I401cb, b/311414915).
Versione 2.7.5
Versione 2.7.5
1° novembre 2023
androidx.navigation:navigation-*:2.7.5
viene ritirata. La versione 2.7.5 contiene questi commit.
Miglioramenti delle prestazioni
- È stato migliorato notevolmente il rendimento (in termini di tempo e numero di allocazioni) del confronto tra due grafici. Ciò significa che chiamate come
setGraph
, che confrontano internamente il nuovo grafico con quello esistente, sono molto più veloci e comportano un numero inferiore di frame saltati. Grazie a Michał Z per l'analisi approfondita che ha portato a questo miglioramento. (I6ad62) NavHost
ora eseguirà il rendering della destinazione iniziale al primo passaggio di composizione, senza dover attendere il secondo passaggio per leggere lo stato aggiornato. (I439a7, b/304852206)
Correzioni di bug
- È stato risolto un problema per cui lo stack precedente veniva rimosso se chiamavi
setGraph
più di una volta con lo stesso identico grafico solo se nel grafico era presente una destinazione che conteneva un'azione che collegava due destinazioni. (Ieaed7) - Le finestre di dialogo a cui è stato eseguito l'accesso e che sono state chiuse in rapida successione non verranno più visualizzate nell'elenco di
NavController.visibleEntries
. (I67586, b/287969970) - Quando una voce viene visualizzata in primo piano e viene seguita da una modifica della configurazione, il
ViewModel
della voce ora viene cancellato correttamente sesaveState
è false. (Idf242, b/298164648) - È stato risolto un problema per cui
NavController
poteva gestire lo stesso link diretto più di una volta se lo stack precedente era completamente vuoto prima di una modifica alla configurazione o di una chiamata asetGraph
solo quando l'intent in entrata aveva impostato il flagFLAG_ACTIVITY_NEW_TASK
. (I73c7f)
Aggiornamenti delle dipendenze
- La navigazione con i frammenti ora dipende da Fragment 1.6.2, che risolve un problema per cui le istanze
ViewModel
dei frammenti nidificati non venivano cancellate quando veniva chiamatoclearBackStack
.
Versione 2.7.4
Versione 2.7.4
4 ottobre 2023
androidx.navigation:navigation-*:2.7.4
viene ritirata. La versione 2.7.4 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto di
popUpTo
per utilizzare le route con argomenti per tornare a una voce specifica che utilizza esattamente questi argomenti, in linea con il supporto disponibile inpopBackStack
. (I731f4, b/299255572)
Correzioni di bug
- È stato risolto il problema a causa del quale l'interruzione di una navigazione con un'altra navigazione con
popUpTo
causava l'arresto anomalo diFragmentNavigator
. (I3c848, b/301887045) - È stato risolto il problema per cui la pressione del pulsante Indietro del sistema non aggiornava correttamente
currentDestination
in modo che corrispondesse al fragment visualizzato. (Id0d6c, b/289877514) - Il ciclo di vita di
DialogFragment
ora passerà correttamente allo statoRESUMED
quando la finestra di dialogo sopra di esso verrà chiusa. (I88f0d, b/301811387)
Versione 2.7.3
Versione 2.7.3
20 settembre 2023
androidx.navigation:navigation-*:2.7.3
viene ritirata. La versione 2.7.3 contiene questi commit.
Correzioni di bug
- È stato risolto un problema in Navigazione con frammenti che causava la presenza di voci errate nell'elenco
visibleEntries
. (I5caa9, b/288520638) - È stato risolto un problema che impediva alla destinazione della finestra mobile (ad es.
Dialogs
,Bottomsheets
e così via) di ricevere un callback del ciclo di vitaRESUMED
. (I3b866, b/287505132)
Versione 2.7.2
Versione 2.7.2
6 settembre 2023
androidx.navigation:navigation-*:2.7.2
viene ritirata. La versione 2.7.2 contiene questi commit.
Correzioni di bug
- La navigazione ora dipende da Lifecycle
2.6.2
, correggendo un'interazione trarememberSaveable
eNavHost
di Navigation Compose che causava il mancato ripristino corretto dello statorememberSaveable
delle destinazioni e di qualsiasi istanzaSavedStateHandle
diViewModel
di proprietà dopo l'interruzione e la ricreazione del processo. (b/298059596, b/289436035) - È stato risolto un problema che si verificava quando venivano visualizzate più finestre di dialogo in Navigation Compose contemporaneamente, per cui le finestre di dialogo parzialmente oscurate (ad esempio, non la finestra di dialogo in primo piano) si trovavano nello stato del ciclo di vita
CREATED
anziché nello statoSTARTED
. (aosp/2728520, b/289257213) - È stato risolto un problema che si verificava quando venivano mostrate più finestre di dialogo in Navigation Compose contemporaneamente, per cui la chiusura della finestra di dialogo in primo piano causava il blocco della nuova finestra di dialogo in primo piano nello stato del ciclo di vita
STARTED
anziché il passaggio corretto aRESUMED
. (aosp/2629401, b/286371387) - Navigation Safe Args non istanzia più il suo task in modo eager se non viene effettivamente eseguito. (I0e385, b/260322841)
Aggiornamento delle dipendenze
- La composizione della navigazione ora dipende da Compose 1.5.1.
Versione 2.7.1
Versione 2.7.1
23 agosto 2023
androidx.navigation:navigation-*:2.7.1
viene ritirata. La versione 2.7.1 contiene questi commit.
Correzioni di bug
- Risolti problemi di navigazione con la composizione in cui, utilizzando un
Scaffold
, era possibile ricevere un errore per il tentativo di accesso a unLifecycle.State.DESTROYED
ViewModel
. (I1dc11, b/268422136)
Versione 2.7.0
Versione 2.7.0
9 agosto 2023
androidx.navigation:navigation-*:2.7.0
viene ritirata. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
Animazioni di Accompanist
Ora che AnimatedContent
è stabile, abbiamo potuto spostare il codice da Animazione di navigazione di accompagnamento di nuovo in Navigation Compose.
Ciò significa che tutto il supporto per l'impostazione di transizioni personalizzate esistente in AnimatedNavHost
è supportato direttamente in NavHost
.
Non verranno apportate ulteriori modifiche all'animazione di navigazione di Accompanist e verrà ritirata a breve, insieme alle indicazioni su come eseguire la migrazione di nuovo a Navigation Compose. Tuttavia, sarà l'inverso della guida alla migrazione e non saranno necessarie altre modifiche all'API se utilizzi già l'ultima versione alpha di Accompanist (0.31.2-alpha
). (b/197140101)
Correzioni di bug
- NavHost in Navigation Compose ora intercetta correttamente le chiamate di sistema anche dopo che l'attività è stata INTERROTTA e RIPRESA. (Icb6de, b/279118447)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Compose
1.5.0
anziché da1.1.0
.
Versione 2.7.0-rc01
26 luglio 2023
androidx.navigation:navigation-*:2.7.0-rc01
viene ritirata. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui le espressioni lambda
EnterTransition
eExitTransition
create nell'ambito diNavHost
potrebbero rimanere in memoria anche dopo la rimozione diNavHost
dalla composizione. (I893d0)
Problemi noti
- Esiste un problema con Navigation 2.6.x che, durante la navigazione con popUpTo, può causare un
IllegalArgumentException
. È possibile che questa eccezione possa essere evitata ristrutturando il grafico, in modo simile al consiglio suggerito qui. (b/287133013)
Versione 2.7.0-beta02
28 giugno 2023
androidx.navigation:navigation-*:2.7.0-beta02
viene ritirata. La versione 2.7.0-beta02 contiene questi commit.
Correzioni di bug
- Navigation Compose ora ha l'ordine Z corretto per le transizioni personalizzate che utilizzano la navigazione con l'opzione
popUpTo
.(/Ib1c3a, b/285153947)
Versione 2.7.0-beta01
7 giugno 2023
androidx.navigation:navigation-*:2.7.0-beta01
viene ritirata. La versione 2.7.0-beta01 contiene questi commit.
Correzioni di bug
NavHost
in Navigazione Scrivi ora intercetta correttamente le chiamate di sistema anche dopo cheActivity
è statoSTOPPED
eRESUMED
. (Icb6de, b/279118447)
Versione 2.7.0-alpha01
24 maggio 2023
androidx.navigation:navigation-*:2.7.0-alpha01
viene ritirata. La versione 2.7.0-alpha01 contiene questi commit.
Animazioni di Accompanist
Ora che AnimatedContent
è stabile, abbiamo potuto spostare il codice da Animazione di navigazione di accompagnamento di nuovo in Navigation Compose.
Ciò significa che tutto il supporto per l'impostazione di transizioni personalizzate esistente in AnimatedNavHost
è supportato direttamente in NavHost
.
Non verranno apportate ulteriori modifiche all'animazione di navigazione di Accompanist e verrà ritirata a breve, insieme alle indicazioni su come eseguire la migrazione di nuovo a Navigation Compose. Tuttavia, sarà l'inverso della guida alla migrazione e non saranno necessarie altre modifiche all'API se utilizzi già l'ultima versione alpha di Accompanist (0.31.2-alpha
). (b/197140101)
Correzioni di bug
- Da Navigazione
2.6.0-rc02
: è stato risolto un problema relativo alla navigazione nei fragment in cui la navigazione conpopUpTo
e l'eliminazione di un fragment dallo stack precedente senza ricreare la relativa visualizzazione causava l'interruzione del funzionamento del pulsante Indietro del sistema. (Ieb8d4, b/281726455)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Compose
1.5.0-beta01
.
Versione 2.6.0
Versione 2.6.0
7 giugno 2023
androidx.navigation:navigation-*:2.6.0
viene ritirata. La versione 2.6.0 contiene questi commit.
Modifiche importanti alla navigazione dalla versione 2.5.0
NavBackStackEntry
'sarguments
earguments
passati a unOnDestinationChangedListener
ora sono solo una copia degli argomenti immutabili creati quando hai raggiunto la destinazione. Ciò significa che le modifiche apportate a questi bundle non verranno applicate agli accessi successivi aarguments
o ad altre istanze diOnDestinationChangedListener
.NavDeepLink
ora supporta i valori predefiniti per gli array, il che consente il supporto di parametri di query ripetuti che verranno mappati al tipo di array dell'argomento.NavType
ora include anche un metodo predefinito che può essere sottoposto a override per combinare due valori analizzati.- Ora le sottoclassi personalizzate di
NavType
possono eseguire l'override diserializeAsValue
per serializzare un valore in una stringa, consentendo la serializzazione e la deserializzazione (tramiteparseValue
) di essere completamente incapsulate nella classeNavType
.StringType
ora esegue l'override di questo metodo per chiamareUri.encode
sulString
specificato.
Modifiche importanti a Navigation Compose dalla versione 2.5.0
- Quando visualizzi l'anteprima di un elemento componibile con
NavHost
, ora viene mostratostartDestination
di NavGraph per impostazione predefinita. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
eNavController.clearBackStack(route)
ora supportano tutti i percorsi con argomenti compilati parzialmente o completamente. Tieni presente che gli argomenti devono corrispondere esattamente a quelli della voce.- Il tentativo di creare un
NavDeepLink
vuoto utilizzando il DSL KotlinnavDeepLink
ora genera un avviso lint che indica che un link diretto deve avere un URI, un'azione e/o un tipo MIME per essere valido.
Modifiche importanti alla navigazione con i fragment dalla versione 2.5.0
NavHostFragment
non intercetta più il pulsante Indietro del sistema. In questo modo, l'FragmentManager
sottostante può gestire il pulsante Indietro del sistema. Ciò consente a Fragment1.7.0-alpha01
e versioni successive di fornire un'animazione di indietro predittivo in-app sui dispositivi Android U.- Quando utilizzi Navigation con i fragment, il tentativo di eseguire manualmente un
FragmentTransaction
che aggiunge un fragment allo stack di attività diFragmentManager
ora genererà unIllegalArgumentException
. Devi sempre aggiungere i frammenti tramite l'APInavigate()
. - Quando utilizzi la stringa esatta
${applicationId}
come segnaposto negli attributiapp:data
eapp:dataPattern
nell'elemento activity di un file XML di navigazione, il segnaposto viene compilato automaticamente conpackageName
del contesto al momento dell'inflazione. FragmentNavigator
ora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries
. Ciò significa che l'NavBackStackEntry
Lifecycle
ora attenderà il completamento degli effetti speciali di entrata e uscita del frammento prima di spostare ilLifecycle.State
finale.DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries
. Ciò significa cheNavBackStackEntry
Lifecycle
ora attenderà cheDialogFragment
Lifecycle
passi aDESTROYED
prima di passare aDESTROYED
.NavHostFragment
ora ti consente di recuperareNavController
non appenaNavHostFragment
viene allegato aFragmentManager
, anziché solo dopoonCreate()
.- Il supporto della navigazione per i moduli delle funzionalità dinamiche ora dipende dalla libreria granulare Play Feature Delivery.
- Ora Navigation Safe Args dipende dal plug-in Android per Gradle versione 7.3.0. Ciò significa che ora è compatibile solo con le versioni 7.3.0 e successive.
Modifiche importanti a NavigationUI dalla versione 2.5.0
- Quando passi l'ID di un grafico di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione iniziale del grafico di navigazione come destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafico come destinazione di primo livello. Il comportamento di trasmissione dell'ID di una singola destinazione non è cambiato. Questa stessa funzionalità è disponibile per il tuo codice tramite la nuova funzioneisTopLevelDestination
suAppBarConfiguration
. - Le integrazioni
setupWithNavController
inNavigationUI
per l'utilizzo della barra delle app superiore ora analizzano i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei relativi valori stringa anziché restituire l'intero risorsa generato automaticamente. NavigationUI
ora fornisce log quando non riesce a navigare tramite unMenuItem
selezionato.
Versione 2.6.0-rc02
24 maggio 2023
androidx.navigation:navigation-*:2.6.0-rc02
viene ritirata. La versione 2.6.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un problema relativo alla navigazione nei frammenti per cui la navigazione con
popUpTo
e l'estrazione di un frammento dallo stack precedente senza ricreare la relativa visualizzazione causava l'interruzione del funzionamento del pulsante Indietro del sistema. (Ieb8d4, b/281726455)
Versione 2.6.0-rc01
10 maggio 2023
androidx.navigation:navigation-*:2.6.0-rc01
viene ritirata. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema in Navigation con i fragment in cui la rimozione di un fragment tramite navigate con
popUpTo
nel callback del ciclo di vitaonResume()
causava unIllegalStateException
. (I21884, b/279644470)
Versione 2.6.0-beta01
19 aprile 2023
androidx.navigation:navigation-*:2.6.0-beta01
viene ritirata. La versione 2.6.0-beta01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora fornisce un'implementazione personalizzata ditoString
. (Iff00b)
Correzioni di bug
- Quando utilizzi Navigation con i fragment, il tentativo di eseguire manualmente un
FragmentTransaction
che aggiunge un fragment allo stack di attività diFragmentManager
ora genererà unIllegalArgumentException
. Devi sempre aggiungere i frammenti tramite l'APInavigate()
. (I6d38e) - Quando nello stesso frame è presente un
navigate
che aggiunge una voce e unpopBackStack
che la rimuove, la prima voce risultante nello stack precedente tornerà sempre aRESUMED
Lifecycle.State
. (Id8067, b/276495952)
Versione 2.6.0-alpha09
5 aprile 2023
androidx.navigation:navigation-*:2.6.0-alpha09
viene ritirata. La versione 2.6.0-alpha09 contiene questi commit.
Correzioni di bug
- Sono stati corretti i controlli per il percorso non valido in modo che, se un
NavDestination
contieneNavArgument
non annullabili, il percorso di questa destinazione deve contenere segnaposto per gli argomenti con lo stesso nome diNavArgument
non annullabili. (Ic62bf, b/274697949) - Le navigazioni di deep link basate su
Action/MimeType
ora non riusciranno se l'operazione di navigazione non include unNavArgument
non nullabile richiesto daNavDestination
a cui corrispondeAction/MimeType
. (Ibfa17, b/271777424) - Quando
NavController
imposta un grafico con lo stesso percorso e le stesse destinazioni del grafico precedente, ora sostituisce correttamente i nodi del grafico corrente e le destinazioni dello stack precedente con nuove istanze. Questo problema viene risolto quando si utilizzaonLaunchSingleTop
senza salvare lo stato in Navigation Compose. Viene inoltre corretto un errore per cui la navigazione verso le destinazioni associate al grafico radice crea uno stack di cronologia errato. (I5bc58, b/275258161, b/275407804)
Versione 2.6.0-alpha08
22 marzo 2023
androidx.navigation:navigation-*:2.6.0-alpha08
viene ritirata. La versione 2.6.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHostFragment
ora ti consente di recuperareNavController
non appenaNavHostFragment
viene allegato aFragmentManager
, anziché solo dopoonCreate()
. (Ic6382, b/220186282)
Correzioni di bug
- È stato corretto un
NullPointerException
quando si estrae un grafico nidificato che include un argomento non annullabile. (6b3581, b/249988437) - Quando utilizzi il pulsante Indietro del sistema dopo aver eseguito una navigazione con
popUpTo
, lo stato diNavController
viene visualizzato nella voce corretta. (I3a8ec, b/270447657) FragmentNavigator
ora visualizzerà correttamente le voci quando lo stack precedente viene estratto tramite il pulsante Indietro del sistema opopBackStack()
e se la transazione utilizza o meno effetti per il frammento. (I81bdf)- L'aggiunta di frammenti a
FragmentNavigator
diFragmentManager
senza utilizzare la navigazione non causerà più un arresto anomalo. (b17204, b/274167493)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Ciclo di vita
2.6.1
. (586fe7) - La navigazione ora dipende da SavedState
1.2.1
. (078e4e) - La navigazione ora dipende da ProfileInstaller
1.3.0
. (512f0c)
Versione 2.6.0-alpha07
8 marzo 2023
androidx.navigation:navigation-*:2.6.0-alpha07
viene ritirata. La versione 2.6.0-alpha07 contiene questi commit.
Correzioni di bug
- Le varianti delle API
getBackStackEntry
,popBackStack
eclearBackStack
che accettano itinerari ora accettano pattern di itinerari con argomenti e parametri di query annullabili (I22294, b/269302500) - È stato risolto un problema per cui la chiamata di
clearBackStack()
daNavController
non cancellava lo stato salvato nel gestore dei fragment associato allo stack precedente cancellato. (Ic1cce, b/271190202) - È stata corretta una regressione nella versione 2.6.0-alpha06 che causava l'evidenziazione del
MenuItem
errato inBottomNavigationView
quando si utilizzava il pulsante Indietro del sistema tra le schede. (I634f6, b/270447657) - È stata corretta la regressione nella versione 2.6.0-alpha06 che impediva lo spostamento degli
NavBackStackEntry
nello stato RESUMED quando venivano utilizzati gliAnimation
. (Ib3589, b/269646882)
Versione 2.6.0-alpha06
22 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha06
viene ritirata. La versione 2.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Quando visualizzi l'anteprima di un elemento componibile con
NavHost
, ora viene mostratostartDestination
di NavGraph per impostazione predefinita. (I2b89f)
Modifiche alle API
- Tutti gli overload di
NavController
navigate
ora sono annotati con@MainThread
per garantire che vengano chiamati sul thread principale. (I2c0b0, b/263427111)
Correzioni di bug
- È stato corretto un arresto anomalo che si verificava durante il tentativo di navigazione durante l'utilizzo della navigazione dinamica dei fragmenti. (I3ee29, b/268360479)
- È stato corretto un bug a causa del quale il passaggio a un altro frammento tramite il pulsante Indietro del sistema non aggiorna la barra inferiore con l'elemento selezionato corretto (If559f, b/269044426)
Problemi noti
- Quando si utilizza Navigation con i fragment, il ciclo di vita di
NavBackStackEntry
non raggiungeRESUMED
quando si utilizzano le APIAnimation
. (b/269646882) - Quando utilizzi Navigation con i frammenti e navighi con
BottomNavigation
, se tenti di ripristinare uno stack precedente con più voci,BottomMenuItem
non viene aggiornato correttamente. (b/270447657) - Quando utilizzi Navigation with Fragments, dopo il ripristino dello stato
NavBackStackEntry
Lifecycle
non vieneDESTROYED
quando il relativo frammento èDESTROYED
. (b/270610768)
Versione 2.6.0-alpha05
8 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha05
viene ritirata. La versione 2.6.0-alpha05 contiene questi commit.
Nuove funzionalità
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
eNavController.clearBackStack(route)
ora supportano tutti i percorsi con argomenti compilati parzialmente o completamente. Tieni presente che gli argomenti devono corrispondere esattamente a quelli della voce. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
ora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries
. Ciò significa che l'NavBackStackEntry
Lifecycle
ora attenderà il completamento degli effetti speciali di entrata e uscita del frammento prima di spostare ilLifecycle.State
finale. (I3cb19, b/238686802)DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries
. Ciò significa cheNavBackStackEntry
Lifecycle
ora attenderà cheDialogFragment
Lifecycle
passi aDESTROYED
prima di passare aDESTROYED
. (I53ee5, b/261213893)
Modifiche alle API
NavigatorState
ora fornisce l'APIprepareForTransition
per consentire agliNavigator
di spostare gliNavBackStackEntries
negliLifecycle.State
intermedi. (I42c21, b/238686802)- Ora puoi accedere allo stack precedente associato a un
NavGraphNavigator
o a unComposeNavigator
tramite una proprietàbackstack
. OraComposeNavigator
espone anche il callbackonTransitionComplete()
per contrassegnare unNavBackStackEntry
che ha eseguito un'operazione di navigazione opopBackStack
come completata. (I02062, I718db, b/257519195)
Correzioni di bug
- Lo stato del navigatore ora non esegue alcuna operazione quando vengono utilizzate le API
push/popWithTransition
e la voce è già in fase di gestione. (Iadbfa, b/261213893) - Quando utilizzi
launchSingleTop
con unNavGraph
nidificato, tutte le destinazioni a partire dalla destinazione originale fino al relativostartDestination
verranno aggiunte correttamente solo alla parte superiore dello stack indietro. (Id4bea, b/253256629) - La navigazione ora sostituirà correttamente l'istanza
DialogFragment
quando si naviga verso la stessa destinazione con il flaglaunchSingleTop
impostato su true. (I45b5a, b/149572817) - Navigation SafeArgs non causerà più un errore di compilazione quando si utilizzano argomenti di esattamente 19 caratteri. (Id60bc, b/257110095)
Versione 2.6.0-alpha04
9 novembre 2022
androidx.navigation:navigation-*:2.6.0-alpha04
viene ritirata. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- Ora le sottoclassi personalizzate di
NavType
possono eseguire l'override diserializeAsValue
per serializzare un valore in una stringa, consentendo la serializzazione e la deserializzazione (tramiteparseValue
) di essere completamente incapsulate nella classeNavType
.StringType
ora esegue l'override di questo metodo per chiamareUri.encode
sulString
specificato. (Ie5213, b/247637434) NavigationUI
ora fornisce log quando non riesce a navigare tramite unMenuItem
selezionato. (I2af5a, b/247730357)
Correzioni di bug
- I link diretti di navigazione ora vengono analizzati in modo differito anziché durante l'inizializzazione del grafico, il che potrebbe migliorare il rendimento dell'app all'avvio. (Iab0ab)
- È stato corretto un arresto anomalo causato dalla navigazione verso l'alto dopo il collegamento diretto a una destinazione con argomenti predefiniti nulli. (I51c24, b/243183636)
Aggiornamento delle dipendenze
- Il supporto della navigazione per i moduli delle funzionalità dinamiche ora dipende dalla libreria granulare Play Feature Delivery. (Ib4ddc)
- Ora Navigation Safe Args dipende dal plug-in Android per Gradle versione 7.3.0. Ciò significa che ora è compatibile solo con le versioni 7.3.0 e successive. (I47e49)
Versione 2.6.0-alpha03
24 ottobre 2022
androidx.navigation:navigation-*:2.6.0-alpha03
viene ritirata. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.5.3
:NavHost
non causerà più unNoSuchElementException
quando non è disponibile alcuna destinazione per la composizione diCrossfade
. Ora la composizione verrà semplicemente ignorata. (Ieb46e, b/253299416) - Da Navigazione
2.5.3
: è stato risolto un problema per cui lo stato di composizione salvato (ad es. gli utilizzi dirememberSaveable
) non veniva dimenticato e rimosso quando una destinazione veniva estratta dallo stack precedente. (I64949)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Fragment
1.5.4
. (Icd424)
Versione 2.6.0-alpha02
5 ottobre 2022
androidx.navigation:navigation-*:2.6.0-alpha02
viene ritirata. La versione 2.6.0-alpha02 contiene questi commit.
Modifiche al comportamento
- Quando passi l'ID di un grafico di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione iniziale del grafico di navigazione come destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafico come destinazione di primo livello. Il comportamento di trasmissione dell'ID di una singola destinazione non è cambiato. Questa stessa funzionalità è disponibile per il tuo codice tramite la nuova funzioneisTopLevelDestination
suAppBarConfiguration
. (Ie936e, b/238496771)
Correzioni di bug
- Il componente
navigation:navigation-fragment
ora dipende dalla versione1.5.2
di Fragment. (I00ba4) - La voce di menu selezionata non verrà più aggiornata quando si passa a una destinazione
FloatingWindow
, ad esempio una finestra di dialogo. (I4cde8, b/240308330)
Versione 2.6.0-alpha01
7 settembre 2022
androidx.navigation:navigation-*:2.6.0-alpha01
viene ritirata. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Le integrazioni
setupWithNavController
inNavigationUI
per l'utilizzo della barra delle app superiore ora analizzano i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei relativi valori stringa anziché restituire l'intero risorsa generato automaticamente. (I5f803, b/167959935) NavDeepLink
ora supporta i valori predefiniti per gli array, il che consente il supporto di parametri di query ripetuti che verranno mappati al tipo di array dell'argomento.NavType
ora include anche un metodo predefinito che può essere sottoposto a override per combinare due valori analizzati. (Id68c3, b/209977108)- Quando utilizzi la stringa esatta
${applicationId}
come segnaposto negli attributiapp:data
eapp:dataPattern
nell'elemento activity di un file XML di navigazione, il segnaposto viene compilato automaticamente conpackageName
del contesto al momento dell'inflazione. (Iaabde, b/234223561) - Il tentativo di creare un
NavDeepLink
vuoto utilizzando il DSL KotlinnavDeepLink
ora genera un avviso lint che indica che un link diretto deve avere un URI, un'azione e/o un tipo MIME per essere valido. (I08d2f, b/154038883)
Modifiche alle API
- Aggiunta una nuova funzione di estensione
NavDestination
per analizzare le etichette dinamiche con argomenti nel formatoandroid:label="{arg}"
in String. Supporta gli argomentiReferenceType
analizzando i valoriR.string
nei relativi valori String. (I07d89, b/236269380)
Modifiche al comportamento
arguments
di NavBackStackEntry earguments
passato a unOnDestinationChangedListener
ora sono solo una copia degli argomenti immutabili creati quando hai raggiunto la destinazione. Ciò significa che le modifiche apportate a questi bundle non verranno applicate agli accessi successivi aarguments
o ad altre istanze diOnDestinationChangedListener
. (I676f5)
Correzioni di bug
- Da Navigazione
2.5.2
: la navigazione dinamica ora tenta correttamente di installare le destinazioni di attività da altri moduli prima di accedervi. (Ia2c16, b/240292838) - Da Navigazione
2.5.2
: la navigazione ora sostituirà correttamente l'istanza Fragment quando si passa alla stessa destinazione e si imposta il flaglaunchSingleTop
su true. (I5a2f1, b/237374580) - Da Navigazione
2.5.2
: è stato corretto unIllegalStateException
causato dalla navigazione in un grafico a doppia nidificazione che condivide un elemento principale con una nuova destinazione iniziale visualizzata. (I9f7cb, b/243778589)
Versione 2.5
Versione 2.5.3
24 ottobre 2022
androidx.navigation:navigation-*:2.5.3
viene ritirata. La versione 2.5.3 contiene questi commit.
Correzioni di bug
NavHost
non causerà più unNoSuchElementException
quando non è disponibile alcuna destinazione per la composizione diCrossfade
. Ora la composizione verrà semplicemente ignorata. (Ieb46e, b/253299416)- Risolto un problema per cui lo stato di composizione salvato (ad es. gli utilizzi di
rememberSaveable
) non veniva dimenticato e rimosso quando una destinazione veniva estratta dallo stack precedente. (I64949)
Versione 2.5.2
7 settembre 2022
androidx.navigation:navigation-*:2.5.2
viene ritirata. La versione 2.5.2 contiene questi commit.
Correzioni di bug
- La navigazione dinamica ora tenta correttamente di installare le destinazioni Attività da altri moduli prima di accedervi. (Ia2c16, b/240292838)
- Ora la navigazione sostituirà correttamente l'istanza Fragment quando si passa alla stessa destinazione e si imposta il flag
launchSingleTop
su true. (I5a2f1, b/237374580) - Risolto il problema
IllegalStateException
causato dalla navigazione in un grafico con doppio livello di nidificazione che condivide un elemento principale con una nuova destinazione iniziale visualizzata. (I9f7cb, b/243778589)
Aggiornamento delle dipendenze
- La navigazione
2.5.2
ora dipende da Fragment1.5.2
. (aosp/2178734)
Versione 2.5.1
27 luglio 2022
androidx.navigation:navigation-*:2.5.1
viene ritirata. La versione 2.5.1 contiene questi commit.
Correzioni di bug
Navigation Safe Args
non causerà più avvisi di ritiro nelle classi generate quando si utilizzano tipi di argomenti personalizzati salvati in unBundle
. (Id86ed, b/237725966)
Aggiornamenti delle dipendenze
- La libreria Navigation ora dipende da Lifecycle
2.5.1
. (Ib4451) - La libreria di navigazione ora dipende da Activity
1.5.1
. (I3efe8) - La libreria Navigation ora dipende da Fragment
1.5.1
. (I56177)
Versione 2.5.0
29 giugno 2022
androidx.navigation:navigation-*:2.5.0
viene ritirata. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
- Integrazione di CreationExtras:
Navigation
ora può fornire unViewModelProvider.Factory
stateless tramite Lifecycle2.5.0
diCreationExtras
.
SafeArgs di Navigation
Navigation Safe Args
ha eseguito l'upgrade della dipendenzaAndroid Gradle Plugin
per fare affidamento su7.0.4
, eliminando la compatibilità per le versioni di AGP precedenti a7.0
.- È stato aggiunto il supporto per l'attributo build.gradle dello spazio dei nomi da utilizzare al posto di applicationId.
Altre modifiche
- L'API
visibleEntries
non è più sperimentale e fornisce una funzione per recuperare tutte le voci la cui destinazione è attualmente visibile in base aNavController
.
Versione 2.5.0-rc02
15 giugno 2022
androidx.navigation:navigation-*:2.5.0-rc02
viene ritirata. La versione 2.5.0-rc02 contiene questi commit.
Correzioni di bug
- È stato corretto un arresto anomalo causato dal passaggio rapido tra le destinazioni in basso quando si utilizza Navigation Compose
NavHost
. (I3979a, b/234054916) Navigation SafeArgs
non andrà più in crash quando si utilizza unapplicationIdSuffix
e uno spazio dei nomi senzaapplicationId
o quandoapplicationId
e lo spazio dei nomi sono diversi. (I754b1, b/233119646)NavArgument
ora ha una funzionetoString()
personalizzata per mostrare i valori interni dell'argomento. (I900a8)
Versione 2.5.0-rc01
11 maggio 2022
androidx.navigation:navigation-*:2.5.0-rc01
viene ritirata. La versione 2.5.0-rc01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola di lint per avvisare in caso di inserimento di elementi
<deeplink>
all'interno di elementi<activity>
nel filenavigation.xml
.(Ic15a5, b/178403185)
Correzioni di bug
- Gli ambiti componibili in
NavHost
eDialogHost
ora vengono eliminati nell'ordine previsto, ovvero i componibili interni vengono eliminati prima di quelli esterni. (I157e6) - Navigation SafeArgs ora utilizza
PathSensitivity.RELATIVE
inArgumentsGenerationTask
per consentire la ricollocazione della cache. Ciò significa che la voce della cache può ora essere riutilizzata da una build CI a una build locale. (I5f67c, b/173420454) - La regola di lint
UnrememberedGetBackStackEntryDetector
è stata aggiornata per garantire che la chiamataremember
che circonda la chiamata agetBackStackEntry()
passi anche in un oggettoNavBackStackEntry
come chiave.(Ib7081, b/227382831)
Versione 2.5.0-beta01
20 aprile 2022
androidx.navigation:navigation-*:2.5.0-beta01
viene ritirata. La versione 2.5.0-beta01 contiene questi commit.
Correzioni di bug
DialogNavigator
ora utilizzapopWithTransition
quando esegue una chiamatadismiss()
. Questo problema risolve una condizione di competizione quando si utilizza unViewModel
all'interno della destinazionedialog
che causava unIllegalStateException
quando si chiudeva la finestra di dialogo utilizzando il pulsante Indietro del sistema o toccando al di fuori della finestra di dialogo per uscire. (Id7376, b/226552301)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal ciclo di vita
2.5.0-beta01
, correggendo unIllegalStateException
quando si annida unNavHost
all'interno di un altroNavHost
in una scheda di navigazione inferiore non principale quando si utilizzano più back stack.
Versione 2.5.0-alpha04
6 aprile 2022
androidx.navigation:navigation-*:2.5.0-alpha04
viene ritirata. La versione 2.5.0-alpha04 contiene questi commit.
Modifiche alle API
visibleEntries
non è più sperimentale. (I4829f, b/225394514)
Correzioni di bug
- NavHost ora dipende da
visibleEntries
diNavController
per determinare quali voci comporre. Ciò significa che quando si utilizza NavHost nidificato, l'NavHost
interno ora dovrebbe animarsi correttamente. (I4ba2b, b/225394514) visibleEntries
StateFlow
fornito daNavController
ora si basa sullo stato del ciclo di vita massimo della voce anziché sullo stato del ciclo di vita corrente. Ciò significa che anche se il ciclo di vita dell'host dinavController
scende al di sotto di STARTED, l'elenco delle voci visibili rimane invariato. (I9e2a8, b/225394514)SavedStateViewFactory
ora supporta l'utilizzo diCreationExtras
anche se è stato inizializzato con unSavedStateRegistryOwner
. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583)NavDeepLink
ora può analizzare gli URI con un singolo parametro di query senza valore. (I0efe8, b/148905489)- Le stringhe vuote ora sono considerate argomenti validi nei link diretti. (I70a0d, b/217399862)
Navigation Safe Args
non andrà più in crash quando si utilizzano spazi dei nomi e non è presente alcunAndroidManifest.xml
. (I17ccf, b/227229815)
Versione 2.5.0-alpha03
23 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha03
viene ritirata. La versione 2.5.0-alpha03 contiene questi commit.
Modifiche alle API
- Ora puoi passare
CreationExtras
aby navGraphViewModels
per creare unViewModel
. (I29217, b/217618359)
Correzioni di bug
NavDeepLinks
ora supporta correttamente i caratteri di nuova riga codificati incorporati negli URI di route/link diretti. (I513d1, b/217815060)CreationExtras
ora funzionerà correttamente se utilizzato conNavBackStackEntries
per creare ViewModels. (I69161, b/217617710)- Navigation Safe Args ora supporta l'utilizzo dello spazio dei nomi definito
in
build.gradle
al posto del pacchetto in AndroidManifest. (I659ef, b/217414933)
Versione 2.5.0-alpha02
9 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha02
viene ritirata. La versione 2.5.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.4.1
: oraNavHostFragment
imposta correttamenteOnBackPressedDispatcher
quando si utilizza viewbinding con grafici nidificati. (Ifbb51, b/214577959) - Da Navigazione
2.4.1
: quando il deep linking avviene tramite piùNavGraph
nidificati, lo stack indietro ora include correttamente le destinazioni di partenza intermedie. (I504c0, b/214383060)
Versione 2.5.0-alpha01
26 gennaio 2022
androidx.navigation:navigation-*:2.5.0-alpha01
viene ritirata. La versione 2.5.0-alpha01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora si integra con ViewModel CreationExtras, introdotto nell'ambito di Lifecycle2.5.0-alpha01
. (Ib9fe2, b/207012490)
Correzioni di bug
- Risolto un problema per cui l'accesso a un
ViewModel
creato tramiteby navGraphViewModels()
daonCreate()
di un fragment non andava a buon fine e veniva visualizzato unIllegalStateException
. (I8a14d) NavDeepLink
s non decodificherà più inutilmente gli argomenti due volte, il che significa che ora gli argomenti corretti vengono passati alla destinazione finale. (I31b0a, b/210711399)
Safe Args
- Safe Args ora dipende dal plug-in Android per Gradle versione 7.0.4. Ciò significa che Navigation Safe Args non sarà più compatibile con le versioni di Android Studio precedenti alla 7.0, ma ora è compatibile con il plug-in Android per Gradle 7.1.0 e versioni successive. (I41c88, b/213086135, b/207670704)
Versione 2.4.2
Versione 2.4.2
6 aprile 2022
androidx.navigation:navigation-*:2.4.2
viene ritirata. La versione 2.4.2 contiene questi commit.
Correzioni di bug
- Portato da Navigazione
2.5.0-alpha03
:NavDeepLinks
ora supporta correttamente i caratteri di nuova riga codificati incorporati negli URI di route/link diretti. (I513d1, b/217815060) - Portato da Navigation
2.5.0-alpha03
: Navigation SafeArgs ora supporta l'utilizzo dello spazio dei nomi definito inbuild.gradle
al posto del pacchetto in AndroidManifest. (I659ef, b/217414933) - Portato da Navigazione
2.5.0-alpha04
:Navigation Safe Args
non si arresterà più in modo anomalo quando si utilizzano gli spazi dei nomi e non è presente alcunAndroidManifest.xml
. (I17ccf, b/227229815) - Portato da Navigazione
2.5.0-alpha04
: le stringhe vuote ora sono considerate argomenti validi nei link diretti. (I70a0d, b/217399862)
Versione 2.4.1
Versione 2.4.1
9 febbraio 2022
androidx.navigation:navigation-*:2.4.1
viene ritirata. La versione 2.4.1 contiene questi commit.
Correzioni di bug
- Ora
NavHostFragment
imposterà correttamenteOnBackPressedDispatcher
quando si utilizza viewbinding con grafici nidificati. (Ifbb51, b/214577959) - Quando il deep linking avviene tramite più
NavGraph
nidificati, lo stack precedente ora include correttamente le destinazioni di partenza intermedie. (I504c0, b/214383060) - Portato da Navigation
2.5.0-alpha01
: è stato risolto un problema per cui l'accesso a un ViewModel creato tramiteby navGraphViewModels()
dalonCreate()
di un Fragment non riusciva e veniva visualizzato un erroreIllegalStateException
. (I8a14d) - Portato da Navigazione
2.5.0-alpha01
:NavDeepLink
non decodifica più inutilmente gli argomenti due volte, il che significa che gli argomenti decodificati correttamente vengono ora passati alla destinazione finale. (I31b0a, b/210711399) - Portato da Navigation
2.5.0-alpha01
: Safe Args ora dipende dal plug-in Android per Gradle versione 7.0.4. Ciò significa che Navigation Safe Args non sarà più compatibile con le versioni di Android Studio precedenti alla 7.0, ma ora è compatibile con il plug-in Android per Gradle 7.1.0 e versioni successive. (I41c88, b/213086135, b/207670704)
Versione 2.4.0
Versione 2.4.0
26 gennaio 2022
androidx.navigation:navigation-*:2.4.0
viene ritirata. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
- Tutti gli artefatti di navigazione sono stati riscritti in Kotlin. Ciò ha migliorato l'annullabilità delle classi che utilizzano i generici (come le sottoclassi
NavType
). Tutte le funzioni di estensione Kotlin che facevano parte degli artefatti-ktx
sono state spostate nei rispettivi artefatti principali. Gli artefatti-ktx
continueranno a essere pubblicati, ma sono completamente vuoti. - L'artefatto
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza unSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli, che utilizza unNavHostFragment
come implementazione, come mostrato nella nostra implementazione di esempio. - Il metodo
currentBackStackEntryAsFlow()
suNavController
fornisce unFlow
che viene emesso ogni volta che cambia l'NavBackStackEntry
corrente. Questo flusso può essere utilizzato in alternativa alla gestione manuale di unOnDestinationChangedListener
. - NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntry
visibili comeStateFlow
tramite la proprietà sperimentalevisibleEntries
. - Ora è possibile estendere la classe
NavType
per creare NavType personalizzati. I tipi personalizzati sono supportati solo quando crei il grafico di navigazione in modo programmatico, ad esempio tramite Navigation Graph Kotlin DSL. La navigazione ora fornisce le API
findStartDestination()
egetHierarchy()
che possono essere utilizzate per implementare NavigationUI personalizzata.findStartDestination()
è una funzione di estensione suNavGraph
che individua la destinazione di partenza effettiva che verrà visualizzata quando navighi nel grafico, anche sestartDestination
è a sua volta unNavGraph
nidificato.getHierarchy()
è una funzione diNavDestination
che può essere utilizzata per verificare se una determinata destinazione si trova all'interno della gerarchia di un'altra.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
I metodi
NavigationUI
che accettavano unBottomNavigationView
sono stati aggiornati per accettare invece la relativa superclasse introdotta in Material1.4.0
,NavigationBarView
. In questo modo, questi metodi possono essere utilizzati conNavigationRailView
.Quando aumenti le dimensioni di un elemento
<action>
tramite XML, gli attributi di animazione possono utilizzare gli attributi estratti dal tema utilizzando la sintassiapp:enterAnim="?attr/transitionEnter"
.Safe Args ora genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Itinerari di navigazione e Kotlin DSL
Le versioni precedenti di Navigazione si basavano sul fatto che ogni destinazione avesse un ID intero costante che la identificasse in modo univoco dalle destinazioni correlate e consentisse di navigate()
a quella destinazione direttamente o tramite un'azione. Sebbene questo sistema continui a essere valido e utile, in particolare nei casi in cui definisci il grafico di navigazione in XML e puoi utilizzare costanti R.id
generate automaticamente o Safe Args (che utilizza queste costanti per generare codice in fase di compilazione), questo sistema di numeri interi univoci non acquisisce il significato semantico e l'espressività necessari per supportare grafici completamente dinamici creati in modo programmatico in fase di runtime tramite il DSL Kotlin di Navigation.
Questa release introduce una nuova opzione per identificare in modo univoco una destinazione in un grafico di navigazione in base al suo percorso. Una route è un String
che definisce il percorso univoco verso una destinazione. Tutti i metodi Kotlin DSL che accettavano un ID destinazione sono ora obsoleti e sostituiti da un'API equivalente che accetta una route.
Ogni percorso deve essere trattato come la parte "path" di un Uri
che definisce la destinazione, ad esempio: home
, profile/{userId}
, profile/{userId}/friends
e così via. Quando l'identità di una destinazione è associata a un contenuto specifico, questi argomenti dinamici devono far parte della route, seguendo le stesse regole dei link diretti impliciti.
Tutte le API NavController
che prima accettavano solo un ID ora hanno un overload che accetta un percorso String
. Sono inclusi navigate()
, popBackStack()
, popUpTo()
e getBackStackEntry()
.
Ciò ha avuto alcune implicazioni per le API:
- La proprietà Kotlin
popUpTo
in Kotlin DSL è stata ritirata a favore dipopUpToId
. - L'API
getStartDestination()
è stata ritirata a favore digetStartDestinationId()
.
A differenza della navigazione per ID, la navigazione per percorso segue le stesse regole dei link diretti impliciti, in quanto puoi navigare direttamente verso qualsiasi destinazione in qualsiasi grafico nidificato, assicurandoti che questi percorsi siano utilizzabili in progetti multimodulo senza aggiungere esplicitamente un link diretto visibile esternamente a ogni destinazione.
Composizione della navigazione
L'artefatto navigation-compose
fornisce l'integrazione tra il componente Navigation e Jetpack Compose. Utilizza le funzioni @Composable
come destinazioni nella tua applicazione.
Questa release fornisce:
- Un composable
NavHost
che ti consente di costruire il grafico di navigazione tramite un DSL Kotlin, utilizzando le destinazionicomposable
edialog
, oltre al supporto per Navigatori opzionali come quelli di Accompanist Navigation Material. - Supporto obbligatorio per il crossfade tra le destinazioni. L'animazione di navigazione dell'accompagnatore può essere utilizzata per controllare le transizioni di entrata e uscita utilizzando le API Compose sperimentali.
- Definizione dell'ambito di un
Lifecycle
per ogni destinazione componibile. Ogni destinazione raggiunge lo statoRESUMED
solo al termine di tutte le transizioni di ingresso e passa immediatamente aSTARTED
all'inizio di tutte le transizioni di uscita, consentendoti così di evitare tutti i problemi diIllegalStateException
e multitocco attivando una chiamatanavigate
solo quandoLifecycle
èRESUMED
. - Definizione dell'ambito di
ViewModel
(tramite l'APIviewModel()
di Lifecycle ViewModel Compose2.4.0
ohiltViewModel()
di Hilt Navigation Compose1.0.0
a livello di destinazione, fornendo un ambito che sopravvive alle modifiche alla configurazione e alla presenza nello stack precedente (quando i contenuti di Compose vengono eliminati) e un segnale inonCleared()
di ViewModel che indica l'eliminazione permanente e la pulizia dello stato associato aNavBackStackEntry
. - Definizione dell'ambito dello stato
rememberSaveable
a livello di destinazione, garantendo che tutto lo stato componibile venga salvato e ripristinato automaticamente quando torni a una destinazione. - Supporto completo per il salvataggio e il ripristino dello stato di
NavController
e dello stato della destinazione dopo l'interruzione e la ricreazione del processo. - Integrazione automatica con il pulsante Indietro del sistema.
Supporto per il passaggio di argomenti, l'allegato di link diretti alle destinazioni e il ritorno di un risultato alle destinazioni precedenti.
Componi helper specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire l'innalzamento dello stato e il collegamento diNavController
ai componenti componibili al di fuori diNavHost
(ad esempio una barra di navigazione in basso).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Per ulteriori informazioni, consulta la guida alla navigazione di Compose.
Più pile di schede indietro
NavController è responsabile della gestione dello stack indietro delle destinazioni, dell'aggiunta di destinazioni allo stack indietro quando navigate()
e della rimozione quando chiami popBackStack()
o attivi il pulsante Indietro del sistema. La classe NavOptions
esistente e l'integrazione negli elementi <action>
nel file XML del grafico di navigazione sono state ampliate per supportare il salvataggio e il ripristino dello stack indietro.
Nell'ambito di questa modifica, i metodi NavigationUI
di onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
e NavigationView.setupWithNavController()
ora salvano e ripristinano automaticamente lo stato delle destinazioni estratte, consentendo il supporto di più back stack senza modifiche al codice. Quando utilizzi Navigation con i fragment, questo è il modo consigliato per l'integrazione con più back stack.
Le API sottostanti per il salvataggio e il ripristino dello stato sono esposte tramite diverse piattaforme:
Nel file XML di navigazione, l'elemento
<action>
ora può utilizzare gli attributi booleani diapp:popUpToSaveState
eapp:restoreState
per salvare lo stato di tutte le destinazioni visualizzate tramiteapp:popUpTo
e ripristinare lo stato associato alla destinazione passata comeapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
Nel DSL Kotlin, puoi aggiungere la proprietà booleana
restoreState
e la proprietà booleanasaveState
nel builderpopUpTo
:navOptions
// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
Quando crei manualmente un oggetto
NavOptions
tramiteNavOptions.Builder
, puoi utilizzaresetRestoreState()
e il nuovo overload persetPopUpTo()
che accetta un parametrosaveState
aggiuntivo.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);
Le chiamate programmatiche a
popBackStack()
ora possono includere un parametrosaveState
aggiuntivo.Puoi utilizzare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
.
In tutti i casi, NavController
salverà e ripristinerà lo stato di ogni NavBackStackEntry
, incluse le istanze ViewModel
con ambito di destinazione di navigazione. Le API Navigator
sono state aggiornate per consentire a ogni Navigator
di supportare il salvataggio e il ripristino del proprio stato.
Modifiche al funzionamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
aPendingIntent
restituito dacreatePendingIntent()
, garantendo che questa API funzioni come previsto quando ha come target Android 12.- La navigazione ora dipende dal
ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i metodi che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione all'applicazione del thread principale introdotta nel ciclo di vita2.3.0
. - I link diretti ora verificano che tutti gli argomenti obbligatori (quelli senza valori predefiniti) siano presenti in
Uri
. - Gli argomenti analizzati ora considerano i simboli di cancelletto allo stesso modo dei punti interrogativi come separatore tra i segmenti del percorso, impedendo a un argomento di estendersi oltre il simbolo di cancelletto.
NavDeepLink
- Quando genera azioni, il codice Kotlin generato da Safe Args ora inserisce gli argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri.
- Durante la generazione degli argomenti, Safe Args ora inserisce i parametri senza valori predefiniti prima di quelli con valori predefiniti.
- Safe Args ora dipende dal plug-in Android per Gradle 4.2.0. Ciò significa che non dovresti più visualizzare l'avviso relativo all'utilizzo di
applicationIdTextResource
.
Problemi noti
- Correzione in Navigation
2.5.0-alpha01
: l'accesso a unViewModel
creato tramiteby navGraphViewModels()
daonCreate()
di un fragment non riuscirà e verrà visualizzato unIllegalStateException
. (b/213504272) - Correzione in Navigation
2.5.0-alpha01
: Safe Args 2.4.0 non è compatibile con il plug-in Android per Gradle 7.1.0 e versioni successive. (b/213086135) - Il deep linking con più grafici di navigazione nidificati non crea correttamente lo stack completo. (b/214383060)
Versione 2.4.0-rc01
15 dicembre 2021
androidx.navigation:navigation-*:2.4.0-rc01
viene ritirata. La versione 2.4.0-rc01 contiene questi commit.
Modifiche al funzionamento
- Gli argomenti analizzati di
NavDeepLink
ora considerano i simboli di cancelletto allo stesso modo dei punti interrogativi come separatore tra gli argomenti. (I21309, b/180042703)
Correzioni di bug
- I link diretti non ignoreranno più gli argomenti con valori uguali al nome del segnaposto. (If8017, b/207389470)
NavController
non andrà più in crash quando viene estratta una destinazione nidificata utilizzando le transizioni dopo il ripristino diNavController
. (I0f7c9, b/205021623)- Il messaggio di errore quando si utilizza un
startDestination
non valido ora verrà impostato per impostazione predefinita sul percorso della destinazione di partenza, se disponibile. (I86b9d, b/208041894)
Correzioni di bug di Navigation Compose
- È stato corretto un potenziale arresto anomalo causato dal passaggio rapido tra la destinazione di partenza e un'altra destinazione utilizzando le voci del menu di navigazione in basso. (Ic8976, b/208887901)
- Le destinazioni della finestra di dialogo ora vengono ripristinate correttamente nella parte superiore dello schermo dopo le modifiche alla configurazione o l'interruzione del processo. (I4c0dc, b/207386169)
- Risolto un problema per cui il tentativo di recuperare un
ViewModel
dalNavBackStackEntry
di una finestra di dialogo non riusciva quando la finestra di dialogo veniva chiusa. (I6b96d, b/206465487) - È stato risolto un problema che si verificava quando si utilizzavano destinazioni
activity
conNavHost
di Navigation Compose, con conseguenti ricomposizioni infinite. (I8f64c) - È stata corretta una perdita in Navigation Compose, che manteneva un riferimento alla vecchia attività dopo una modifica della configurazione o l'interruzione del processo. (I4efcb, b/204905432)
Correzioni di bug di Safe Args
SafeArgs
non si arresta più in modo anomalo quando tenta di ripristinare array personalizzati serializzabili dopo l'interruzione del processo. (I618e8, b/207315994)- È stato corretto un bug in Safe Args che non consentiva agli array booleani di avere un valore
null
. (I8c396, b/174787525)
Versione 2.4.0-beta02
3 novembre 2021
androidx.navigation:navigation-*:2.4.0-beta02
viene ritirata. La versione 2.4.0-beta02 contiene questi commit.
Modifiche alle API
- La gestione dei link diretti espliciti e impliciti ora aggiunge automaticamente il flag
saveState
quando si passa a un altro grafico, garantendo che il codice comeNavigationUI.setupWithNavController
e il codice che utilizza più back stack funzioni come previsto. (Ic8807)
Modifiche al comportamento
- I pattern di link diretti ora vengono compilati in modo differito in NavDeepLink anziché durante l'inflazione. In questo modo, il tempo di caricamento dei grafici di navigazione che includono link diretti dovrebbe migliorare. (b8d257, b/184149935)
Correzioni di bug
- È stato risolto un problema a causa del quale le voci NavBackStackEntries venivano spostate in
Lifecycle.State.CREATED
dopo il passaggio aLifecycle.State.STARTED
quandoNavHost
viene aggiunto direttamente asetContent()
dell'attività. (Ia5ac1, b/203536683) - È stata corretta una condizione di competizione in cui
la rimozione di una destinazione
DialogFragment
dallo stack precedente prima che la finestra di dialogo venisse effettivamente mostrata non la chiudeva, causando un arresto anomalo quando la finestra di dialogo errata veniva chiusa manualmente dall'utente. (I687e5) - Risolto un problema per cui l'API
onNavDestinationSelected
suNavigationUI
restituivatrue
anche se nonnavigate()
effettivamente a quel grafico di navigazione. Ora utilizza la stessa logica utilizzata internamente dasetupWithNavController
per selezionare solo ilMenuItem
associato alla destinazione corrente utilizzando ilhierarchy
della destinazione. (I2b053)
Versione 2.4.0-beta01
27 ottobre 2021
androidx.navigation:navigation-*:2.4.0-beta01
viene ritirata. La versione 2.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare
by navGraphViewModel
con una route in alternativa all'utilizzo di un ID per supportare meglio l'utilizzo di Navigation Kotlin DSL con i fragment. (I901e3, b/201446416)
Modifiche alle API
- L'API
visibleEntries
è ora sperimentale. (I93f6f)
Correzioni di bug
- I ViewModel non verranno più eliminati quando le transizioni vengono interrotte dalla navigazione avanti e indietro tra le stesse schermate (Id52d8, b/200817333)
- Gli argomenti
NavDeepLink
Nullable non richiedono più un valore predefinito quando si aggiungono link diretti aNavDestination
. (I5aad4, b/201320030) - Le NavBackStackEntries ora con cicli di vita diversi non sono più considerate uguali. Ciò significa che NavHost ricomporrà correttamente tutte le destinazioni quando esegue la navigazione con singleTop e quando seleziona nuovamente le voci del menu in basso. (I1b351, b/196997433)
- È stato risolto un problema con
AbstractListDetailFragment
che causava la gestione o l'ignoranza errata degli attributilayout_width
elayout_weight
nel riquadro dell'elenco restituito daonCreateListPaneView()
. (f5fbf3) - Lo stato visivo delle destinazioni della finestra di dialogo ora
rimane sincronizzato correttamente con lo stato di
DialogFragmentNavigator
. Ciò significa che la chiamata manuale all'API asincronadismiss()
perDialogFragment
ora cancella correttamente tutte le destinazioni della finestra di dialogo sopra la finestra di dialogo ora chiusa. Ciò non influisce sui casi in cui utilizzipopUpTo
opopBackStack()
per chiudere la finestra di dialogo. (I77ba2) AbstractAppBarOnDestinationChangedListener
ora ha messaggi di errore più chiari peronDestinationChanged()
. (Ie742d)
Versione 2.4.0-alpha10
29 settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha10
viene ritirata. La versione 2.4.0-alpha10 contiene questi commit.
Nuove funzionalità
- NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntry
visibili tramite StateFlow (Ia964e).visibleEntries
rememberNavController()
ora accetta un insieme facoltativo di istanzeNavigator
che verranno aggiunte alNavController
restituito per supportare meglio i navigatori opzionali come quelli di Accompanist Navigation Material. (I4619e)
Correzioni di bug
- La navigazione dinamica non si arresterà più in modo anomalo quando l'attività viene ricreata. (Ifa6a3, b/197942869)
- È stato risolto un problema relativo al pulsante Indietro del sistema che si verifica solo dopo essere tornati a una destinazione componibile contenente un
NavHost
. (3ed148, b/195668143) - SafeArgs ora genera gli argomenti per
fromBundle()
efromSavedStateHandle()
nell'ordine corretto dei parametri. (I824a8, b/200059831)
Versione 2.4.0-alpha09
15 settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha09
viene ritirata. La versione 2.4.0-alpha09 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
. (I80a0f) - Ora puoi passare un elenco di argomenti e/o link diretti al builder del grafico di navigazione nidificato e questi verranno aggiunti automaticamente al grafico risultante. (I8a470, b/182545357)
Modifiche alle API
- La funzione DSL Kotlin
navArgument
ora fa parte dinavigation-common
anziché dinavigation-compose
. Per continuare a utilizzare questa funzione, dovrai aggiornare le importazioni. (I1d095)
Modifiche al comportamento
- Durante la generazione degli argomenti, Safe Args ora inserisce i parametri senza valori predefiniti prima di quelli con valori predefiniti. (I89709, b/198493585)
Correzioni di bug
- Quando utilizzi Navigation Compose, i NavGraph saranno
DESTROYED
solo quando tutti i relativi elementi secondari sarannoDESTROYED
. (I86552, b/198741720) - Gli argomenti
NavDeepLink
Nullable non richiedono più un valore predefinito. (Ia14ef, b/198689811) - La chiamata a
setGraph()
con un nuovo grafico ora cancellerà anche gli stack precedenti salvati, oltre al comportamento precedente di estrazione dello stack precedente. (I97f96) - Risolto un problema per cui
le istanze
OnDestinationChangedListener
ecurrentBackStackEntryFlow
non ricevevano notifiche quando utilizzavanolaunchSingleTop
. (Iaaebc)
Aggiornamenti delle dipendenze
- La composizione della navigazione ora dipende da Activity Compose 1.3.1. (I05829)
- Navigation Compose ora dipende da
Lifecycle ViewModel Compose
2.4.0-beta01
. (Ib86a3)
Versione 2.4.0-alpha08
1° settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha08
viene ritirata. La versione 2.4.0-alpha08 contiene questi commit.
Nuove funzionalità
- Ora è possibile estendere la classe
NavType
per creare NavType personalizzati. I tipi personalizzati sono supportati solo quando crei il grafico di navigazione in modo programmatico, ad esempio tramite Navigation Graph Kotlin DSL. (I78440, b/196871885)
Modifiche al comportamento
- Quando genera azioni, il codice Kotlin generato da Safe Args ora inserisce gli argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri. (Idb697, b/188855904)
- I link diretti ora verificano che tutti gli argomenti obbligatori (quelli senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Correzioni di bug
- L'utilizzo di
getBackStackEntry
epreviousBackStackEntry
all'interno di composable(), insieme aremember()
, non causerà più un'eccezione per l'assenza di una destinazione nello stack precedente. (I75138, b/194313238) - Navigation Compose ora ricompone correttamente quando si modificano gli argomenti dello stack e si utilizza
launchSingleTop=true
. (Iebd69, b/186392337) - Non ci sarà più un
ArrayIndexOutOfBoundsException
quando chiamisetGraph
con un grafico con 13 o 29 destinazioni. (I1a9f1, b/195171984) - Il generatore Java SafeArgs non dovrebbe più causare avvisi lint durante la generazione delle classi Args. (I1a666, b/185843837)
Contributo esterno
- Grazie ospixd per aver verificato che tutti gli argomenti obbligatori (quelli senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Versione 2.4.0-alpha07
18 agosto 2021
androidx.navigation:navigation-*:2.4.0-alpha07
viene ritirata. La versione 2.4.0-alpha07 contiene questi commit.
Correzioni di bug
- La composizione della navigazione ora salva correttamente lo stato dopo le modifiche alla configurazione e quando si cambiano i grafici utilizzando la funzionalità di più back stack. (If5a3d, b/195141957)
- Selezionare di nuovo la stessa scheda quando si utilizza la composizione della navigazione con più stack indietro non comporterà più la visualizzazione di una schermata vuota. (I860dc, b/194925622)
NavHost
ora rileva le modifiche apportate aLifecycle.State
diNavBackStackEntry
, il che significa che l'utilizzo diNavHost
in un frammento ora verrà ricomposto correttamente man mano che il ciclo di vita cambia, anziché generare una schermata vuota. (I4eb85, b/195864489)- È stato risolto un problema per cui la chiusura di un
DialogFragment
non aggiornava correttamente lo statoNavController
dopo la ricreazione dell'attività (ovvero dopo una modifica della configurazione). (Icd72b) - È stato risolto un problema per cui la visualizzazione di una destinazione di dialogo non aggiornava la gestione del pulsante Indietro del sistema di NavController, causando potenzialmente l'intercettazione del pulsante Indietro da parte di NavController anche se non ha uno stack di ritorno da visualizzare. (If3b34)
- Safe Args ora genera automaticamente un metodo
toSavedStateHandle
per gli argomenti che può essere utilizzato per testare il codiceViewModel
. (If1e2d, b/193353880)
Versione 2.4.0-alpha06
4 agosto 2021
androidx.navigation:navigation-*:2.4.0-alpha06
viene ritirata. La versione 2.4.0-alpha06 contiene questi commit.
Modifiche alle API
- I metodi
requireSlidingPaneLayout()
erequireDetailPaneNavHostFragment()
suAbstractListDetailFragment
sono stati rinominati rispettivamente ingetSlidingPaneLayout()
egetDetailPaneNavHostFragment()
. (I34a08)
Modifiche al comportamento
- Quando navighi con le animazioni (ad esempio
Crossfade
), ilLifecycle
della nuova destinazione raggiungeràRESUMED
solo al termine dell'animazione. (If0543, b/172112072, b/194301889) - La funzionalità di composizione della navigazione
NavHost
ora imposta il grafico come parte della prima composizione. (Ieb7be)
Correzioni di bug
- L'estrazione dell'ultima destinazione di un grafico di navigazione non genera più un
ClassCastException
. (If0543, b/172112072, b/194301889) - È stato corretto un
NullPointerException
che si verificava quando si aggiungeva un link diretto senza unUri
e si navigava tramite un percorso o un link diretto. (938a0c, b/193805425) - Risolto un problema in Navigation Compose per cui
un
NavBackStackEntry
con link diretto non raggiungeva lo statoRESUMED
. (I192c5) - È stato risolto un problema per cui la visualizzazione di una destinazione della finestra di dialogo non aggiornava la gestione del pulsante Indietro di sistema di NavController, causando potenzialmente l'intercettazione del pulsante Indietro da parte di NavController anche se non ha uno stack indietro da visualizzare. (aosp/1782668)
Versione 2.4.0-alpha05
21 luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha05
viene ritirata. La versione 2.4.0-alpha05 contiene questi commit.
Modifiche al comportamento
NavHost
di Navigazione Composizione ora utilizza sempre dissolvenze incrociate durante la navigazione tra le destinazioni. (I07049, b/172112072)- Ora puoi apportare modifiche al grafico di un NavHost. I grafici
con la stessa startDestination e le stesse destinazioni nel grafico verranno
considerati uguali e non cancelleranno lo stack
NavController
. (I0b8db, b/175392262)
Correzioni di bug
- È stato corretto un
NoSuchElementException
quando la chiamata apopBackStack()
dall'interno di unLifecycleObserver
collegato a unNavBackStackEntry
causato da aggiornamenti rientranti allo stato di NavController. (I64621) AbstractListDetailFragment
ora consente di rimuovere completamenteSlidingPaneLayout
dall'APK quandoAbstractListDetailFragment
non viene utilizzato. (I611ad)NavGraph
eNavDestination
ora sostituiscono il metodo equals, quindi due oggetti con gli stessi valori verranno considerati uguali. (I166eb, b/175392262)
Versione 2.4.0-alpha04
1° luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha04
viene ritirata. La versione 2.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'artefatto
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza unSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli, che utilizza unNavHostFragment
come implementazione, come mostrato nella nostra implementazione di esempio. (Iac4be, b/191276636) - Il
NavHost
dell'artefattonavigation-compose
ora supporta le destinazionidialog
oltre a quellecomposable
. Queste destinazioni della finestra di dialogo verranno visualizzate all'interno di un elemento componibileDialog
, sopra la destinazionecomposable
corrente. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Modifiche alle API
- La funzione
add
inNavigatorState
è stata rinominata inpush
. Tutte le chiamate attuali aadd()
dovranno essere modificate in push(). (Ie89fc, b/172112072) - Le istanze
Navigator
personalizzate ora possono utilizzare le APIpushWithTransaction
epopWithTransition
suNavigatorState
per eseguire il push o il pop di una destinazione in modo asincrono. Tieni presente che queste API non sono ancora utilizzate da nessuno dei navigatori inclusi. (Ic4d7c, b/172112072)
Modifiche al comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
aPendingIntent
restituito dacreatePendingIntent()
, garantendo che questa API funzioni come previsto quando ha come target Android 12. (If8c52)
Correzioni di bug
- È stato risolto un problema relativo a
<include-dynamic>
per cui gli argomenti passati al grafico non venivano passati correttamente al grafico incluso dinamicamente. (I3e115) - È stato corretto un
NullPointerException
durante la navigazione verso una destinazione utilizzando un argomentostring[]
con un valore predefinito di@null
. (I1fbe8) - Aggiungi regole ProGuard per
@Navigator.Name
, risolvendo i problemi quando utilizzi la modalità completa R8 3.1. (I2add9, b/191654433) - SafeArgs non genererà più errori durante la creazione dell'app con le versioni
Kotlin
precedenti alla1.5.0
. (Icd1ff, b/190739257)
Versione 2.4.0-alpha03
16 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha03
viene ritirata. La versione 2.4.0-alpha03 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui erano necessarie due chiamate
navigate()
per passare a un grafico dinamico incluso. (I7785c, b/188859835) - È stato corretto un problema di regressione introdotto in
Navigazione
2.4.0-alpha01
in cuisetupActionBarWithNavController()
non rimuoveva correttamente l'icona Su quando ti trovi in una destinazione di primo livello. (I5d443, b/189868637) - È stato corretto un
IllegalStateException
quando si chiamapopBackStack()
dopo aver estratto il grafico radice di NavController. (I2a330, b/190265699) - Le regole di ProGuard per
by navArgs()
ora vengono applicate correttamente quando utilizzinavigation-common
o qualsiasi artefatto che dipende da esso. (I68800, b/190082521) - Un
OnDestinationChangedListener
che chiamanavigate()
la prima volta che riceve un callback ora riceve correttamente un secondo callback con la destinazione raggiunta. (Ie5f9e, b/190228815) - Safe Args non va più in arresto anomalo quando viene utilizzato con moduli di funzionalità dinamiche e AGP 7.0 o versioni successive. (I69518, b/189966576)
Problema noto
- Safe Args non funzionerà e restituirà un errore
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
quando si utilizza Gradle6.7.0
a causa di una dipendenza da una versione precedente di Kotlin. Questo problema può essere risolto eseguendo l'aggiornamento per utilizzare Gradle 7.0. (b/190739257)
Versione 2.4.0-alpha02
2 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha02
viene ritirata. La versione 2.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- Le route sono ora supportate per le destinazioni Activity, Fragment e Dialog, nonché in tutta la DSL Kotlin DynamicNavigation. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
ha aggiunto temporaneamente API sperimentali per consentire di disattivare il salvataggio dello stato. Sebbene il salvataggio dello stato sia sempre il comportamento corretto, esistono ancora utilizzi di librerie obsolete (ad es. frammenti mantenuti) che non possono essere supportati durante il salvataggio dello stato, quindi le app hanno l'opportunità di eseguire lentamente la conversione da qualsiasi API non supportata. (Idf93c)La navigazione ora fornisce le API
findDestination()
egetHierarchy()
che possono essere utilizzate per implementare NavigationUI personalizzata.findDestination()
è una funzione di estensione suNavGraph
che individua una destinazione all'interno del grafico.getHierarchy()
è una funzione diNavDestination
che può essere utilizzata per verificare se una determinata destinazione si trova all'interno della gerarchia di un'altra.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
I metodi NavigationUI che accettavano un
BottomNavigationView
sono stati aggiornati per accettare invece la relativa superclasse introdotta in Material1.4.0
,NavigationBarView
. In questo modo, questi metodi possono essere utilizzati conNavigationRailView
. (Ib0b36, b/182938895)Quando aumenti un elemento
<action>
tramite XML, gli attributi di animazione possono utilizzare gli attributi estratti dal tema utilizzando la sintassiapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
Modifiche alle API
- I builder Kotlin DSL che utilizzano un ID sono stati ritirati e devono essere sostituiti con builder che utilizzano le route (I85b42, b/188816479) (I9f58f, b/188816479)
Correzioni di bug
DialogFragmentNavigator
ora utilizza l'APINavigatorState.pop()
per informareNavController
quando una finestra di dialogo viene chiusa premendo il pulsante Indietro del sistema o facendo clic al di fuori, assicurando che lo stato diNavController
sia sempre sincronizzato con lo stato del navigatore. (I2ead9)La navigazione non restituisce più
ConcurrentModificationException
quando si manipola l'elenco diOnDestinationChangedListeners
da un callbackonDestinationChanged
. (Ib1707, b/188860458)Safe Args non si arresta più in modo anomalo quando si tenta di generare proprietà di direzione in Kotlin. (Id2416, b/188564435)
Il metodo setId su NavDestination ora è annotato correttamente con
@IdRes
, quindi accetta solo ID risorsa. (I69b80)Il parametro int di
findNode
ora èresId
anzichéresid
. (I7711d)
Aggiornamento delle dipendenze
- Safe Args ora dipende dal plug-in Android per Gradle 4.2.0. Ciò significa che non dovresti più visualizzare l'avviso relativo all'utilizzo di
applicationIdTextResource
. (I6d67b, b/172824579)
Versione 2.4.0-alpha01
18 maggio 2021
androidx.navigation:navigation-*:2.4.0-alpha01
viene ritirata. La versione 2.4.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il metodo
currentBackStackEntryAsFlow()
suNavController
fornisce unFlow
che viene emesso ogni volta che cambia l'NavBackStackEntry
corrente. Questo flusso può essere utilizzato in alternativa alla gestione manuale di unOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Più pile di schede indietro
NavController è responsabile della gestione dello stack indietro delle destinazioni, dell'aggiunta di destinazioni allo stack indietro quando navigate()
e della rimozione quando chiami popBackStack()
o attivi il pulsante Indietro del sistema. La classe NavOptions
esistente e l'integrazione nelle voci <action>
nel file XML del grafico di navigazione sono state ampliate per supportare il salvataggio e il ripristino dello stack indietro. (b/80029773)
Nell'ambito di questa modifica, i metodi NavigationUI
di onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
e NavigationView.setupWithNavController()
ora salvano e ripristinano automaticamente lo stato delle destinazioni estratte, consentendo il supporto di più back stack senza modifiche al codice. Quando utilizzi Navigation con i fragment, questo è il modo consigliato per l'integrazione con più back stack. (Ie07ca)
Le API sottostanti per il salvataggio e il ripristino dello stato sono esposte tramite diverse piattaforme:
Nel file XML di navigazione, l'elemento
<action>
ora può utilizzare gli attributi booleani diapp:popUpToSaveState
eapp:restoreState
per salvare lo stato di tutte le destinazioni visualizzate tramiteapp:popUpTo
e ripristinare lo stato associato alla destinazione passata comeapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
Nel DSL Kotlin, puoi aggiungere la proprietà booleana
restoreState
e la proprietà booleanasaveState
nel builderpopUpTo
:navOptions
// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Quando crei manualmente un oggetto
NavOptions
tramiteNavOptions.Builder
, puoi utilizzaresetRestoreState()
e il nuovo overload persetPopUpTo()
che accetta un parametrosaveState
aggiuntivo.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Le chiamate programmatiche a
popBackStack()
ora possono includere un parametrosaveState
aggiuntivo.
In tutti i casi, NavController
salverà e ripristinerà lo stato di ogni NavBackStackEntry
, incluse le istanze ViewModel
con ambito di destinazione di navigazione. Le API Navigator
sono state aggiornate per consentire a ogni Navigator
di supportare il salvataggio e il ripristino del proprio stato.
L'ComposeNavigator
utilizzato per le destinazioni composable
in Navigation Compose e gli elementi FragmentNavigator
e DynamicFragmentNavigator
utilizzati per le destinazioni <fragment>
in Navigation with Fragments sono stati aggiornati per utilizzare le nuove API Navigator e supportare il salvataggio e il ripristino dello stato.
Percorsi di navigazione
Una route è un String
che identifica in modo univoco una destinazione. Sebbene in precedenza fosse utilizzato solo in Navigation Compose, questo concetto è ora diventato parte delle API Navigation di base. In questo modo, puoi utilizzare un'alternativa all'utilizzo degli ID interi durante la creazione del grafico tramite il DSL Kotlin di Navigation. (b/172823546)
Tutte le API che prima accettavano solo un ID ora hanno un overload che accetta un percorso String
. Sono inclusi navigate()
, popBackStack()
, popUpTo()
e getBackStackEntry()
.
Ciò ha avuto alcune implicazioni per le API:
- La proprietà Kotlin
popUpTo
in Kotlin DSL è stata ritirata a favore dipopUpToId
. (I59c73, b/172823546) - L'API
getStartDestination()
è stata ritirata a favore digetStartDestinationId()
. (I0887f, b/172823546)
Per gli sviluppatori che eseguono l'upgrade dalle versioni precedenti di Navigation Compose a Navigation Compose 2.4.0-alpha01
, ciò significa che i seguenti importazioni sui metodi di estensione non sono più necessari e devono essere rimossi:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
L'argomento KEY_ROUTE
è stato sostituito con la proprietà route
su NavDestination
, il che ti consente di chiamare navBackStackEntry.destination.route
direttamente.
Modifiche alle API
- Tutti gli artefatti di navigazione sono stati riscritti in Kotlin. Ciò ha migliorato l'annullabilità delle classi che utilizzano i generici (come le sottoclassi
NavType
). Tutte le funzioni di estensione Kotlin che facevano parte degli artefatti-ktx
sono state spostate nei rispettivi artefatti principali. Gli artefatti-ktx
continueranno a essere pubblicati, ma sono completamente vuoti. (b/184292145) NavDeepLinkBuilder
ora supporta l'aggiunta di più destinazioni distinte allo stack indietro generato. (I3ee0d, b/147913689)- Aggiungi funzioni di fabbrica per
DynamicNavHostFragment
(Icd515, b/175222619) - L'ID univoco di un
NavBackStackEntry
ora è esposto come parte della sua API pubblica. (Ie033a) - I campi
name
eargument
e le funzioni di destrutturazione diNamedNavArgument
sono ora pubblici. (#174, b/181320559) - È stata introdotta una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisce laNavBackStackEntry
alle impostazioni internazionali della composizione pertinenti. (#175, b/187229439)
Safe Args
Safe Args ora genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Safe Args è stato aggiornato in modo da dipendere da KotlinPoet
1.8.0
. (#172, b/183990444)
Modifiche al comportamento
- La navigazione ora dipende dal
ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i metodi che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione all'applicazione del thread principale introdotta nel ciclo di vita2.3.0
. (b/171125856) - L'analisi degli argomenti Enum dai link diretti ora non fa distinzione tra maiuscole e minuscole, consentendo a un link diretto come
http://www.example.com/red
di corrispondere a un link direttowww.example.com/{color}
anche quando l'enum ha il valoreRED
. (#152, b/135857840)
Compatibilità di Scrivi
androidx.navigation:navigation-compose:2.4.0-alpha01
è compatibile solo con Compose versione1.0.0-beta07
e successive.
Correzioni di bug
- Risolto un problema per cui i segnaposto degli argomenti finali avevano la precedenza sui link diretti con un suffisso esatto corrispondente. (#153, b/184072811)
NavHostFragment
ora supporta navigatori personalizzati che utilizzano lo stesso@Navigator.Name("dialog")
diDialogFragmentNavigator
predefinito. (Ib1c2c, b/175979140)- È stato migliorato il comportamento di
NavigatorProvider#addNavigator
per garantire che la chiamata ripetuta con la stessa istanza non causi problemi. (#176, b/187443146)
Contributi esterni
- Grazie a simonschiller per aver creato il supporto per Safe Args che genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (#122, b/136967621) - Grazie Bradleycorn per aver reso l'analisi degli argomenti Enum dai link diretti indipendente dalla distinzione tra maiuscole e minuscole. (#152, b/135857840)
- Grazie a osipxd per aver risolto un problema per cui i segnaposto degli argomenti finali avevano la precedenza sui link diretti con un suffisso esatto corrispondente. (#153, b/184072811)
- Grazie tatocaster per aver aggiornato Safe Args in modo che dipenda da KotlinPoet
1.8.0
. (#172, b/183990444) - Grazie a jossiwolf per aver reso pubblici i campi
name
eargument
e le funzioni di destrutturazione diNamedNavArgument
. (#174, b/181320559) - Grazie jossiwolf per aver introdotto una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisce iNavBackStackEntry
alle composizioni locali pertinenti. (#175, b/187229439) - Grazie a jossiwolf per aver migliorato il comportamento di
NavigatorProvider#addNavigator
per garantire che chiamarlo ripetutamente con la stessa istanza non causi problemi. (#176, b/187443146)
Navigazione Compose versione 1.0.0
Versione 1.0.0-alpha10
7 aprile 2021
androidx.navigation:navigation-compose:1.0.0-alpha10
viene ritirata. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
NavHost
ora accetta unModifier
, che viene passato al contenitore componibile che racchiude i componenti componibili di destinazione. (I85aca, b/175125483)
Correzioni di bug
NavHost
ora funziona anche quando non viene trovato unOnBackPressedDispatcherOwner
, come nel caso dell'anteprima diNavHost
. (I7d8b4)- La composizione della navigazione ora dipende da Navigazione
2.3.5
, risolvendo un problema che si verificava quando si utilizzavaBackHandler
all'interno di una destinazioneNavHost
. (I7e63b, b/182284739)
Versione 1.0.0-alpha09
10 marzo 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
viene ritirata. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner.current
ora restituisce unViewModelStoreOwner
annullabile per determinare meglio se unViewModelStoreOwner
è disponibile nella composizione corrente. Le API che richiedono unViewModelStoreOwner
, ad esempioviewModel()
eNavHost
, generano comunque un'eccezione se non è impostato unViewModelStoreOwner
. (Idf39a)
Correzioni di bug
- Navigation Compose ora dipende da Navigation 2.3.4, che include la correzione per il tentativo di impostare lo stesso oggetto ViewModelStore dopo l'impostazione del grafico. (I65c24, b/177825470)
Versione 1.0.0-alpha08
24 febbraio 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
viene ritirata. La versione 1.0.0-alpha08 contiene questi commit.
Nuove funzionalità
- Ora
NavHost
compilaLocalSavedStateRegistryOwner
CompositionLocal conNavBackStackEntry
della destinazione, assicurando che qualsiasi stato salvato direttamente inSavedStateRegistry
venga salvato e ripristinato insieme alla destinazione. (I435d7, b/179469431)
Versione 1.0.0-alpha07
10 febbraio 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
viene ritirata. La versione 1.0.0-alpha07 contiene questi commit.
Aggiornamenti delle dipendenze
- Navigation Compose ora dipende da Lifecycle ViewModel Compose 1.0.0-alpha01 per fornire il supporto di
viewModel()
alle destinazionicomposable
. (I7a374) NavHost
ora utilizza il nuovoLocalOnBackPressedDispatcherOwner
di Activity-Compose 1.3.0-alpha01 per ottenere ilOnBackPressedDispatcher
impostato suNavController
. (I65b12)
Versione 1.0.0-alpha06
28 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
viene ritirata. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- È stato aggiunto un metodo di estensione
getBackStackEntry(route: String)
suNavController
che restituisce ilNavBackStackEntry
associato. (If8931)
Versione 1.0.0-alpha05
13 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
viene ritirata. La versione 1.0.0-alpha05 contiene questi commit.
Aggiornato in modo che dipenda da Compose 1.0.0-alpha10.
Versione 1.0.0-alpha04
16 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
viene ritirata. La versione 1.0.0-alpha04 contiene questi commit.
- Aggiornato per la compatibilità con Compose
1.0.0-alpha09
.
Versione 1.0.0-alpha03
2 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
viene ritirata. La versione 1.0.0-alpha03 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
popBackStack()
enavigateUp()
non funzionavano dopo una modifica della configurazione o l'interruzione e la ricreazione del processo. (Icea47, b/173281473) - La navigazione a un grafico nidificato all'interno di NavHost ora funziona correttamente. (I0948d, b/173647694)
Versione 1.0.0-alpha02
11 novembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
viene ritirata. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- La composizione della navigazione ora supporta NavOptions per l'utilizzo delle operazioni popUpTo e launchSingleTop (If96c3, b/171468994)
- È stata aggiunta una funzione di navigazione che accetta una route anziché un ID che consente di creare grafici nidificati nel DSL Navigation Compose. (I1661d)
- startDestination ora precede la route nell'elenco dei parametri per un NavHost (Ie620e)
- Ora puoi creare un grafico utilizzando la route come destinazione di partenza al di fuori di un composable NavHost. (Iceb75)
Versione 1.0.0-alpha01
28 ottobre 2020
android.navigation:navigation-compose:1.0.0-alpha01
viene ritirata. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
L'artefatto navigation-compose
fornisce l'integrazione tra il componente Navigation e Jetpack Compose. Utilizza le funzioni @Composable
come destinazioni nella tua applicazione.
Questa release iniziale offre:
- Un
NavHost
componibile che ti consente di costruire il grafico di navigazione tramite un DSL Kotlin. - Definizione dell'ambito del ciclo di vita,
ViewModel
e stato memorizzato a livello di destinazione. - Integrazione automatica con il pulsante Indietro del sistema.
- Supporto per il passaggio di argomenti, l'allegato di link diretti alle destinazioni e il ritorno di un risultato alle destinazioni precedenti.
- Componi helper specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire l'innalzamento dello stato e il collegamento diNavController
ai componenti componibili al di fuori diNavHost
(ad esempio una barra di navigazione in basso).
Per ulteriori informazioni, consulta la guida alla navigazione di Compose.
Versione 2.3.5
Versione 2.3.5
7 aprile 2021
androidx.navigation:navigation-*:2.3.5
viene ritirata. La versione 2.3.5 contiene questi commit.
Nuove funzionalità
- Quando navighi utilizzando un
NavDeepLinkRequest
o unUri
, ora puoi accedere aUri
, azione e tipo MIME nella destinazione risultante ottenendo l'intent dagli argomenti tramiteKEY_DEEP_LINK_INTENT
, rispecchiando la funzionalità già disponibile per il deep link esterno. (I975c3, b/181521877)
Correzioni di bug
OnBackPressedCallbacks
aggiunto a un dispatcher conNavBackStackEntry
come LifecycleOwner ora intercetta correttamente il pulsante Indietro dopo che il ciclo di vita dell'attività èSTOPPED
, poiSTARTED
(Iff94f, b/182284739)- L'analisi del dominio dei link diretti ora non fa distinzione tra maiuscole e minuscole, garantendo che
www.example.com
corrisponda sia awww.example.com
che awww.Example.com
. Tieni presente che i nomi dei parametri di ricerca sono ancora sensibili alle maiuscole. (#144, b/153829033) - È stato corretto un
NullPointerException
che poteva verificarsi quando una destinazione aveva più argomenti predefiniti non nullabili e si passava a quella destinazione eseguendo l'override solo di un sottoinsieme di questi argomenti. (aosp/1644827)
Aggiornamenti delle dipendenze
- Il plug-in Gradle Navigation Safe Args ora dipende dal plug-in Gradle Kotlin 1.4.31. (aosp/1661058, b/181156413)
Contributo esterno
- Grazie
bentrengrove
per la pull request che rende l'analisi del dominio dei link diretti indipendente dalla distinzione tra maiuscole e minuscole. (#144, b/153829033)
Versione 2.3.4
Versione 2.3.4
10 marzo 2021
androidx.navigation:navigation-*:2.3.4
viene ritirata. La versione 2.3.4 contiene questi commit.
Nuove funzionalità
- Ora gli argomenti
ReferenceType
possono essere analizzati correttamente quando vengono inviati come parte di un URI di link diretto. Supporta sia il valore intero non elaborato sia i valori esadecimali con il prefisso0x
. (#127, b/179166693) android:defaultValue
per un argomento conapp:argType="float"
ora supporta i valori predefiniti interi, consentendoti di utilizzareandroid:defaultValue="0"
anziché richiedere l'utilizzo di0.0
. (#117, b/173766247)
Correzioni di bug
- Correzione del blocco dell'avanzamento dell'installazione quando si utilizza il supporto della navigazione per le funzionalità dinamiche. (Ib27a7, b/169636207)
- La chiamata di
setViewModelStore
osetLifecycleOwner
con lo stesso oggetto già impostato ora non avrà effetto (Idf491, b/177825470) - Safe Args ora aggiunge annotazioni di soppressione ai metodi appropriati quando si utilizza Java. (I8fbc5, b/179463137)
Contributi esterni
- Grazie
JvmName
per la richiesta di pull per garantire che gli argomentiReferenceType
ora possano essere analizzati correttamente quando vengono inviati come parte di un URI di link diretto. (#127, b/179166693) - Grazie
tatocaster
per la pull request per consentire adefaultValue
per un argomento conapp:argType=”float”
ora di supportare i valori predefiniti interi. (#117, b/173766247)
Versione 2.3.3
Versione 2.3.3
27 gennaio 2021
androidx.navigation:navigation-*:2.3.3
viene ritirata. La versione 2.3.3 contiene questi commit.
Correzioni di bug
- Non si verifica più un arresto anomalo quando viene visualizzato un
NavBackStackEntry
prima che il relativoLifecycle
venga spostato inCREATED
. (Ie3ba3) - È stata corretta la regressione causata da b/171364502 in cui il passaggio a un'attività con un valore di risorsa di animazione di
0
causava unResourceNotFoundException
. (I7aedb, b/176819931)
Versione 2.3.2
Versione 2.3.2
2 dicembre 2020
androidx.navigation:navigation-*:2.3.2
viene ritirata. La versione 2.3.2 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di regressione in
NavigationUI
in cui l'utilizzo di una destinazione<activity>
cononNavDestinationSelected
non consentiva di passare all'attività. (I22e34, b/171364502) - È stato risolto un problema per cui
navigation-dynamic-features-fragment
comportava la navigazione più volte verso la destinazione appena installata. (aosp/1486056, b/169636207) - Risolto un problema per cui gli argomenti predefiniti non venivano inviati alle istanze
OnDestinationChangedListener
quando si utilizzavalaunchSingleTop
. (I2c5cb) - È stato risolto un problema per cui la navigazione in un grafico di navigazione nidificato non creava una nuova istanza del grafico nello stack precedente. (Ifc831)
- Risolto un problema per cui l'utilizzo di
navigate()
con unpopUpTo
che rimuoveva l'ultima destinazione in un grafico di navigazione non distruggeva e rimuoveva immediatamente il grafico di navigazione stesso dallo stack precedente. (I910a3) - Navigation SafeArgs ora utilizza KotlinPoet versione 1.7.2, che aggiunge il supporto per la modalità API esplicita di Kotlin. (I918b5)
NavHostFragment.findNavController(Fragment)
ora controlla anche la visualizzazione della decorazione principale di un DialogFragment, oltre ai controlli esistenti della gerarchia dei fragment e della gerarchia delle visualizzazioni del fragment. Ciò consente di testare i frammenti di dialogo che utilizzano la navigazione conFragmentScenario
eNavigation.setViewNavController()
. (I69e0d)
Versione 2.3.1
Versione 2.3.1
14 ottobre 2020
androidx.navigation:navigation-*:2.3.1
viene ritirata. La versione 2.3.1 contiene questi commit.
Nuove funzionalità
- Le risorse Animator predefinite sono state aggiunte all'interfaccia utente di navigazione e sono consigliate rispetto alle risorse di animazione predefinite. (b/167430145)
- NavOptions ora esegue l'override dei metodi hashcode ed equals (b/161586466)
- La navigazione ora include la destinazione corrente nell'IllegalArgumentException "Nessuna destinazione con ID", il che dovrebbe migliorare l'esperienza di debug degli sviluppatori. (b/168311416)
Correzioni di bug
- Safe Args non eseguirà più il wrapping della riga di ritorno, anche se il nome della classe di argomenti generata è più lungo di 100 caratteri. (b/168584987)
Modifiche alle dipendenze
navigation-ui
ora dipende da DrawerLayout 1.1.1, garantendo cheNavigationUI
possa aprire il riquadro anche quando si utilizzaLOCK_MODE_LOCKED_CLOSED
oLOCK_MODE_LOCKED_OPEN
. (b/162253907)- Safe Args ora dipende da KotlinPoet 1.6.0 (aosp/1435911)
- Safe Args ora dipende da AGP 4.0.1 (aosp/1442337)
Versione 2.3.0
Versione 2.3.0
24 giugno 2020
androidx.navigation:navigation-*:2.3.0
viene ritirata. La versione 2.3.0 contiene questi commit.
Modifiche importanti dalla versione 2.2.0
- Integrazione dei moduli delle funzionalità: gli artefatti
navigation-dynamic-features-runtime
enavigation-dynamic-features-fragment
ti consentono di passare alle destinazioni definite nei moduli delle funzionalità, gestendo automaticamente l'installazione dei moduli delle funzionalità in base alle esigenze. Per saperne di più, consulta Navigare con i moduli delle funzionalità. - Test di navigazione: l'artefatto
navigation-testing
fornisce unTestNavHostController
che ti consente di impostare la destinazione corrente e verificare lo stack precedente dopo le operazioni di navigazione. Per ulteriori informazioni, consulta Test di navigazione. - Restituzione di un risultato: l'
NavBackStackEntry
associato a ogni destinazione nello stack di navigazione indietro ora ti consente di accedere a unSavedStateHandle
adatto per memorizzare piccole quantità di stato salvato che devono essere associate a una particolare voce dello stack di navigazione indietro. Per saperne di più, consulta Ripristinare un risultato nella destinazione precedente. - Supporto di
NavigationUI
perOpenable
: tutti gli utilizzi diDrawerLayout
inNavigationUI
sono stati sostituiti con l'interfaccia più genericaOpenable
aggiunta in CustomView1.1.0
e implementata daDrawerLayout
in DrawerLayout1.1.0
. - Supporto di intent e tipi MIME nei link diretti: i link diretti sono stati ampliati per supportare
app:action
eapp:mimeType
, oltre aapp:uri
precedentemente disponibile.NavController
ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. Per saperne di più, consulta la sezione Navigare utilizzando NavDeepLinkRequest.
Problemi noti
- Il supporto per le azioni di link diretti e i tipi MIME non è ancora disponibile in Manifest Merger. Fino al completamento di questo lavoro, gli elementi
<intent-filter>
generati dall'elemento<nav-graph>
nel manifest non includeranno il tipo MIME nell'elemento<data>
o l'intent personalizzato<action>
. Devi aggiungere manualmente un<intent-filter>
appropriato al manifest.
Versione 2.3.0-rc01
10 giugno 2020
androidx.navigation:navigation-*:2.3.0-rc01
viene ritirata. La versione 2.3.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un
NullPointerException
durante la sostituzione di un'istanza di una destinazione senza argomenti con un'altra istanza con argomenti consingleTop
. (b/158006669) - Tutte le eccezioni
destination is unknown
generate daNavController
ora dispongono di informazioni di debug aggiuntive per determinare lo stato diNavController
. (b/157764916)
Versione 2.3.0-beta01
20 maggio 2020
androidx.navigation:navigation-*:2.3.0-beta01
vengono rilasciati. La versione 2.3.0-beta01 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui il
Lifecycle
diNavBackStackEntry
non veniva aggiornato correttamente dopo l'interruzione del processo. (b/155218371) - Le istanze
OnDestinationChangedListener
registrate prima della chiamatasetGraph()
ora inviano correttamente la destinazione ripristinata dopo l'interruzione di un processo. (b/155218371) - Quando si utilizza
singleTop
, ora gli argomenti diNavBackStackEntry
vengono aggiornati correttamente e inviati a tutte le istanze diOnDestinationChangeListener
. (b/156545508)
Aggiornamenti delle dipendenze
- L'artefatto
NavigationUI
ora dipende da CustomView1.1.0-rc01
e DrawerLayout1.1.0-rc01
. (aosp/1309696)
Versione 2.3.0-alpha06
29 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha06
viene ritirata. (La versione 2.3.0-alpha06 contiene questi commit.)
Nuove funzionalità
- I link diretti sono stati estesi per supportare
app:action
eapp:mimeType
, oltre aapp:uri
precedentemente disponibile. NavController ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. (b/136573074, b/135334841)
Modifiche alle API
- È stato ampliato notevolmente il supporto del DSL Kotlin per le destinazioni di navigazione dinamica. (b/148969800)
Correzioni di bug
- Risolto un problema per cui gli intent di link diretto venivano ignorati quando si utilizzava una destinazione iniziale nidificata. (b/154532067)
Versione 2.3.0-alpha05
15 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha05
viene ritirata. La versione 2.3.0-alpha05 contiene questi commit.
Nuove funzionalità
- Per l'inclusione di grafici dinamici che utilizzano
<include-dynamic>
, non è più necessario specificareapp:graphPackage
e ne verrà utilizzato uno predefinito aggiungendo il suffissomoduleName
aapplicationId
dopo un punto. Se devi personalizzare il tuographPackage
, ora è supportato un segnaposto${applicationId}
. (b/152696768) - Il DSL Kotlin del grafico di navigazione ora espone un
defaultArguments
Map
per le azioni, rispecchiando la possibilità di impostare valori predefiniti sugli elementi<action>
nei file XML di navigazione. (b/150345605)
Correzioni di bug
- Da Navigazione 2.2.2: è stato corretto un
IllegalStateException
durante il deep linking alla destinazione iniziale del grafico quando sono presenti più istanze diNavHostFragment
nell'attività. (b/147378752)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Fragment
1.2.4
. (aosp/1277325) - La navigazione dinamica ora dipende da Play Core
1.7.2
. (aosp/1282257)
Versione 2.3.0-alpha04
18 marzo 2020
androidx.navigation:navigation-*:2.3.0-alpha04
viene ritirata. La versione 2.3.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per le attività e le destinazioni dei frammenti dei moduli delle funzionalità in Navigation Kotlin DSL. (b/148969800)
Modifiche alle API
- La classe
DynamicExtras
non utilizza più un pattern di builder e ora può essere costruita direttamente. (aosp/1253671) - Ora
DynamicActivityNavigator
accetta unContext
nel costruttore anziché unActivity
. (aosp/1250252)
Correzioni di bug
NavigationUI
non ignora più le etichette vuote (ovvero una destinazione conandroid:label=””
) e ora imposta correttamente il titolo su una stringa vuota. (b/148679860)
Aggiornamenti delle dipendenze
- Gli artefatti delle funzionalità dinamiche di navigazione ora dipendono da Play Core
1.6.5
. (b/149556401)
Versione 2.3.0-alpha03
4 marzo 2020
androidx.navigation:navigation-*:2.3.0-alpha03
viene ritirata. La versione 2.3.0-alpha03 contiene questi commit.
Modifiche alle API
- Anziché fare affidamento sulla classe concreta
DrawerLayout
,AppBarConfiguration
ora utilizza l'interfacciaOpenable
introdotta in CustomView1.1.0-alpha02
(cheDrawerLayout
implementa a partire da DrawerLayout1.1.0-alpha04
), consentendoti di utilizzare implementazioni personalizzate diOpenable
conNavigationUI
. (b/129030452)
Correzioni di bug
- Le regole
navigation-common-ktx
ProGuard ora conservano correttamente solo le classiNavArgs
utilizzate anziché tutte le istanzeNavArgs
. (b/150213558)
Modifiche alle dipendenze
- La navigazione ha ripristinato la sua dipendenza da Core
1.2.0
e ora dipende da Core1.1.0
per evitare di costringere gli sviluppatori a passare a una dipendenza più recente quando la navigazione non dipende da nuove API in Core1.2.0
.
Versione 2.3.0-alpha02
19 febbraio 2020
androidx.navigation:navigation-*:2.3.0-alpha02
viene ritirata. La versione 2.3.0-alpha02 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora ti consente di accedere a unSavedStateHandle
adatto per archiviare piccole quantità di stato salvato che devono essere associate a una particolare voce dello stack precedente. Per un esempio di caso d'uso, vedi Restituzione di un risultato. (b/79672220)
Modifiche alle API
- Sono stati aggiunti metodi pratici di
getCurrentBackStackEntry()
egetPreviousBackStackEntry()
per semplificare il recupero di unNavBackStackEntry
per le destinazioni attuali e precedenti. (b/79672220)
Correzioni di bug
navigateUp()
ora passa gli argomenti della destinazione corrente eKEY_DEEP_LINK_INTENT
alla destinazione precedente quando avvii l'app nel tuo stack di attività. (b/147456890)
Modifiche alle dipendenze
- La navigazione ora dipende da Core
1.2.0
.
Versione 2.3.0-alpha01
5 febbraio 2020
androidx.navigation:navigation-*:2.3.0-alpha01
viene ritirata. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il nuovo artefatto
navigation-testing
fornisce una classeTestNavHostController
. Questa classe fornisce un'alternativa all'utilizzo di un mockNavController
durante i test di navigazione, che consente di impostare la destinazione corrente e verificare lo stack precedente dopo le operazioni di navigazione. (b/140884273) - Il nuovo
navigation-dynamic-features-fragment
(e la sua dipendenza transitiva,navigation-dynamic-features-runtime
) ti consente di includere destinazioni o interi grafici di navigazione (tramite<include-dynamic>
) dai moduli delle funzionalità, fornendo un'installazione semplice dei moduli delle funzionalità on demand quando si naviga verso queste destinazioni. Per saperne di più, consulta Navigare con i moduli delle funzionalità. (b/132170186)
Correzioni di bug
- Da Navigazione
2.2.1
: i link diretti senza parametri di query ora ignorano correttamente tutti i parametri di query anziché aggiungerli agli elementi{argument}
finali o non corrispondere al link diretto. (b/147447512) - Da Navigazione
2.2.1
: le regole dinavigation-ui
ProGuard perDrawerArrowDrawable
sono state aggiornate per garantire cheandroid.enableJetifier=true
non sia richiesto. (b/147610424) - Da Navigazione
2.2.1
: il modulonavigation-common-ktx
ora ha un nome pacchetto manifest univoco anziché condividere lo stesso nome pacchetto manifest dinavigation-runtime-ktx
. (aosp/1141947)
Aggiornamenti delle dipendenze
- Da Navigazione
2.2.1
: la navigazione2.2.1
ora dipende da Lifecycle ViewModel SavedState2.2.0
e Fragment1.2.1
.
Versione 2.2.2
Versione 2.2.2
15 aprile 2020
androidx.navigation:navigation-*:2.2.2
vengono rilasciati. La versione 2.2.2 contiene questi commit.
Correzioni di bug
- È stato corretto un
IllegalStateException
durante il deep linking alla destinazione iniziale del grafico quando hai più istanze diNavHostFragment
nella tua Attività. (b/147378752) NavigationUI
non ignora più le etichette vuote (ovvero una destinazione conandroid:label=””
) e ora imposta correttamente il titolo su una stringa vuota. Questa funzionalità è stata rilasciata in precedenza in Navigation 2.3.0-alpha04. (b/148679860)- Le regole
navigation-common-ktx
ProGuard ora conservano correttamente solo le classiNavArgs
utilizzate anziché tutte le istanzeNavArgs
. Questa funzionalità è stata rilasciata in precedenza in Navigation 2.3.0-alpha03. (b/150213558
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Fragment
1.2.4
. (aosp/1277325)
Versione 2.2.1
Versione 2.2.1
5 febbraio 2020
androidx.navigation:navigation-*:2.2.1
viene ritirata. La versione 2.2.1 contiene questi commit.
Correzioni di bug
- I link diretti senza parametri di query ora ignorano correttamente tutti i parametri di query anziché aggiungerli agli elementi
{argument}
finali o non corrispondere al link diretto. (b/147447512) - Le regole di
navigation-ui
ProGuard perDrawerArrowDrawable
sono state aggiornate per garantire cheandroid.enableJetifier=true
non sia richiesto. (b/147610424) - Il modulo
navigation-common-ktx
ora ha un nome del pacchetto manifest univoco anziché condividere lo stesso nome del pacchetto manifest dinavigation-runtime-ktx
. (aosp/1141947)
Aggiornamenti delle dipendenze
- La navigazione
2.2.1
ora dipende da Lifecycle ViewModel SavedState2.2.0
e Fragment1.2.1
.
Versione 2.2.0
Versione 2.2.0
22 gennaio 2020
androidx.navigation:navigation-*:2.2.0
viene ritirata. La versione 2.2.0 contiene questi commit.
Modifiche importanti dalla versione 2.1.0
- NavBackStackEntry: ora puoi chiamare
NavController.getBackStackEntry()
, passando l'ID di una destinazione o di un grafico di navigazione nello stack precedente. Il valoreNavBackStackEntry
restituito fornisce unLifecycleOwner
,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
basati sulla navigazione, oltre agli argomenti utilizzati per avviare la destinazione. - Integrazione di Lifecycle ViewModel SavedState:
SavedStateViewModelFactory
è ora la factory predefinita utilizzata quando si utilizzaby navGraphViewModels()
o il costruttoreViewModelProvider
con unViewModelStoreOwner
restituito daNavController.getBackStackEntry()
oNavController.getViewModelStoreOwner()
. - Supporto dei parametri di ricerca per i link diretti: i link diretti con parametri di ricerca ora supportano i parametri di ricerca riordinati; gli argomenti che hanno un valore predefinito o sono nullabili ora sono facoltativi quando vengono abbinati ai link diretti.
- Supporto migliorato per le animazioni:
NavHostFragment
ora utilizzaFragmentContainerView
di Fragment 1.2.0, risolvendo i problemi di ordinamento Z delle animazioni e l'invio degli inset della finestra ai fragment.
Versione 2.2.0-rc04
18 dicembre 2019
androidx.navigation:navigation-*:2.2.0-rc04
viene ritirata. La versione 2.2.0-rc04 contiene questi commit.
Correzioni di bug
- Sono state modificate le animazioni di dissolvenza predefinite utilizzate da
navigation-ui
in modo che corrispondano a quelle modificate in Fragment1.2.0-rc04
. (b/145769814)
Versione 2.2.0-rc03
4 dicembre 2019
androidx.navigation:navigation-*:2.2.0-rc03
viene ritirata. La versione 2.2.0-rc03 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di analisi dei link diretti quando si utilizzano parametri di query e un argomento come ultima parte del percorso che impediva l'analisi di più di un carattere dell'argomento del percorso finale. (b/144554689)
- È stato risolto un problema di analisi dei link diretti per cui i parametri facoltativi ricevevano
"@null"
anzichénull
. (b/141613546) NavHostFragment
ora ripristina correttamente il grafico dopo una modifica alla configurazione quando viene utilizzato conFragmentContainerView
. (b/143752103)
Modifiche alle dipendenze
- La navigazione ora dipende da Lifecycle
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Activity1.1.0-rc03
e Fragment1.2.0-rc03
, a seconda dei casi.
Versione 2.2.0-rc02
7 novembre 2019
androidx.navigation:navigation-*:2.2.0-rc02
viene ritirata. La versione 2.2.0-rc02 contiene questi commit.
Modifiche alle dipendenze
- La navigazione ora dipende da androidx.lifecycle
2.2.0-rc02
.
Versione 2.2.0-rc01
23 ottobre 2019
androidx.navigation:navigation-*:2.2.0-rc01
viene rilasciato senza modifiche dal giorno 2.2.0-beta01
. La versione 2.2.0-rc01 contiene questi commit.
Versione 2.2.0-beta01
9 ottobre 2019
androidx.navigation:navigation-*:2.2.0-beta01
viene ritirata. La versione 2.2.0-beta01 contiene questi commit.
Nuove funzionalità
NavDestination
e le relative sottoclassi ora sostituisconotoString()
per fornire informazioni più utili durante il debug. (b/141264986)
Modifiche al funzionamento
- I parametri di query aggiuntivi ora vengono ignorati durante la corrispondenza dei link diretti anziché causare l'esito negativo della corrispondenza. (b/141482822)
Correzioni di bug
- È stato risolto un problema per cui gli argomenti nel percorso di un link diretto venivano ignorati se venivano specificati anche i parametri di ricerca. (b/141505755)
- L'estensione
navArgs()
Kotlin suActivity
ora ha un messaggio di errore migliore quando non sono presenti componenti aggiuntivi. (b/141408999) - Le classi Java
Directions
generate da Safe Args ora contengono valori predefiniti. (b/141099045) - Le classi Java
Args
generate da Safe Args ora contengono valori predefiniti. (b/140123727) - Quando si utilizza un
Toolbar
,NavigationUI
non anima più la modifica del testo quando si passa da una destinazione di primo livello all'altra. (b/140848160)
Versione 2.2.0-alpha03
18 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha03
viene ritirata. La versione 2.2.0-alpha03 contiene questi commit.
Modifiche al funzionamento
- Se chiami il numero
setViewModelStore()
dopo aver chiamato il numerosetGraph
, ora riceverai un messaggioIllegalStateException
. Questo valore deve essere sempre impostato daNavHost
nell'ambito della configurazione iniziale per garantire che tutte le istanzeNavBackStackEntry
abbiano uno spazio di archiviazione coerente per le istanzeViewModel
. (aosp/1111821)
Correzioni di bug
- È stato corretto un
ConcurrentModificationException
durante l'utilizzo di istanzeViewModel
collegate a più istanzeViewModelStore
con ambito del grafico di navigazione diverso. (aosp/1112257)
Versione 2.2.0-alpha02
5 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha02
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- I link diretti con parametri di query ora supportano i parametri di query riordinati; gli argomenti che hanno un valore predefinito o sono nullabili ora sono facoltativi quando vengono abbinati i link diretti. (b/133273839)
- Ora puoi chiamare
NavController.getBackStackEntry()
, passando l'ID di una destinazione o di un grafico di navigazione nello stack precedente. Il valoreNavBackStackEntry
restituito fornisce unLifecycleOwner
,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
basati sulla navigazione, oltre agli argomenti utilizzati per avviare la destinazione. (aosp/1101691, aosp/1101710)
Correzioni di bug
- Risolto un problema per cui l'aggiunta di un
NavHostFragment
aViewPager2
non riusciva e veniva visualizzato unIllegalArgumentException
. (b/133640271) NavInflater
ora evita di chiamaregetResourceName()
inutilmente, velocizzando il tempo di espansione fino al 40%. (b/139213740)
Versione 2.2.0-alpha01
7 agosto 2019
androidx.navigation:navigation-*:2.2.0-alpha01
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
SavedStateViewModelFactory
ora è la fabbrica predefinita utilizzata quando si utilizzaby navGraphViewModels()
o il costruttoreViewModelProvider
con unViewModelStoreOwner
restituito daNavController.getViewModelStoreOwner()
. (b/135716331)
Modifiche all'API
- Da Navigazione
2.1.0-rc01
: l'APIgetViewModelStore()
obsoleta suNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Correzioni di bug
NavHostFragment
ora utilizzaFragmentContainerView
, risolvendo i problemi di ordinamento Z delle animazioni e l'invio degli inset della finestra ai fragment. (b/137310379)
Versione 2.1.0
Versione 2.1.0
5 settembre 2019
androidx.navigation:navigation-*:2.1.0
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Modifiche importanti dalla versione 2.0.0
- ViewModel con ambito impostato su un grafico di navigazione: ora puoi creare ViewModel con ambito impostato a livello di grafico di navigazione utilizzando il delegato della proprietà
by navGraphViewModels()
per gli utenti Kotlin che utilizzano le librerie-ktx
o l'APIgetViewModelStoreOwner()
aggiunta aNavController
. Per ulteriori informazioni, consulta Condividere dati correlati all'interfaccia utente tra le destinazioni. - Destinazioni della finestra di dialogo: ora puoi creare destinazioni
<dialog>
che mostreranno unaDialogFragment
quandonavigate
.NavHostFragment
supporta le destinazioni di dialogo per impostazione predefinita. Per ulteriori informazioni, vedi Creare una destinazione da un DialogFragment. - Navigazione tramite URI: ora puoi
navigate
utilizzando unUri
, che utilizza il<deepLink>
che hai aggiunto a una destinazione per raggiungerla. Per ulteriori informazioni, vedi Navigare utilizzando l'URI. - NavHostController: le API utilizzate specificamente per la creazione di un
NavHost
personalizzato sono state spostate inNavHostController
, consentendo alle implementazioni di connettere il proprioNavController
all'hostingLifecycleOwner
,OnBackPressedDispatcher
eViewModelStore
.
Versione 2.1.0-rc01
7 agosto 2019
androidx.navigation:navigation-*:2.1.0-rc01
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- L'API
getViewModelStore()
obsoleta suNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Versione 2.1.0-beta02
19 luglio 2019
androidx.navigation:*:2.1.0-beta02
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- È stata rimossa la dipendenza Jacoco involontaria introdotta in
2.1.0-beta01
. (b/137782950)
Versione 2.1.0-beta01
17 luglio 2019
androidx.navigation:*:2.1.0-beta01
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
NavigationUI
ora anima la rimozione del pulsante Su quando si utilizzasetupWithNavController()
con unToolbar
o unCollapsingToolbarLayout
. (b/131403621)
Correzioni di bug
- È stato risolto un problema di sincronizzazione quando si utilizzano più NavHostFragment con lo stesso contenitore con
findNavController()
. (b/136021571)
Versione 2.1.0-alpha06
2 luglio 2019
androidx.navigation:*:2.1.0-alpha06
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- L'attributo
app:navGraph
utilizzato da NavHostFragment è stato spostato nell'artefattonavigation-runtime
. I navigatori personalizzati che possono essere aggiunti tramite XML devono utilizzare questo attributo per ottenere l'integrazione con il riquadro Host dell'editor di navigazione. (b/133880955)
Modifiche all'API
- L'API
getViewModelStore()
suNavController
è stata ritirata a favore del nuovo metodogetViewModelStoreOwner()
che restituisce unViewModelStoreOwner
. (aosp/987010) - L'implementazione delle destinazioni a finestra mobile, come le destinazioni
<dialog>
, è stata generalizzata in un'interfaccia di marcatore,FloatingWindow
, che ora implementano tutte le destinazioni<dialog>
. I metodi NavigationUI per interagire con la barra delle app superiore ora ignorano le destinazioniFloatingWindow
. (b/133600763)
Modifiche al funzionamento
- Ora la navigazione mantiene correttamente il suo stato sincronizzato con ciò che viene visualizzato sullo schermo quando si utilizza una destinazione
<dialog>
. Di conseguenza, Navigazione ora mostra automaticamente le destinazioni<dialog>
quando raggiungi una destinazione non di dialogo e non di attività, ad esempio una destinazione<fragment>
. (b/134089818)
Correzioni di bug
- La navigazione ora sopprime l'animazione che si verifica durante la ricreazione dell'attività durante la gestione di un link diretto, correggendo un flash visivo. (b/130362979)
- È stato corretto un bug per cui lo stack di navigazione precedente non era sincronizzato durante l'inserimento di un fragment come fragment iniziale. (b/133832218)
Versione 2.1.0-alpha05
5 giugno 2019
androidx.navigation:*:2.1.0-alpha05
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- Le API correlate all'host su
NavController
sono state rinominate e spostate in una nuova sottoclasse diNavController
,NavHostController
. (aosp/966091) - Il metodo
NavController
setHostOnBackPressedDispatcherOwner()
è stato sostituito dal metodosetOnBackPressedDispatcher()
diNavHostController
e ora richiede di chiamaresetLifecycleOwner()
prima di chiamarlo. (aosp/965409) NavHostController
ora contiene un metodoenableOnBackPressed(boolean)
che sostituisce la classeNavHostOnBackPressedManager
precedentemente restituita dasetHostOnBackPressedDispatcherOwner()
. (aosp/966091)
Correzioni di bug
- È stato risolto un problema per cui lo stack precedente non era corretto dopo la navigazione tramite URI. (b/132509387)
- I link diretti gestiti automaticamente da NavController vengono attivati una sola volta. (b/132754763)
Versione 2.1.0-alpha04
16 maggio 2019
androidx.navigation:*:2.1.0-alpha04
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
NavHostFragment
rispetta correttamenteapp:defaultNavHost
quando intercetta gli eventi del pulsante Indietro del sistema, correggendo una regressione in Navigazione2.1.0-alpha03
. b/132077777DialogFragmentNavigator
ora gestisce correttamente le operazionipopBackStack()
enavigateUp()
. b/132576764- È stato risolto un problema di
IllegalStateException: unknown destination during restore
durante lo spostamento ripetuto tra grafici nidificati. b/131733658
Versione 2.1.0-alpha03
7 maggio 2019
androidx.navigation:*:2.1.0-alpha03
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Problemi noti
- NavHostFragment continua a intercettare il pulsante Indietro del sistema nonostante l'utilizzo di
app:defaultNavHost="false"
b/132077777
Nuove funzionalità
- Ora puoi creare destinazioni
<dialog>
che mostreranno unDialogFragment
quandonavigate
.NavHostFragment
supporta le destinazioni di dialogo per impostazione predefinita. b/80267254 - Oltre a chiamare
navigate
con un ID risorsa o un'istanzaNavDirections
, ora puoi navigare tramite unUri
, che utilizza l'<deepLink>
che hai aggiunto a una destinazione per raggiungere quella corretta. b/110412864
Modifiche al funzionamento
- Le animazioni predefinite fornite da NavigationUI sono state accelerate da 400 ms a 220 ms per corrispondere alla velocità di animazione predefinita di attività e fragment. b/130055522
Modifiche all'API
- Il metodo
createFragmentNavigator()
diNavHostFragment
è stato ritirato e la sua funzionalità è stata spostata nel nuovo metodoonCreateNavController()
per chiarire che questo è il punto di ingresso corretto per aggiungere navigatori personalizzati quando si crea una sottoclasse diNavHostFragment
. b/122802849 - È stato aggiunto un metodo
hasDeepLink()
aNavDestination
per consentirti di verificare se un determinatoUri
può essere gestito da quella destinazione o, nel caso di unNavGraph
, da qualsiasi destinazione nel grafico di navigazione. b/117437718
Correzioni di bug
- Ora gli argomenti predefiniti vengono passati correttamente alle istanze
OnDestinationChangedListener
. b/130630686 NavHostFragment
ora intercetta gli eventi Indietro del sistema utilizzandoOnBackPressedDispatcher
, correggendo un problema che si verifica durante la navigazione condizionale nei metodi del ciclo di vita dei fragment quando si torna a un fragment. b/111598096- Per Safe Args, un
android:defaultValue=”@null”
con unapp:argType
non specificato viene ora dedotto correttamente come argomentostring
. b/129629192
Versione 2.1.0-alpha02
3 aprile 2019
androidx.navigation:*:2.1.0-alpha02
viene ritirata. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Ora puoi creare ViewModel con ambito a livello di grafico di navigazione tramite il delegato della proprietà
by navGraphViewModels()
per gli utenti Kotlin o utilizzando l'APIgetViewModelStore()
aggiunta aNavController
. b/111614463
Modifiche all'API
- Ora puoi aggiungere un
app:targetPackage
a una destinazione<activity>
per limitare il nome del pacchetto corrispondente. Supportaapp:targetPackage="${applicationId}"
per limitare il pacchetto al tuo ID applicazione. b/110975456
Correzioni di bug
android:name
per le destinazioni<activity>
non viene più analizzato in una classe al momento dell'inflazione, evitando ClassNotFoundExceptions quando si utilizzano funzionalità dinamiche. b/124538597
Versione 2.1.0-alpha01
19 marzo 2019
Questa è la prima release alpha di Navigazione 2.1.0
.
Modifiche alle dipendenze
- La navigazione ora dipende da
androidx.core:core:1.0.1
eandroidx.fragment:fragment:1.1.0-alpha05
. Questa release rimuove anche la dipendenza daandroidx.legacy:legacy-support-core-utils:1.0.0
. b/128632612
Modifiche alle API
- È stato aggiunto un nuovo metodo
Navigation.createNavigateOnClickListener(NavDirections)
come alternativa alla creazione di un listener di clic con un ID risorsa e un bundle. b/127631752 FragmentNavigator.instantiateFragment
è stato ritirato. L'implementazione predefinita ora utilizzaFragmentFactory
per creare istanze di Fragment. b/119054429
Correzioni di bug
- La navigazione non invia più un
Bundle
nullo quando sono presenti argomenti allegati a una destinazione, risolvendo un problema durante l'utilizzo diandroid:defaultValue="@null"
. b/128531879 - Safe Args ora dipende da KotlinPoet 1.1.0, risolvendo un problema con nomi dei pacchetti estremamente lunghi. b/123654948
Versione 2.0.0
Versione 2.0.0
14 marzo 2019
La navigazione 2.0.0
viene rilasciata senza modifiche rispetto a 2.0.0-rc02
.
Versione 2.0.0-rc02
6 marzo 2019
Navigation 2.0.0-rc02 fornisce nuovi artefatti con l'ID gruppo androidx.navigation
e modifica le dipendenze con gli equivalenti AndroidX.
Il comportamento della versione 2.0.0-rc02 è identico a quello della versione 1.0.0-rc02 di Navigation e non dovrebbero essere necessarie modifiche al codice per l'aggiornamento dalla versione 1.0.0-rc02, oltre all'aggiornamento delle dipendenze in modo che corrispondano alle nuove dipendenze.
Per utilizzare le release 2.X di Navigation, il progetto deve aver eseguito la migrazione ad AndroidX. La versione stabile 1.0 di Navigation sarà l'ultima release a utilizzare le dipendenze della libreria di supporto. Tutti gli sviluppi futuri successivi alla versione 1.0 si baseranno su AndroidX e sulla release stabile 2.0.
Dipendenze precedenti ad AndroidX
Per le versioni precedenti ad AndroidX di Navigation, includi queste dipendenze:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Per Safe Args, aggiungi il
seguente classpath nel file build.gradle
di primo livello
buildscript {
repositories {
google()
}
dependencies {
classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0"
}
}
Versione 1.0.0
Versione 1.0.0
14 marzo 2019
La navigazione 1.0.0
viene rilasciata senza modifiche rispetto a 1.0.0-rc02
.
Versione 1.0.0-rc02
26 febbraio 2019
Questo è il secondo candidato per la release stabile 1.0.0 di Navigation. Questa release contiene una serie di correzioni di bug.
Correzioni di bug
- Risolto un problema per cui
popBackStack()
veniva ignorato se il grafico radice non aveva un ID b/126251695 navigateUp()
ora gestisce correttamente il ritorno all'attività dell'app quando viene chiamato dopo la gestione di un link diretto senzaFLAG_ACTIVITY_NEW_TASK
b/126082008- È stato risolto un problema relativo a
ActivityNavigator.applyPopAnimationsToPendingTransition
che non applicava l'animazione di uscita corretta b/126237567 - Il codice Kotlin generato da Safe Args ora esegue correttamente l'escape delle parole chiave Kotlin
come
in
efun
nel nome del pacchetto associato alla classeR
. b/126020455
Versione 1.0.0-rc01
21 febbraio 2019
Questo è un candidato per la release stabile 1.0.0 di Navigation. Questa release contiene una correzione di bug.
Correzioni di bug
- È stato risolto un problema durante l'utilizzo di Fragment e delle operazioni di navigazione
singleTop
b/124294805
Versione 1.0.0-beta02
12 febbraio 2019
Questa release include una serie di miglioramenti minori e importanti correzioni di bug.
Nuove funzionalità
- Ora puoi utilizzare
0
comeandroid:defaultValue
per gli argomentireference
. b/124248602
Modifiche al funzionamento
- Ora le corrispondenze esatte dei link diretti hanno la priorità sui link diretti con corrispondenze di
.*
o argomenti. b/123969518
Correzioni di bug
popBackStack()
enavigateUp
ora restituiscono correttamentefalse
quando viene estratta l'ultima destinazione dallo stack precedente, correggendo una regressione introdotta in1.0.0-beta01
. b/123933201- La navigazione ora imposta correttamente
ClassLoader
durante il ripristino dello stato dell'istanza salvata, evitando problemi quando si utilizzano classi personalizzate nello stato salvato diNavigator
o negli argomenti inviati a unNavDestination
. b/123893858 - Le classi NavArgs generate da Safe Args non vanno più in arresto anomalo durante il ripristino di un argomento
Parcelable[]
dallo stato dell'istanza salvata. b/123963545 - Safe Args ora pulisce correttamente le classi Kotlin generate non necessarie. b/124120883
Versione 1.0.0-beta01
4 febbraio 2019
Si tratta della prima release beta di Navigation. In futuro, l'API Navigation dovrebbe rimanere stabile fino alla versione successiva, a meno che non si verifichi un problema critico. Questa release contiene alcune correzioni di bug e modifiche del comportamento.
Modifiche al funzionamento
- La navigazione ora garantisce che i valori predefiniti degli argomenti vengano trattati in modo identico
in fase di runtime e tramite Safe Args. Di conseguenza, solo gli argomenti con un
app:argType="reference"
possono avere un valore predefinito che punta a un'altra risorsa (ad esempio,@color/colorPrimary
). Il tentativo di utilizzare un valore predefinito di riferimento con unapp:argType
diverso genererà un'eccezione durante l'analisi dell'XML di navigazione. b/123551990 - Safe Args ora dipende dal plug-in Android per Gradle 3.3.0 aosp/888413
- Safe Args ora dipende da Kotlin 1.3.20 aosp/888414
Correzioni di bug
- Ora Safe Args può essere utilizzato nei moduli di libreria e funzionalità in tutte le versioni del plug-in Android per Gradle. b/121304903
- È stato corretto un problema di regressione che causava l'uscita di tutte le copie di una destinazione dalla parte superiore dello stack precedente con una singola operazione
popBackStack()
, anziché di una sola destinazione alla volta. b/123552990 - È stato risolto un problema per cui lo stato
FragmentNavigator
veniva desincronizzato con lo stato diNavController
, causando unIllegalStateException
quando si tentava di ripristinare lo stack precedente. b/123803044 - È stato risolto un problema per cui la freccia indietro gestita da
NavigationUI
non veniva visualizzata quando si utilizzava ProGuard con l'offuscamento. b/123449431 - Il codice generato da Safe Args ora gestisce correttamente l'utilizzo di un
app:argType
che punta a una classe interna statica nel formato.OuterClass$InnerClass
. b/123736741 - Il codice Java generato da Safe Args ora gestisce correttamente le azioni globali e le destinazioni nidificate in profondità. b/123347762
Versione 1.0.0-alpha11
23 gennaio 2019
Questa è una release di correzione rapida di 1.0.0-alpha10
che risolve un problema relativo a Safe Args.
Correzioni di bug
- Risolve un problema per cui Safe Args non riusciva a importare la classe Directions associata alle azioni globali. b/123307342
Versione 1.0.0-alpha10
23 gennaio 2019
Problemi noti
- Safe Args non riesce a importare la classe Directions associata alle azioni globali. b/123307342
Questa release contiene modifiche che provocano errori nell'API. Consulta la sezione Modifiche che provocano errori di seguito.
Nuove funzionalità
- Gli utenti Kotlin ora possono utilizzare il delegato di proprietà
by navArgs()
per ottenere in modo differito un riferimento a una classeNavArgs
generata da Safe Args in unActivity
oFragment
. b/122603367 - Safe Args ora ti consente di generare codice Kotlin applicando il plug-in
androidx.navigation.safeargs.kotlin
. Il codice Kotlin è creato appositamente per i moduli solo Kotlin, utilizzando argomenti predefiniti e classi immutabili rispetto al pattern builder ancora disponibile tramite il plug-inandroidx.navigation.safeargs
precedente. b/110263087
Modifiche al comportamento
- Ora i link diretti corrispondenti sono orientati verso il link diretto con il maggior numero di argomenti corrispondenti. b/118393029
- La chiamata a
setGraph()
su unNavController
ora reimposta lo stack indietro. b/111450672 - I link diretti sconosciuti non generano più un
IllegalStateException
, ma vengono ignorati, risolvendo i problemi relativi aNavHostFragment
nidificati o multipli. b/121340440
Modifiche che provocano un errore
- Il metodo
NavOptions.applyPopAnimationsToPendingTransition()
per applicare le animazioni pop a un'attività è stato spostato inActivityNavigator
. b/122413117 - Safe Args ora evita di duplicare classi identiche per le azioni senza
argomenti. Il tipo restituito per i metodi senza argomenti nelle classi NavDirections
generate è ora
NavDirections
. b/123233147 - Le classi Directions generate da Safe Args non hanno più un costruttore pubblico. Devi interagire solo con i metodi statici generati. b/123031660
- Le classi
NavDirections
generate da Safe Args non hanno più un costruttore pubblico. Devono essere generate solo tramite i metodi statici nelle classi Directions generate.b/122963206 - Il valore
Bundle
restituito daNavDirections
'getArguments()
ora è contrassegnato come@NonNull
anziché@Nullable
. b/123243957
Correzioni di bug
NavDeepLinkBuilder
ora gestisce correttamente piùPendingIntent
simultanei alla stessa destinazione utilizzando gli argomenti che trasmetti per determinare l'unicità. b/120042732NavController
ora gestisce correttamente le operazionipopBackStack()
quando utilizzi unNavHostFragment
nidificato o altri fragment secondari con uno stack precedente. b/122770335NavigationUI
ora imposta correttamente la descrizione dei contenuti del pulsante Su. b/120395362- Le classi Directions generate da Safe Args ora gestiscono correttamente le azioni globali che hanno lo stesso ID di un'azione su una destinazione. b/122962504
- Le classi
NavDirections
generate da Safe Args ora hanno correttamente valorihashCode()
uguali quandoequals()
restituirebbe true. b/123043662 FragmentNavigator
ora genera un messaggio di errore migliore se tenti di eseguireFragmentTransactions
personalizzate sulleNavHostFragment
dell'FragmentManager
. Devi sempre utilizzaregetChildFragmentManager()
. b/112927148
Versione 1.0.0-alpha09
18 dicembre 2018
Questa release contiene modifiche che provocano errori nell'API. Consulta la sezione Modifiche che provocano errori di seguito.
Abbiamo scelto di non continuare lo sviluppo dell'artefatto
android.arch.navigation:navigation-testing
. Sebbene si sia dimostrato
utile per i test interni di NavController
, consigliamo vivamente
strategie di test alternative, come la simulazione dell'istanza NavController
per verificare che vengano effettuate le chiamate navigate()
corrette. Questo
approccio è descritto in dettaglio nella
presentazione su Single Activity all'AndroidDevSummit 2018
e lavoreremo su ulteriore documentazione specificamente incentrata sui test
con Navigation.
Nuove funzionalità
- Le
MenuItem
conmenuCategory="secondary"
non verranno più visualizzate quando vengono utilizzate con i metodiNavigationUI
. b/120104424 AppBarConfiguration
ora ti consente di impostare un'istanza diOnNavigateUpListener
di riserva che verrà chiamata quandonavController.navigateUp()
restituiscefalse
. b/79993862 b/120690961
Modifiche che provocano un errore
- Quando utilizzi un
<argument>
con unargType="reference"
, la navigazione non analizza più il riferimento, ma fornisce l'ID risorsa non elaborato. b/111736515 onNavDestinationSelected()
ora torna alla destinazione iniziale del grafico di navigazione per impostazione predefinita, rendendoli coerenti con i metodisetup
. AggiungimenuCategory="secondary"
al tuoMenuItem
per evitare di estrarre lo stack precedente. aosp/852869- I metodi
fromBundle()
delle classiArgs
generate ora accettano unBundle
non nullo anziché unBundle
annullabile. aosp/845616
Correzioni di bug
- Gli argomenti ora vengono analizzati correttamente dai link diretti come
argType
anziché sempre come stringhe b/110273284 - La navigazione ora esporta correttamente le risorse pubbliche b/121059552
- Safe Args è ora compatibile con il plug-in Android per Gradle 3.4 Canary 4 e versioni successive b/119662045
Versione 1.0.0-alpha08
6 dicembre 2018
Questa release contiene modifiche che provocano errori nell'API. Consulta la sezione Modifiche che provocano errori di seguito.
Nuove funzionalità
- Le etichette di destinazione, se utilizzate con i metodi
NavigationUI
, ora sostituiranno automaticamente le istanze{argName}
nel tuoandroid:label
con l'argomento corretto b/80267266 - La navigazione ora dipende dalla libreria di supporto 28.0.0 b/120293333
Modifiche che provocano un errore
OnNavigatedListener
è stato rinominato inOnDestinationChangedListener
b/118670572OnDestinationChangedListener
ora passa anche ilBundle
degli argomenti aosp/837142- Gli attributi
app:clearTask
eapp:launchDocument
e i relativi metodi sono stati rimossi. Utilizzaapp:popUpTo
con la radice del grafico per rimuovere tutte le destinazioni dallo stack precedente. b/119628354 ActivityNavigator.Extras
ora utilizza un patternBuilder
e aggiunge la possibilità di impostare qualsiasi flagIntent.FLAG_ACTIVITY_
aosp/828140NavController.onHandleDeepLink
è stato rinominato inhandleDeepLink
aosp/836063- Molte classi e metodi non destinati alla creazione di sottoclassi, ad esempio
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, sono stati resifinal
aosp/835681 - Il metodo
NavHostFragment.setGraph()
obsoleto è stato rimosso aosp/835684 - Il metodo
NavigationUI.navigateUp(DrawerLayout, NavController)
obsoleto è stato rimosso. aosp/835684 - La creazione di frammenti è stata spostata in
FragmentNavigator
, il che semplifica la delega della creazione di frammenti a unFragmentFactory
. b/119054429 - Il costruttore per
NavGraphNavigator
non accetta piùContext
aosp/835340 - NavigatorProvider ora è
una classe, anziché un'interfaccia. Il
NavigatorProvider
restituito dagetNavigatorProvider()
non ha modificato la sua funzionalità. aosp/830660 NavDestination.navigate()
è stato rimosso. Chiamanavigate()
al numeroNavigator
invece. aosp/830663- Refactoring significativo di
Navigator
, che non richiede piùOnNavigatorNavigatedListener
e fa sì chenavigate
restituiscaNavDestination
a cui è stata eseguita la navigazione. - Le istanze
Navigator
non possono più inviare eventi popup aNavController
. Valuta la possibilità di utilizzare unOnBackPressedCallback
per intercettare le pressioni del pulsante Indietro e chiamarenavController.popBackStack()
. aosp/833716
Correzioni di bug
popUpTo
ora funziona in modo coerente quando la destinazione è un elemento<navigation>
b/116831650- Sono stati corretti diversi bug che causavano un
IllegalArgumentException
quando venivano utilizzati grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - L'attributo
dataPattern
delle destinazioni<activity>
ora compilerà gli argomenti da argomenti non stringa chiamandotoString()
b/120161365
Safe Args
- Safe Args supporta gli oggetti serializzabili, inclusi i valori Enum. I tipi enum
possono impostare un valore predefinito utilizzando il valore letterale enum senza il nome della classe
(ad es.
app:defaultValue="READ"
) b/111316353 - Safe Args supporta array di tutti i tipi supportati b/111487504
- Safe Args ora ignora le sottocartelle delle directory delle risorse b/117893516
- Safe Args aggiunge annotazioni
@Override
ove opportuno b/117145301
Versione 1.0.0-alpha07
29 ottobre 2018
Nuove funzionalità
- Una nuova classe AppBarConfiguration ti consente di personalizzare le destinazioni considerate di primo livello. Per ulteriori dettagli, consulta la documentazione aggiornata. b/117333663
- Ora puoi passare argomenti alla destinazione iniziale del grafico b/110300470
- Ora i link diretti supportano schemi personalizzati con punti, trattini e segni più. b/112806402
Modifiche che provocano un errore
- Il modulo
navigation-testing-ktx
è stato integrato innavigation-testing artifact
e non verrà più pubblicato. - L'artefatto
navigation-testing
ora ha una dipendenza dalla libreria standard Kotlin. L'API è stata modificata per essere più coerente con le convenzioni di Kotlin, ma puoi continuare a utilizzarla per i test scritti in Java. - I grafici di navigazione registrati nel manifest dei metadati non sono più supportati. b/118355937
- Le azioni non possono più essere associate alle destinazioni <activity>. aosp/785539
Correzioni di bug
- Ora i link diretti analizzano correttamente i parametri di ricerca. b/110057514
- Le destinazioni delle attività ora applicano correttamente tutte le animazioni di entrata e uscita. b/117145284
- È stato corretto un arresto anomalo che si verifica dopo le modifiche alla configurazione quando si utilizzano navigatori personalizzati. b/110763345
Safe Args
- Safe Args ora ha una dipendenza fissa dal plug-in Android per Gradle 3.2.1. b/113167627
- Ora è possibile generare indicazioni per le classi interne. b/117407555
- È stato risolto un problema relativo alla generazione di indicazioni stradali per un grafico <include>. b/116542123
Versione 1.0.0-alpha06
20 settembre 2018
Nuove funzionalità
- Le transizioni degli elementi condivisi per le destinazioni Fragment e Activity sono ora supportate b/79665225. Per maggiori informazioni, vedi Implementare la navigazione con il componente dell'architettura di navigazione.
- La selezione di un elemento in
NavigationView
ora chiuderà qualsiasi foglio inferiore contenente b/112158843
Modifiche alle API
- Modifica che causa interruzione: il metodo Navigator
navigate()
ora accetta un parametroNavigator.Extras
. - Il metodo
getGraph()
di NavController ora èNonNull
b/112243286
Correzioni di bug
NavigationUI.setupWithNavController()
non perde più le visualizzazioni se utilizzato con le visualizzazioni delle singole destinazioni b/111961977- Navigator
onSaveState()
ora viene chiamato una sola volta b/112627079
Safe Args
- Le classi di indicazioni stradali della destinazione di navigazione ora estendono la classe di indicazioni stradali principale, se esistente b/79871405
- Le classi Directions e Args ora hanno un'implementazione
toString()
utile b/111843389
Versione 1.0.0-alpha05
10 agosto 2018
Correzioni di bug
- È stato corretto un bug che causava un comportamento errato dello stack di attività. b/111907708
- Correzione di un bug in
equals()
delle classi Generated Args. b/111450897 - Correzione di un errore di build in Safe Args. b/109409713
- Correggi una conversione dagli identificatori di risorsa ai nomi Java b/111602491
- Correggere i messaggi di errore relativi alla nullabilità nel plug-in Safe Args.
- Aggiungi le annotazioni di nullabilità mancanti.
Versione 1.0.0-alpha04
19 luglio 2018
La navigazione 1.0.0-alpha04
e il plug-in Gradle Safe Args associato contengono una serie di modifiche alle API, modifiche al comportamento e correzioni di bug.
Modifiche al comportamento / alle API
- NavHostFragment imposterà sempre il Fragment corrente come fragment di navigazione principale, assicurandosi che i fragment manager secondari vengano rimossi prima che venga rimosso il NavController esterno b/111345778
Safe Args
- Modifica che provoca un errore:
app:type
è stato modificato inapp:argType
per evitare conflitti con altre librerie come ConstraintLayout 2.0.0-alpha1 b/111110548 - I messaggi di errore di Safe Args ora sono selezionabili b/111534438
- Le classi Args ora confermano che gli attributi
NonNull
non sono effettivamente nulli b/111451769 - Sono state aggiunte annotazioni
NonNull
aggiuntive alle classi generate NavDirections e Args b/111455455 b/111455456
Correzioni di bug
- È stato risolto un problema con il pulsante Indietro del sistema dopo il deep linking a una destinazione di frammento b/111515685
Versione 1.0.0-alpha03
12 luglio 2018
La navigazione 1.0.0-alpha03
e il plug-in Gradle Safe Args associato contengono una serie di modifiche alle API, modifiche al comportamento e correzioni di bug.
Modifiche al comportamento / alle API
- È stato aggiunto un metodo NavigationUI.setupWithNavController per la barra degli strumenti b/109868820
- È stato aggiunto un metodo NavigationUI.setupWithNavController per CollapsingToolbarLayout b/110887183
- popBackStack() ora restituisce false quando lo stack delle attività precedenti è vuoto o quando l'ID destinazione specificato non è presente nello stack delle attività precedenti b/110893637
- FragmentNavigator ora ignora le operazioni di navigazione dopo che FragmentManager ha salvato lo stato, evitando le eccezioni "Can not perform this action after onSaveInstanceState" b/110987825
Safe Args
- Modifica sostanziale: i caratteri non alfanumerici nei nomi di azioni e argomenti verranno sostituiti dalla notazione camel case nei rispettivi nomi dei metodi NavDirections
- Ad esempio,
DemoController.index
diventeràsetDemoControllerIndex
b/79995048 - Ad esempio,
action_show_settings
diventeràactionShowSettings
b/79642240
- Ad esempio,
- Modifica sostanziale: gli argomenti ora sono considerati non nulli per impostazione predefinita. Per consentire valori null su argomenti stringa e parcelable, aggiungi
app:nullable="true"
b/79642307 - Ora puoi utilizzare
app:type="long"
con defaultValues nel formato "123L" b/79563966 - Ora sono supportati gli argomenti Parcelable, utilizzando un nome di classe completo per
app:type
. L'unico valore predefinito supportato è"@null"
b/79563966 - Le classi Args ora implementano
equals()
ehashCode()
b/79642246 - Il plug-in Safe Args ora può essere applicato ai progetti di libreria b/80036553
- Il plug-in Safe Args ora può essere applicato ai progetti delle funzionalità b/110011752
Correzioni di bug
- Sono stati risolti i problemi di navigazione durante i metodi del ciclo di vita dei fragment b/109916080
- Risolti problemi durante la navigazione ripetuta tra grafici nidificati b/110178671
- Sono stati risolti i problemi relativi all'utilizzo di
setPopUpTo
con la prima destinazione nel grafico b/109909461 - È stato risolto il problema per cui tutti i valori di
app:defaultValue
venivano passati come stringhe b/110710788 - aapt2 incluso in Android Gradle Plugin 3.2 Beta 01 ora aggiunge regole di conservazione per ogni attributo
android:name
nei file XML di navigazione b/79874119 - È stata corretta la perdita di memoria durante la sostituzione di FragmentNavigator predefinito b/110900142
Versione 1.0.0-alpha02
7 giugno 2018
Modifiche al comportamento
FragmentNavigator
ora utilizzasetReorderingAllowed(true)
. b/109826220La navigazione ora decodifica gli argomenti analizzati dagli URL dei link diretti. b/79982454
Correzioni di bug
È stato corretto un
IllegalStateException
durante la chiamata a Navigate dai metodi del ciclo di vita di Fragment. b/79632233La navigazione ora dipende dalla libreria di supporto 27.1.1 per correggere lo sfarfallio durante l'utilizzo delle animazioni. b/80160903
È stato corretto un
IllegalArgumentException
quando si utilizza defaultNavHost="true" come fragment secondario. b/79656847È stato corretto un
StackOverflowError
durante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato corretto un
IllegalArgumentException
durante la navigazione a ritroso in un grafico nidificato. b/80453447È stato risolto un problema relativo alla sovrapposizione di frammenti quando si utilizzava
launchSingleTop
. b/79407969La navigazione ora crea lo stack precedente sintetico corretto per i grafici nidificati. b/79734195
NavigationUI ora evidenzia l'elemento corretto quando si utilizza un grafico nidificato come
MenuItem
. b/109675998
Modifiche alle API
L'attributo
clearTask
per le azioni e l'API associata inNavOptions
sono stati ritirati. b/80338878L'attributo
launchDocument
per le azioni e l'API associata inNavOptions
sono stati ritirati. b/109806636
Versione 1.0.0-alpha01
8 maggio 2018
Navigation fornisce un framework per la creazione della navigazione
in-app. Questa release iniziale è 1.0.0-alpha01
.