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 | Release beta | Release alpha |
|---|---|---|---|---|
| 24 settembre 2025 | 2.9.5 | - | - | - |
Dichiara le 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 necessari 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.5" // 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.5" // 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.5" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.9.5" 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 Aggiungi 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 segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. 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.5
24 settembre 2025
androidx.navigation:navigation-*:2.9.5 è stato rilasciato. La versione 2.9.5 contiene questi commit.
Correzioni di bug
- Navigation Safe Args ora può gestire il supporto di AGP 9.0 per Kotlin integrato. (I1d9d76)
Aggiornamento delle dipendenze
- Il plug-in Navigation Safe Args ora dipende dal plug-in Android per Gradle versione 8.4.2. (b/431847270, I5932a)
Versione 2.9.4
10 settembre 2025
androidx.navigation:navigation-*:2.9.4 è stato rilasciato. La versione 2.9.4 contiene questi commit.
Correzioni di bug
- Evita l'arresto anomalo quando un evento di navigazione predittiva viene inviato a metà frame dopo che il gestore è stato disattivato in una transizione
NavHost. (I5667c, b/384186542)
Versione 2.9.3
30 luglio 2025
androidx.navigation:navigation-*:2.9.3 è stato rilasciato. La versione 2.9.3 contiene questi commit.
Correzioni di bug
- È stato corretto un errore in
NavControllerche causava unConcurrentModificationExceptionquando si utilizzavaOnDestinationChangedListeners. (If7406, b/417784831) - È stato corretto un errore durante l'utilizzo di
navigate(uri, navOptions,navigationExtras)in cui gli extra venivano ignorati. (I67fb7, b/430336813)
Versione 2.9.2
16 luglio 2025
androidx.navigation:navigation-*:2.9.2 è stato rilasciato. La versione 2.9.2 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui la voce non veniva riprodotta quando la finestra di dialogo sopra la voce veniva chiusa (Idb20e, b/418746335)
- È stato corretto l'errore
MissingFieldExceptiondurante il test diSavedStateHandlecon route type-safe durante l'utilizzo diNavTypespersonalizzato. (I2f843, b/421002511)
Versione 2.9.1
2 luglio 2025
androidx.navigation:navigation-*:2.9.1 è stato rilasciato. La versione 2.9.1 contiene questi commit.
Correzioni di bug
- Risolto un problema che impediva agli
NavEntriesistanziati 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 è stato rilasciato. La versione 2.9.0 contiene questi commit.
Modifiche importanti dalla versione 2.8.0
- Le azioni di Navigation Safe Args ora vengono generate con l'annotazione
@CheckResultper 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 aNavControllerche queste destinazioni verranno mostrate insieme ad altre. Utilizzando questa interfaccia, è possibileRESUMEDpiù destinazioni contemporaneamente, ad esempio.
Compose Kotlin Multiplatform
- La navigazione ora offre una nuova funzione comune
NavController.handleDeepLink()che accetta unNavDeepLinkRequestanziché 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 è stato rilasciato. 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 è stato rilasciato. La versione 2.9.0-beta01 contiene questi commit.
Modifiche alle API
- L'API comune di
parseStringAsNavUriè stata modificata in una funzione di fabbricaNavUriche 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 è stato rilasciato. La versione 2.9.0-alpha09 contiene questi commit.
Nuove funzionalità
- Il modulo
navigation-testingora 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 è stato rilasciato. 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 è stato rilasciato. La versione 2.9.0-alpha07 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui il tentativo di
saveStatecon 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 di
NavDeepLinkin 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) - 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 di
Intent. I link diretti devono corrispondere solo ai campi che contengono, mentre 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 è stato rilasciato. La versione 2.9.0-alpha06 contiene questi commit.
Nuove funzionalità
- Le azioni di Navigation Safe Args ora vengono generate con l'annotazione
@CheckResultper garantire che vengano utilizzate. (I14d4c, b/356323084)
Correzioni di bug
- È stato corretto un errore in
NavControllerin 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 è stato rilasciato. La versione 2.9.0-alpha05 contiene questi commit.
Correzioni di bug
- È stato risolto un problema che causava un'animazione di ridimensionamento imprevista quando si utilizzava Navigation Compose. (I480f4, b/353294030)
- Da Navigazione
2.8.6: le etichetteNavDestinationfornite tramite XML verranno analizzate tramiteNavType.getper garantire che la logicaNavTypepersonalizzata venga rispettata. (I7ec2f, b/388100796) - Da Navigazione
2.8.6: quando si passa a un'attività condataPattern,ActivityNavigatorora tenterà 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 è stato rilasciato. 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.setStartDestinationspecifico 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 qualeNavHostpoteva generare un'eccezione all'interno diPredictiveBackHandlerse 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 correttoNavDestinationNullPointerExceptiondurante l'aggiornamento distartDestinationdi 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 richiedereNavTypepersonalizzati. Grazie Csaba Kozák. (GH-725, b/375559962)
Versione 2.9.0-alpha03
13 novembre 2024
androidx.navigation:navigation-*:2.9.0-alpha03 è stato rilasciato. 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 corretto un
ConcurrentModificationExceptionche poteva verificarsi quando unLifecycleObservercollegato a unNavBackStackEntryattivava una modifica dello stack precedente quando l'hostLifecycleOwner, 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 è stato rilasciato. 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 è stato rilasciato. 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 aNavControllerche queste destinazioni verranno mostrate insieme ad altre. Utilizzando questa interfaccia, è possibileRESUMEDpiù destinazioni contemporaneamente, ad esempio. (Id5559) - Da Navigazione
2.8.3: sono stati aggiunti nuovi controlli lint per i modulinavigation-common,navigation-runtimeenavigation-composeper identificare eventuali route type-safe non annotate correttamente con@Serializable. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Da Navigation
2.8.3: sono stati aggiunti nuovi controlli lint per i modulinavigation-common,navigation-runtimeenavigation-composeper 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 estensioneNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Modifiche al comportamento
- Il tentativo di utilizzare un
NavControllerche è stato precedentementeDESTROYEDora causerà unIllegalStateException. (I520da, b/369616172)
Correzioni di bug
- Aggiorna l'eccezione Enum class not found per suggerire l'utilizzo dell'annotazione
@Keepnel 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 linting aggiunte in
Navigation 2.8.*che causano un erroreObsolete custom lint checkquando si tenta di eseguire linting 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 è stato rilasciato. 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 è stato rilasciato. 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
NavDeepLinkin 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 di
Intent. I link diretti devono corrispondere solo ai campi che contengono, mentre 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 è stato rilasciato. 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 è stato rilasciato. La versione 2.8.6 contiene questi commit.
Correzioni di bug
- Le etichette
NavDestinationfornite tramite XML verranno analizzate tramiteNavType.getper garantire il rispetto della logicaNavTypepersonalizzata. (Id366d, b/388100796) - Quando si passa all'attività con
dataPattern,ActivityNavigatorora tenta di codificare il valore dell'argomento conNavType. (I1a71d, b/383616432)
Versione 2.8.5
11 dicembre 2024
androidx.navigation:navigation-*:2.8.5 è stato rilasciato. La versione 2.8.5 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
NavHostpoteva generare un'eccezione all'interno diPredictiveBackHandlerse lo stack precedente veniva ridotto a una voce e veniva attivato un pulsante Indietro del sistema nello stesso frame. (I1a429, b/375343407) - È stato corretto
NavDestinationNullPointerExceptiondurante l'aggiornamento distartDestinationdi un grafico. (I99421, b/361560785) - Risolto un problema che causava un'animazione di scalabilità imprevista quando si utilizzava Navigation Compose e si chiamava navigate nello stesso frame in cui termina l'animazione corrente. (I26cb1, b/353294030)
- È stato corretto un
ConcurrentModificationExceptionche poteva verificarsi quando unLifecycleObservercollegato a unNavBackStackEntryattivava una modifica dello stack precedente quando l'hostLifecycleOwner, 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 richiedereNavTypepersonalizzati. Grazie Csaba Kozák. (GH-725, b/375559962)
Versione 2.8.4
13 novembre 2024
androidx.navigation:navigation-*:2.8.4 è stato rilasciato. 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 unNavControllerche è stato precedentementeDESTROYEDora causerà unIllegalStateException. (I520da, b/369616172)
Versione 2.8.3
16 ottobre 2024
androidx.navigation:navigation-*:2.8.3 è stato rilasciato. La versione 2.8.3 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti nuovi controlli lint per i moduli
navigation-common,navigation-runtimeenavigation-composeper identificare eventuali route type-safe non annotate correttamente con@Serializable. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Sono stati aggiunti nuovi controlli lint per i moduli
navigation-common,navigation-runtimeenavigation-composeper 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 estensioneNavGraphBuildereNavDeepLinkBuilder. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Correzioni di bug
- È stato risolto un problema per cui le nuove regole di lint aggiunte in
Navigation 2.8.*causavano un erroreObsolete custom lint checkquando 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 è stato rilasciato. 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 richiedereNavTypepersonalizzati. (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 è stato rilasciato. La versione 2.8.1 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola lint per garantire l'utilizzo della funzione
popBackStackche accetta un tipo di classe reificato quando si tenta dipopBackStackutilizzando API type-safe. (Ief161, b/358095343)
Correzioni di bug
- Ora la navigazione richiede che la rotta passata a
NavGraph'sstartDestinationcontenga i valori per 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 eseguire il deep linking di un
NavDestination, tranne che tramite un deep link 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)
- Navigation Compose ora dipende da Compose
1.7.2.
Versione 2.8.0
4 settembre 2024
androidx.navigation:navigation-*:2.8.0 è stato rilasciato. 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 con sicurezza dei 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 sulla sicurezza dei tipi di Navigation Compose Meet.
Navigazione indietro predittiva di Composizione
- Navigation Compose ora supporta la funzionalità Indietro predittivo in-app tramite le nuove API
SeekableTransitionStatedi 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-composeche include un'alternativaComposableNavHostFragmentaNavHostFragmentche ti consente di aggiungere destinazioni componibili ai tuoi file XML di navigazione. Ogni destinazionecomposabledeve essere espressa come metodo@Composabledi primo livello senza argomenti, il cui nome completo viene utilizzato come attributoandroid:namein 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 arrayNavTypepredefiniti (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeeStringArrayType) ora ereditano da questa nuova classe. NavTypeora 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 è stato rilasciato. La versione 2.8.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo della navigazione quando vengono passate 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 è stato rilasciato. 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 tipi diEnumnon richiedono piùNavTypepersonalizzati. Tieni presente che ilEnumdiSerialNamedeve essere il nome completo predefinito. (I66d22, b/346475493) - La navigazione in Safe Args ha aggiunto il supporto integrato per i tipi di argomenti nullabili,tra cui
Int?,Long?,Float?,Boolean?eEnum<*>?. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - Il
startDestinationdiNavGraphora utilizzerà i valori degli argomenti predefiniti se la routestartDestinationpassata aNavGraphè esattamente uguale astartDestination.route. (I13762, b/354046047)
Versione 2.8.0-beta06
24 luglio 2024
androidx.navigation:navigation-*:2.8.0-beta06 è stato rilasciato. La versione 2.8.0-beta06 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui i controlli lint
WrongStartDestinationTypenon 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 è stato rilasciato. La versione 2.8.0-beta05 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo della navigazione
singleTopquandoNavGraphsnidificati condividono lo stesso percorsostartDestination. (I17b94, b/294408596)
Versione 2.8.0-beta04
26 giugno 2024
androidx.navigation:navigation-*:2.8.0-beta04 è stato rilasciato. 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
SavedStateHandleFactoryora 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)
- Risolto un problema in Navigation Compose per cui, dopo aver annullato il gesto Indietro predittivo, l'
NavBackStackEntrya 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 è stato rilasciato. La versione 2.8.0-beta03 contiene questi commit.
Modifiche alle API
CollectionNavTypeha un nuovo metodo di estrazioneemptyCollection(). Esegui l'override di questo metodo per gestire una raccolta vuota passata come argomento. (Ie4d84, b/341723133)
Correzioni di bug
- È stata aggiunta la documentazione su
NavType.serializeAsValueeserializeAsValuesper 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 argomentoCollectionNavTypenull. Quando si naviga con unCollectionNavTypenull, 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 è stato rilasciato. La versione 2.8.0-beta02 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo di
ClassCastExceptionquando si utilizzaNavBackStackEntry.toRoutecon unNavTypepersonalizzato nullable. (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 da 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 è stato rilasciato. La versione 2.8.0-beta01 contiene questi commit.
Modifiche alle API
SavedStateHandle.toRoute()ora accetta un parametrotypeMapper i tipi di argomenti personalizzati. (Ie39fb, b/339026523)- È stata aggiunta un'API di test a
navigation-testingper creare unSavedStateHandleda 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 è stato rilasciato. 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 per 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 sulla sicurezza dei tipi di Navigation Compose Meet.
Nuove funzionalità
- L'artefatto
navigation-fragment-composeora fornisce una composizioneLocalFragmentlocale per i metodi componibili all'interno di unComposableFragment. (If35e5) NavTypeora 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 è stato rilasciato. La versione 2.8.0-alpha07 contiene questi commit.
Nuove funzionalità
Aggiunge un nuovo artefatto
navigation-fragment-composeche include un'alternativaComposableNavHostFragmentaNavHostFragmentche ti consente di aggiungere destinazionicomposableai tuoi file XML di navigazione. Ogni destinazionecomposabledeve essere espressa come metodo@Composabledi primo livello senza argomenti, il cui nome completo viene utilizzato come attributoandroid:namein 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 è stato rilasciato. 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
NavHostora viene utilizzatoAlignment.TopStartcome argomento contentAlignment predefinito. In questo modo, l'impostazione è in linea con il valore predefinito perAnimatedContente vengono corretti alcuni casi di transizione di ridimensionamento imprevista dal centro. (I09e72, b/330111602)- Quando scorri con il gesto di indietro predittivo mentre utilizzi Navigation Compose, l'
NavHostora 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 è stato rilasciato. La versione 2.8.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora puoi passare argomenti a
NavGraph'sstartDestinationdirettamente nella routestartDestinationsenza fare affidamento adefaultValue. Ciò vale anche perNavGraphstartDestinationsnidificati. (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
NavTypepredefiniti (IntArrayType,LongArrayType,FloatArrayType,BoolArrayTypeeStringArrayType) ora sono di tipoCollectionNavType(Idcf79, b/188693139) NavTypeora fornisce una nuova APIvalueEqualsaperta 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 perNavTypesbasati 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
NavControllerche supportano le rotte, comenavigateopopBackStack, ora possono corrispondere correttamente alle rotte compilate con argomenti di ArrayNavTypes. (Iea805, b/327229511)
Versione 2.8.0-alpha04
6 marzo 2024
androidx.navigation:navigation-*:2.8.0-alpha04 è stato rilasciato. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- Ora puoi specificare
SizeTranformper le transizioni in Navigation Compose definendole come parte dell'inizializzazione delle funzionicomposablee/onavigation. (I91062, b/296912651)
Correzioni di bug
- È stato risolto un problema per cui
NavHostin 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 è stato rilasciato. La versione 2.8.0-alpha03 contiene questi commit.
Modifiche alle API
NavBackStackEntry.savedStateHandleora è contrassegnato come@MainThreadperché utilizza codice che deve comunque trovarsi nel thread principale. (Ibb988, b/299523245)
Correzioni di bug
- È stato risolto un problema in Navigazione che causava la
NavGraphViewModels troppo presto perchéDESTROYEDl'ViewModeldella voce associata non faceva parte dello stato salvato. (Ib6bb7, b/317581849)
Aggiornamento delle dipendenze
- Navigation Compose ora dipende da Compose 1.7.0-alpha03.
Versione 2.8.0-alpha02
7 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha02 è stato rilasciato. 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
SeekableTransitionStatedi 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 è stato rilasciato. La versione 2.8.0-alpha01 contiene questi commit.
Correzioni di bug
- È stata corretta la perdita di
BackStackStatein cui più chiamatesaveStatea 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
NavigationUIper 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
NavigationUIper compilare il titolo delle barre delle app.
Versione 2.7.7
Versione 2.7.7
7 febbraio 2024
androidx.navigation:navigation-*:2.7.7 è stato rilasciato. La versione 2.7.7 contiene questi commit.
Correzioni di bug
- Portato da Navigation
2.8.0-alpha01: è stata corretta la perdita diBackStackStatein cui più chiamatesaveState()su un singoloNavBackStackEntrycomportavano 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 helperNavigationUIper 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
NavigationUIper compilare il titolo delle barre delle app.
Versione 2.7.6
Versione 2.7.6
13 dicembre 2023
androidx.navigation:navigation-*:2.7.6 è stato rilasciato. La versione 2.7.6 contiene questi commit.
Correzioni di bug
- La funzione
NavGraphequals()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 è stato rilasciato. 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) NavHostora 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
setGraphpiù di una volta con lo stesso 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 alla configurazione, il relativo
ViewModelora viene cancellato correttamente sesaveStateè false. (Idf242, b/298164648) - È stato risolto un problema per cui
NavControllerpoteva 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 asetGraphsolo 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
ViewModeldei 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 è stato rilasciato. La versione 2.7.4 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto di
popUpToper 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
popUpTocausava l'arresto anomalo diFragmentNavigator. (I3c848, b/301887045) - È stato risolto il problema per cui la pressione del pulsante Indietro del sistema non aggiornava correttamente
currentDestinationin modo che corrispondesse al fragment visualizzato. (Id0d6c, b/289877514) - Il ciclo di vita di
DialogFragmentora passerà correttamente allo statoRESUMEDquando la finestra di dialogo sopra verrà chiusa. (I88f0d, b/301811387)
Versione 2.7.3
Versione 2.7.3
20 settembre 2023
androidx.navigation:navigation-*:2.7.3 è stato rilasciato. 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,Bottomsheetse 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 è stato rilasciato. La versione 2.7.2 contiene questi commit.
Correzioni di bug
- La navigazione ora dipende da Lifecycle
2.6.2, correggendo un'interazione trarememberSaveableeNavHostdi Navigation Compose che causava il mancato ripristino corretto dello statorememberSaveabledelle destinazioni e di qualsiasi istanzaViewModeldiSavedStateHandledopo 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
CREATEDanziché nello statoSTARTED. (aosp/2728520, b/289257213) - È stato risolto un problema che si verificava quando venivano mostrate più finestre di dialogo contemporaneamente in Navigation Compose. 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
STARTEDanziché 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
- Navigation Compose ora dipende da Compose 1.5.1.
Versione 2.7.1
Versione 2.7.1
23 agosto 2023
androidx.navigation:navigation-*:2.7.1 è stato rilasciato. 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.DESTROYEDViewModel. (I1dc11, b/268422136)
Versione 2.7.0
Versione 2.7.0
9 agosto 2023
androidx.navigation:navigation-*:2.7.0 è stato rilasciato. 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 formalmente 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 ARRESTATA e RIPRESA. (Icb6de, b/279118447)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Compose
1.5.0anziché da1.1.0.
Versione 2.7.0-rc01
26 luglio 2023
androidx.navigation:navigation-*:2.7.0-rc01 è stato rilasciato. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui le espressioni lambda
EnterTransitioneExitTransitioncreate nell'ambito diNavHostpotrebbero rimanere in memoria anche dopo la rimozione diNavHostdalla 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 è stato rilasciato. 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 è stato rilasciato. La versione 2.7.0-beta01 contiene questi commit.
Correzioni di bug
NavHostin Navigazione Scrivi ora intercetta correttamente le chiamate di sistema anche dopo cheActivityè statoSTOPPEDeRESUMED. (Icb6de, b/279118447)
Versione 2.7.0-alpha01
24 maggio 2023
androidx.navigation:navigation-*:2.7.0-alpha01 è stato rilasciato. 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 formalmente 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 frammenti per cui la navigazione conpopUpToe l'eliminazione di un frammento 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 è stato rilasciato. La versione 2.6.0 contiene questi commit.
Modifiche importanti alla navigazione dalla versione 2.5.0
NavBackStackEntry'sargumentseargumentspassati a unOnDestinationChangedListenerora 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 aargumentso ad altre istanze diOnDestinationChangedListener.NavDeepLinkora 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.NavTypeora include anche un metodo predefinito che può essere sottoposto a override per combinare due valori analizzati.- Ora le sottoclassi personalizzate di
NavTypepossono eseguire l'override diserializeAsValueper serializzare un valore in una stringa, consentendo la serializzazione e la deserializzazione (tramiteparseValue) di essere completamente incapsulate nella classeNavType.StringTypeora esegue l'override di questo metodo per chiamareUri.encodesulStringspecificato.
Modifiche importanti a Navigation Compose dalla versione 2.5.0
- Quando visualizzi l'anteprima di un elemento componibile con
NavHost, ora viene mostratostartDestinationdi 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
NavDeepLinkvuoto utilizzando il DSL KotlinnavDeepLinkora 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
NavHostFragmentnon intercetta più il pulsante Indietro del sistema. In questo modo, l'FragmentManagersottostante può gestire il pulsante Indietro del sistema. Ciò consente a Fragment1.7.0-alpha01e 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
FragmentTransactionche aggiunge un fragment allo stack di ritorno diFragmentManagerora genererà unIllegalArgumentException. Devi sempre aggiungere i frammenti tramite l'APInavigate(). - Quando utilizzi la stringa esatta
${applicationId}come segnaposto negli attributiapp:dataeapp:dataPatternnell'elemento activity di un file XML di navigazione, il segnaposto viene compilato automaticamente conpackageNamedel contesto al momento dell'inflazione. FragmentNavigatorora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries. Ciò significa che l'effetto specialeNavBackStackEntryLifecycleattenderà il completamento degli effetti speciali di entrata e uscita del frammento prima di spostare ilLifecycle.Statefinale.DialogFragmentNavigatorora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries. Ciò significa cheNavBackStackEntryLifecycleora attenderà cheDialogFragmentLifecyclesi sposti suDESTROYEDprima di spostarsi suDESTROYED.NavHostFragmentora ti consente di recuperareNavControllernon appenaNavHostFragmentviene 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),NavigationUIora considera solo la destinazione iniziale di quel 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 funzioneisTopLevelDestinationsuAppBarConfiguration. - Le integrazioni
setupWithNavControllerinNavigationUIper l'utilizzo della barra delle app superiore ora analizzano i valoriR.stringper gli argomentiReferenceTypetrovati inandroid:labelnei relativi valori stringa anziché restituire l'intero risorsa generato automaticamente. NavigationUIora fornisce i log quando non riesce a navigare tramite unMenuItemselezionato.
Versione 2.6.0-rc02
24 maggio 2023
androidx.navigation:navigation-*:2.6.0-rc02 è stato rilasciato. 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
popUpToe 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 è stato rilasciato. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema in Navigazione con i fragment per cui la rimozione di un fragment tramite navigate con
popUpTonel 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 è stato rilasciato. La versione 2.6.0-beta01 contiene questi commit.
Nuove funzionalità
NavBackStackEntryora fornisce un'implementazione personalizzata ditoString. (Iff00b)
Correzioni di bug
- Quando utilizzi Navigation con i fragment, il tentativo di eseguire manualmente un
FragmentTransactionche aggiunge un fragment allo stack di ritorno diFragmentManagerora genererà unIllegalArgumentException. Devi sempre aggiungere i frammenti tramite l'APInavigate(). (I6d38e) - Quando in uno stesso frame è presente un
navigateche aggiunge una voce e unpopBackStackche la rimuove, la voce in primo piano risultante nello stack precedente tornerà sempre aRESUMEDLifecycle.State. (Id8067, b/276495952)
Versione 2.6.0-alpha09
5 aprile 2023
androidx.navigation:navigation-*:2.6.0-alpha09 è stato rilasciato. La versione 2.6.0-alpha09 contiene questi commit.
Correzioni di bug
- Sono stati corretti i controlli per la route non valida in modo che, se un
NavDestinationcontieneNavArgumentnon annullabile, la route di questa destinazione deve contenere segnaposto per gli argomenti con lo stesso nome diNavArgumentnon annullabile. (Ic62bf, b/274697949) - Le navigazioni di link diretti basate su
Action/MimeTypeora non riusciranno se l'operazione di navigazione non include unNavArgumentnon nullabile richiesto daNavDestinationa cui corrispondeAction/MimeType. (Ibfa17, b/271777424) - Quando
NavControllerimposta 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. È stato corretto un arresto anomalo durante l'utilizzo dionLaunchSingleTopsenza 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 precedente errato. (I5bc58, b/275258161, b/275407804)
Versione 2.6.0-alpha08
22 marzo 2023
androidx.navigation:navigation-*:2.6.0-alpha08 è stato rilasciato. La versione 2.6.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHostFragmentora ti consente di recuperareNavControllernon appenaNavHostFragmentviene allegato aFragmentManager, anziché solo dopoonCreate(). (Ic6382, b/220186282)
Correzioni di bug
- È stato corretto un
NullPointerExceptionquando 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 diNavControllerviene visualizzato nella voce corretta. (I3a8ec, b/270447657) FragmentNavigatorora visualizzerà correttamente le voci quando lo stack precedente viene estratto tramite il pulsante Indietro del sistema opopBackStack()e se la transazione utilizza effetti per il frammento. (I81bdf)- L'aggiunta di frammenti a
FragmentNavigatorFragmentManagersenza 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 è stato rilasciato. La versione 2.6.0-alpha07 contiene questi commit.
Correzioni di bug
- Le varianti delle API
getBackStackEntry,popBackStackeclearBackStackche 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 a
clearBackStack()daNavControllernon 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
MenuItemerrato nelBottomNavigationViewquando 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
NavBackStackEntrynello stato RESUMED quando venivano utilizzati gliAnimation. (Ib3589, b/269646882)
Versione 2.6.0-alpha06
22 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha06 è stato rilasciato. La versione 2.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Quando visualizzi l'anteprima di un elemento componibile con
NavHost, ora viene mostratostartDestinationdi NavGraph per impostazione predefinita. (I2b89f)
Modifiche alle API
- Tutti gli overload di
NavControllernavigateora sono annotati con@MainThreadper garantire che vengano chiamati sul thread principale. (I2c0b0, b/263427111)
Correzioni di bug
- È stato corretto un arresto anomalo durante il tentativo di navigazione durante l'utilizzo della navigazione dinamica dei fragment. (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
NavBackStackEntrynon raggiungeRESUMEDquando 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,BottomMenuItemnon viene aggiornato correttamente. (b/270447657) - Quando si utilizza Navigation con i fragment, dopo il ripristino dello stato
NavBackStackEntryLifecyclenon vieneDESTROYEDquando il relativo fragment èDESTROYED. (b/270610768)
Versione 2.6.0-alpha05
8 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha05 è stato rilasciato. 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)FragmentNavigatorora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries. Ciò significa che l'effetto specialeNavBackStackEntryLifecycleattenderà il completamento degli effetti speciali di entrata e uscita del frammento prima di spostare ilLifecycle.Statefinale. (I3cb19, b/238686802)DialogFragmentNavigatorora utilizza le API di transizione durante la navigazione e la visualizzazione diNavBackStackEntries. Ciò significa cheNavBackStackEntryLifecycleora attenderà cheDialogFragmentLifecyclesi sposti suDESTROYEDprima di spostarsi suDESTROYED. (I53ee5, b/261213893)
Modifiche alle API
NavigatorStateora fornisce l'APIprepareForTransitionper consentire agliNavigatordi spostare gliNavBackStackEntriesnegliLifecycle.Stateintermedi. (I42c21, b/238686802)- Ora puoi accedere allo stack precedente associato a un
NavGraphNavigatoro a unComposeNavigatortramite una proprietàbackstack. OraComposeNavigatorespone anche il callbackonTransitionComplete()per contrassegnare unNavBackStackEntryche ha eseguito un'operazione di navigazione opopBackStackcome completata. (I02062, I718db, b/257519195)
Correzioni di bug
- Lo stato del navigatore ora non esegue alcuna operazione quando vengono utilizzate le API
push/popWithTransitione la voce è già in fase di gestione. (Iadbfa, b/261213893) - Quando utilizzi
launchSingleTopcon unNavGraphnidificato, tutte le destinazioni a partire dalla destinazione originale fino al relativostartDestinationverranno aggiunte correttamente solo alla parte superiore dello stack cronologico. (Id4bea, b/253256629) - La navigazione ora sostituirà correttamente l'istanza
DialogFragmentquando si naviga verso la stessa destinazione con il flaglaunchSingleTopimpostato 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 è stato rilasciato. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- Ora le sottoclassi personalizzate di
NavTypepossono eseguire l'override diserializeAsValueper serializzare un valore in una stringa, consentendo la serializzazione e la deserializzazione (tramiteparseValue) di essere completamente incapsulate nella classeNavType.StringTypeora esegue l'override di questo metodo per chiamareUri.encodesulStringspecificato. (Ie5213, b/247637434) NavigationUIora fornisce i log quando non riesce a navigare tramite unMenuItemselezionato. (I2af5a, b/247730357)
Correzioni di bug
- Ora i link diretti di navigazione vengono analizzati in modo differito anziché durante l'inizializzazione del grafico, il che potrebbe migliorare il rendimento dell'app all'avvio. (Iab0ab)
- È stato corretto l'arresto anomalo causato dalla navigazione verso l'alto dopo il deep linking 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 è stato rilasciato. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.5.3:NavHostnon causerà più unNoSuchElementExceptionquando non è disponibile una 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 è stato rilasciato. 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),NavigationUIora considera solo la destinazione iniziale di quel 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 funzioneisTopLevelDestinationsuAppBarConfiguration. (Ie936e, b/238496771)
Correzioni di bug
- Il componente
navigation:navigation-fragmentora dipende dalla versione1.5.2di 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 è stato rilasciato. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Le integrazioni
setupWithNavControllerinNavigationUIper l'utilizzo della barra delle app superiore ora analizzano i valoriR.stringper gli argomentiReferenceTypetrovati inandroid:labelnei relativi valori stringa anziché restituire l'intero risorsa generato automaticamente. (I5f803, b/167959935) NavDeepLinkora 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.NavTypeora 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:dataeapp:dataPatternnell'elemento activity di un file XML di navigazione, il segnaposto viene compilato automaticamente conpackageNamedel contesto al momento dell'inflazione. (Iaabde, b/234223561) - Il tentativo di creare un
NavDeepLinkvuoto utilizzando il DSL KotlinnavDeepLinkora 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
- È stata aggiunta una nuova funzione di estensione
NavDestinationper analizzare le etichette dinamiche con argomenti nel formatoandroid:label="{arg}"in String. Supporta gli argomentiReferenceTypeanalizzando i valoriR.stringnei relativi valori String. (I07d89, b/236269380)
Modifiche al comportamento
argumentsdi NavBackStackEntry eargumentspassato a unOnDestinationChangedListenerora 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 aargumentso 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 di Fragment quando si passa alla stessa destinazione e si imposta il flaglaunchSingleTopsu true. (I5a2f1, b/237374580) - Da Navigazione
2.5.2: è stato corretto unIllegalStateExceptioncausato dalla navigazione in un grafico a doppio livello 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 è stato rilasciato. La versione 2.5.3 contiene questi commit.
Correzioni di bug
NavHostnon causerà più unNoSuchElementExceptionquando 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 è stato rilasciato. La versione 2.5.2 contiene questi commit.
Correzioni di bug
- La navigazione dinamica ora tenta correttamente di installare le destinazioni di attività da altri moduli prima di raggiungerle. (Ia2c16, b/240292838)
- Ora la navigazione sostituirà correttamente l'istanza Fragment quando si passa alla stessa destinazione e si imposta il flag
launchSingleTopsu true. (I5a2f1, b/237374580) - Risolto il problema
IllegalStateExceptioncausato dalla navigazione in un grafico con doppio livello di nidificazione che condivide un elemento principale con una nuova destinazione iniziale visualizzata in primo piano. (I9f7cb, b/243778589)
Aggiornamento delle dipendenze
- La navigazione
2.5.2ora dipende da Fragment1.5.2. (aosp/2178734)
Versione 2.5.1
27 luglio 2022
androidx.navigation:navigation-*:2.5.1 è stato rilasciato. La versione 2.5.1 contiene questi commit.
Correzioni di bug
Navigation Safe Argsnon 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 Navigation 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 è stato rilasciato. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
- Integrazione di CreationExtras:
Navigationora può fornire unViewModelProvider.Factorystateless tramite Lifecycle2.5.0diCreationExtras.
SafeArgs di Navigation
Navigation Safe Argsha eseguito l'upgrade della dipendenzaAndroid Gradle Pluginper utilizzare7.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
visibleEntriesnon è 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 è stato rilasciato. 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 SafeArgsnon andrà più in crash quando si utilizza unapplicationIdSuffixe uno spazio dei nomi senzaapplicationIdo quandoapplicationIde lo spazio dei nomi sono diversi. (I754b1, b/233119646)NavArgumentora 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 è stato rilasciato. 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
NavHosteDialogHostora vengono eliminati nell'ordine previsto, ovvero i componibili interni vengono eliminati prima di quelli esterni. (I157e6) - Navigation SafeArgs ora utilizza
PathSensitivity.RELATIVEinArgumentsGenerationTaskper 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 lint
UnrememberedGetBackStackEntryDetectorè stata aggiornata per garantire che la chiamatarememberche circonda la chiamata agetBackStackEntry()passi anche in un oggettoNavBackStackEntrycome chiave.(Ib7081, b/227382831)
Versione 2.5.0-beta01
20 aprile 2022
androidx.navigation:navigation-*:2.5.0-beta01 è stato rilasciato. La versione 2.5.0-beta01 contiene questi commit.
Correzioni di bug
DialogNavigatorora utilizzapopWithTransitionquando esegue una chiamatadismiss(). Questo problema risolve una condizione di competizione quando si utilizza unViewModelall'interno della destinazionedialogche causerebbe unIllegalStateExceptionquando si chiude 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 unIllegalStateExceptionquando si annida unNavHostall'interno di un altroNavHostin 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 è stato rilasciato. La versione 2.5.0-alpha04 contiene questi commit.
Modifiche alle API
visibleEntriesnon è più sperimentale. (I4829f, b/225394514)
Correzioni di bug
- NavHost ora dipende da
visibleEntriesdiNavControllerper determinare quali voci comporre. Ciò significa che quando si utilizza NavHost nidificato, l'NavHostinterno ora dovrebbe animarsi correttamente. (I4ba2b, b/225394514) visibleEntriesStateFlowfornito daNavControllerora 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 dinavControllerscende al di sotto di STARTED, l'elenco delle voci visibili rimane invariato. (I9e2a8, b/225394514)SavedStateViewFactoryora supporta l'utilizzo diCreationExtrasanche se è stato inizializzato con unSavedStateRegistryOwner. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583)NavDeepLinkora 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 Argsnon 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 è stato rilasciato. La versione 2.5.0-alpha03 contiene questi commit.
Modifiche alle API
- Ora puoi passare
CreationExtrasaby navGraphViewModelsper creare unViewModel. (I29217, b/217618359)
Correzioni di bug
NavDeepLinksora supporta correttamente i caratteri di nuova riga codificati incorporati negli URI di route/deep link. (I513d1, b/217815060)CreationExtrasora funzionerà correttamente se utilizzato conNavBackStackEntriesper creare ViewModels. (I69161, b/217617710)- Navigation Safe Args ora supporta l'utilizzo dello spazio dei nomi definito
in
build.gradleal posto del pacchetto in AndroidManifest. (I659ef, b/217414933)
Versione 2.5.0-alpha02
9 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha02 è stato rilasciato. La versione 2.5.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.4.1: oraNavHostFragmentimposta correttamenteOnBackPressedDispatcherquando si utilizza viewbinding con grafici nidificati. (Ifbb51, b/214577959) - Da Navigazione
2.4.1: quando il deep linking avviene tramite piùNavGraphnidificati, 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 è stato rilasciato. La versione 2.5.0-alpha01 contiene questi commit.
Nuove funzionalità
NavBackStackEntryora 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
ViewModelcreato tramiteby navGraphViewModels()daonCreate()di un fragment non andava a buon fine e veniva visualizzato unIllegalStateException. (I8a14d) NavDeepLinks 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 è stato rilasciato. La versione 2.4.2 contiene questi commit.
Correzioni di bug
- Portato da Navigazione
2.5.0-alpha03:NavDeepLinksora 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.gradleal posto del pacchetto in AndroidManifest. (I659ef, b/217414933) - Portato da Navigazione
2.5.0-alpha04:Navigation Safe Argsnon si arresterà più in modo anomalo quando si utilizzano gli spazi dei nomi e non è presenteAndroidManifest.xml. (I17ccf, b/227229815) - Eseguito il porting da Navigazione
2.5.0-alpha04: le stringhe vuote sono ora 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 è stato rilasciato. La versione 2.4.1 contiene questi commit.
Correzioni di bug
- Ora
NavHostFragmentimposterà correttamenteOnBackPressedDispatcherquando si utilizza viewbinding con grafici nidificati. (Ifbb51, b/214577959) - Quando il deep linking avviene tramite più
NavGraphnidificati, lo stack indietro ora includerà 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()daonCreate()di un Fragment non riusciva e veniva visualizzato un erroreIllegalStateException. (I8a14d) - Portato da Navigazione
2.5.0-alpha01:NavDeepLinknon 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 è stato rilasciato. 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-ktxsono state spostate nei rispettivi artefatti principali. Gli artefatti-ktxcontinueranno a essere pubblicati, ma sono completamente vuoti. - L'artefatto
navigation-fragmentora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment. Questo frammento utilizza unSlidingPaneLayoutper gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli, che utilizza unNavHostFragmentcome implementazione, come mostrato nella nostra implementazione di esempio. - Il metodo
currentBackStackEntryAsFlow()suNavControllerfornisce unFlowche viene emesso ogni volta che cambia l'NavBackStackEntrycorrente. 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
NavBackStackEntryvisibili comeStateFlowtramite la proprietà sperimentalevisibleEntries. - Ora è possibile estendere la classe
NavTypeper 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 suNavGraphche individua la destinazione di partenza effettiva che verrà visualizzata quando navighi nel grafico, anche sestartDestinationè a sua volta unNavGraphnidificato.getHierarchy()è una funzione diNavDestinationche 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
NavigationUIche accettavano unBottomNavigationViewsono 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) }
Navigation Routes 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 Navigation Kotlin DSL.
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
popUpTonel DSL Kotlin è 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
NavHostche ti consente di costruire il grafico di navigazione tramite un DSL Kotlin, utilizzando le destinazionicomposableedialog, oltre al supporto per Navigator 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
Lifecycleper ogni destinazione componibile. Ogni destinazione raggiunge lo statoRESUMEDsolo al termine di tutte le transizioni di ingresso e passa immediatamente aSTARTEDall'inizio di tutte le transizioni di uscita, consentendoti così di evitare tutti i problemi diIllegalStateExceptione multitocco attivando una chiamatanavigatesolo quandoLifecycleèRESUMED. - Definizione dell'ambito di
ViewModel(tramite l'APIviewModel()di Lifecycle ViewModel Compose2.4.0ohiltViewModel()di Hilt Navigation Compose1.0.0a 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
rememberSaveablea 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
NavControllere 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 diNavControllerai 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ù back stack
NavController è responsabile della gestione dello stack indietro delle destinazioni, dell'aggiunta di destinazioni allo stack indietro quando navigate() e della loro 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 della cronologia.
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:popUpToSaveStateeapp:restoreStateper salvare lo stato di tutte le destinazioni visualizzate tramiteapp:popUpToe 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
navOptionsKotlin DSL, puoi aggiungere la proprietà booleanarestoreStatee la proprietà booleanasaveStatenel builderpopUpTo:// 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
NavOptionstramiteNavOptions.Builder, puoi utilizzaresetRestoreState()e il nuovo overload persetPopUpTo()che accetta un parametrosaveStateaggiuntivo.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 parametrosaveStateaggiuntivo.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
NavDeepLinkBuilderora aggiungePendingIntent.FLAG_IMMUTABLEaPendingIntentrestituito dacreatePendingIntent(), garantendo che questa API funzioni come previsto quando ha come target Android 12.- La navigazione ora dipende dal
ciclo di vita
2.3.1e ora contrassegnasetGraph(),popBackStack(),navigateUp()enavigate(), i metodi che aggiornanoNavBackStackEntryLifecycle, 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
NavDeepLinkora considerano i segni di cancelletto allo stesso modo dei punti interrogativi come separatore tra i segmenti del percorso, impedendo a un argomento di estendersi oltre il segno di cancelletto. - 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 unViewModelcreato tramiteby navGraphViewModels()da unonCreate()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 l'intera cronologia. (b/214383060)
Versione 2.4.0-rc01
15 dicembre 2021
androidx.navigation:navigation-*:2.4.0-rc01 è stato rilasciato. La versione 2.4.0-rc01 contiene questi commit.
Modifiche al funzionamento
- Gli argomenti analizzati di
NavDeepLinkora 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)
NavControllernon 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
startDestinationnon 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
ViewModeldalNavBackStackEntrydi 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
activityconNavHostdi Navigation Compose, che causava 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
SafeArgsnon si arresta più in modo anomalo quando tenta di ripristinare array personalizzati di oggetti serializzabili dopo l'interruzione del processo. (I618e8, b/207315994)- È stato corretto un bug negli argomenti sicuri 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 è stato rilasciato. 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
saveStatequando si passa a un altro grafico, garantendo che il codice comeNavigationUI.setupWithNavControllere 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.CREATEDdopo il passaggio aLifecycle.State.STARTEDquandoNavHostviene aggiunto direttamente asetContent()dell'attività. (Ia5ac1, b/203536683) - È stata corretta una condizione di competizione in cui
la rimozione di una destinazione
DialogFragmentdallo 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
onNavDestinationSelectedsuNavigationUIrestituivatrueanche se non avevi effettivamentenavigate()a quel grafico di navigazione. Ora utilizza la stessa logica utilizzata internamente dasetupWithNavControllerper selezionare solo ilMenuItemassociato alla destinazione corrente utilizzando ilhierarchydella destinazione. (I2b053)
Versione 2.4.0-beta01
27 ottobre 2021
androidx.navigation:navigation-*:2.4.0-beta01 è stato rilasciato. La versione 2.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare
by navGraphViewModelcon 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
NavDeepLinkNullable non richiedono più un valore predefinito quando si aggiungono link diretti aNavDestination. (I5aad4, b/201320030) - NavBackStackEntries ora con cicli di vita diversi non sono più considerati 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
AbstractListDetailFragmentche causava la gestione o l'ignoranza errata degli attributilayout_widthelayout_weightnel 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()perDialogFragmentora cancella correttamente tutte le destinazioni della finestra di dialogo sopra la finestra di dialogo ora chiusa. Ciò non influisce sui casi in cui utilizzipopUpToopopBackStack()per chiudere la finestra di dialogo. (I77ba2) AbstractAppBarOnDestinationChangedListenerora ha messaggi di errore più chiari peronDestinationChanged(). (Ie742d)
Versione 2.4.0-alpha10
29 settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha10 è stato rilasciato. La versione 2.4.0-alpha10 contiene questi commit.
Nuove funzionalità
- NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntryvisibili tramite StateFlow (Ia964e).visibleEntries rememberNavController()ora accetta un insieme facoltativo di istanzeNavigatorche verranno aggiunte all'NavControllerrestituito per supportare meglio i navigatori facoltativi 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 è stato rilasciato. 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 deep link 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
navArgumentora fa parte dinavigation-commonanziché 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
DESTROYEDsolo quando tutti i relativi elementi secondari sarannoDESTROYED. (I86552, b/198741720) - Gli argomenti
NavDeepLinkNullable 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
OnDestinationChangedListenerecurrentBackStackEntryFlownon ricevevano notifiche quando utilizzavanolaunchSingleTop. (Iaaebc)
Aggiornamenti delle dipendenze
- Navigation Compose 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 è stato rilasciato. La versione 2.4.0-alpha08 contiene questi commit.
Nuove funzionalità
- Ora è possibile estendere la classe
NavTypeper 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
getBackStackEntryepreviousBackStackEntryall'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 sarà più presente un
ArrayIndexOutOfBoundsExceptionquando si chiamasetGraphcon 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 i link diretti confermino 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 è stato rilasciato. La versione 2.4.0-alpha07 contiene questi commit.
Correzioni di bug
- Navigation Compose 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ù back stack non comporterà più la visualizzazione di una schermata vuota. (I860dc, b/194925622)
NavHostora rileva le modifiche apportate aLifecycle.StatediNavBackStackEntry, il che significa che l'utilizzo di unNavHostin 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
DialogFragmentnon aggiornava correttamente lo statoNavControllerdopo 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 di sistema di NavController, causando potenzialmente l'intercettazione del pulsante Indietro da parte di NavController anche se non ha uno stack di cronologia da visualizzare. (If3b34)
- Safe Args ora genera automaticamente un metodo
toSavedStateHandleper 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 è stato rilasciato. La versione 2.4.0-alpha06 contiene questi commit.
Modifiche alle API
- I metodi
requireSlidingPaneLayout()erequireDetailPaneNavHostFragment()suAbstractListDetailFragmentsono stati rinominati rispettivamente ingetSlidingPaneLayout()egetDetailPaneNavHostFragment(). (I34a08)
Modifiche al comportamento
- Quando navighi con le animazioni (ad esempio
Crossfade), ilLifecycledella nuova destinazione raggiungeràRESUMEDsolo al termine dell'animazione. (If0543, b/172112072, b/194301889) - La funzionalità di composizione della navigazione
NavHostora 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
NullPointerExceptionche si verificava quando si aggiungeva un link diretto senza unUrie si navigava tramite un percorso o un link diretto. (938a0c, b/193805425) - Risolto un problema in Navigation Compose per cui
un
NavBackStackEntrycon link diretto non raggiungeva lo statoRESUMED. (I192c5) - È 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 indietro da visualizzare. (aosp/1782668)
Versione 2.4.0-alpha05
21 luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha05 è stato rilasciato. La versione 2.4.0-alpha05 contiene questi commit.
Modifiche al comportamento
NavHostdi Navigation Compose 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 precedente
NavController. (I0b8db, b/175392262)
Correzioni di bug
- È stato corretto un
NoSuchElementExceptionquando la chiamata apopBackStack()dall'interno di unLifecycleObservercollegato a unNavBackStackEntrycausato da aggiornamenti rientranti allo stato di NavController. (I64621) AbstractListDetailFragmentora consente di rimuovere completamenteSlidingPaneLayoutdal tuo APK quandoAbstractListDetailFragmentnon viene utilizzato. (I611ad)NavGrapheNavDestinationora 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 è stato rilasciato. La versione 2.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'artefatto
navigation-fragmentora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment. Questo frammento utilizza unSlidingPaneLayoutper gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli, che utilizza unNavHostFragmentcome implementazione, come mostrato nella nostra implementazione di esempio. (Iac4be, b/191276636) - L'
NavHostdell'artefattonavigation-composeora supporta le destinazionidialog, oltre alle destinazionicomposable. Queste destinazioni di dialogo verranno mostrate all'interno di un elemento componibileDialog, che fluttua sopra la destinazionecomposablecorrente. (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
addinNavigatorStateè stata rinominata inpush. Tutte le chiamate attuali aadd()dovranno essere modificate in push(). (Ie89fc, b/172112072) - Le istanze
Navigatorpersonalizzate ora possono utilizzare le APIpushWithTransactionepopWithTransitionsuNavigatorStateper 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
NavDeepLinkBuilderora aggiungePendingIntent.FLAG_IMMUTABLEaPendingIntentrestituito 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
NullPointerExceptiondurante 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 di R8 3.1. (I2add9, b/191654433) - SafeArgs non genererà più errori durante la creazione dell'app con le versioni
Kotlinprecedenti alla1.5.0. (Icd1ff, b/190739257)
Versione 2.4.0-alpha03
16 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha03 è stato rilasciato. 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-alpha01in cuisetupActionBarWithNavController()non rimuoveva correttamente l'icona Su quando ti trovi in una destinazione di primo livello. (I5d443, b/189868637) - È stato corretto un
IllegalStateExceptionquando 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 si utilizzanonavigation-commono qualsiasi artefatto che dipende da esso. (I68800, b/190082521) - Un
OnDestinationChangedListenerche 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.0a 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 è stato rilasciato. 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)
NavigationUIha aggiunto temporaneamente API sperimentali per consentire l'esclusione dal 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 suNavGraphche individua una destinazione all'interno del grafico.getHierarchy()è una funzione suNavDestinationche 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
BottomNavigationViewsono 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 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". (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
DialogFragmentNavigatorora utilizza l'APINavigatorState.pop()per informareNavControllerquando una finestra di dialogo viene chiusa premendo il pulsante Indietro del sistema o facendo clic al di fuori, garantendo che lo stato diNavControllersia sempre sincronizzato con lo stato del navigatore. (I2ead9)La navigazione non restituisce più
ConcurrentModificationExceptionquando si manipola l'elenco diOnDestinationChangedListenersda 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
findNodeora èresIdanziché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 è stato rilasciato. La versione 2.4.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il metodo
currentBackStackEntryAsFlow()suNavControllerfornisce unFlowche viene emesso ogni volta che cambia l'NavBackStackEntrycorrente. Questo flusso può essere utilizzato in alternativa alla gestione manuale di unOnDestinationChangedListener. (I19c4a, #89, b/163947280)
Più back stack
NavController è responsabile della gestione dello stack indietro delle destinazioni, dell'aggiunta di destinazioni allo stack indietro quando navigate() e della loro 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:popUpToSaveStateeapp:restoreStateper salvare lo stato di tutte le destinazioni visualizzate tramiteapp:popUpToe 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
navOptionsKotlin DSL, puoi aggiungere la proprietà booleanarestoreStatee la proprietà booleanasaveStatenel builderpopUpTo:// 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
NavOptionstramiteNavOptions.Builder, puoi utilizzaresetRestoreState()e il nuovo overload persetPopUpTo()che accetta un parametrosaveStateaggiuntivo.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 parametrosaveStateaggiuntivo.
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'elemento ComposeNavigator utilizzato per le destinazioni composable in Navigation Compose e gli elementi FragmentNavigator e DynamicFragmentNavigator utilizzati per le destinazioni <fragment> in Navigation con 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
popUpToin 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ù necessarie e devono essere rimosse:
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, consentendoti 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-ktxsono state spostate nei rispettivi artefatti principali. Gli artefatti-ktxcontinueranno a essere pubblicati, ma sono completamente vuoti. (b/184292145) NavDeepLinkBuilderora 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
nameeargumente le funzioni di destrutturazione diNamedNavArgumentsono ora pubblici. (#174, b/181320559) - È stata introdotta una nuova estensione
NavBackStackEntry#provideToCompositionLocalsche fornisceNavBackStackEntryalle 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) }È stato effettuato un aggiornamento di Safe Args in modo che dipenda da KotlinPoet
1.8.0. (#172, b/183990444)
Modifiche al comportamento
- La navigazione ora dipende dal
ciclo di vita
2.3.1e ora contrassegnasetGraph(),popBackStack(),navigateUp()enavigate(), i metodi che aggiornanoNavBackStackEntryLifecycle, 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/reddi corrispondere a un link direttowww.example.com/{color}anche quando l'enum ha il valoreRED. (#152, b/135857840)
Compatibilità di Composizione
androidx.navigation:navigation-compose:2.4.0-alpha01è compatibile solo con Compose versione1.0.0-beta07e successive.
Correzioni di bug
- Risolto un problema per cui i segnaposto degli argomenti finali avevano la precedenza sui deep link con un suffisso esatto corrispondente. (#153, b/184072811)
NavHostFragmentora supporta navigatori personalizzati che utilizzano lo stesso@Navigator.Name("dialog")diDialogFragmentNavigatorpredefinito. (Ib1c2c, b/175979140)- È stato migliorato il comportamento di
NavigatorProvider#addNavigatorper 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 a 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
nameeargumente le funzioni di destrutturazione diNamedNavArgument. (#174, b/181320559) - Grazie a jossiwolf per aver introdotto una nuova estensione
NavBackStackEntry#provideToCompositionLocalsche fornisceNavBackStackEntryalle impostazioni internazionali della composizione pertinenti. (#175, b/187229439) - Grazie a jossiwolf per aver migliorato il comportamento di
NavigatorProvider#addNavigatorper garantire che chiamarlo ripetutamente con la stessa istanza non causi problemi. (#176, b/187443146)
Navigation Compose versione 1.0.0
Versione 1.0.0-alpha10
7 aprile 2021
androidx.navigation:navigation-compose:1.0.0-alpha10 è stato rilasciato. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
NavHostora accetta unModifier, che viene passato al contenitore componibile che racchiude i componenti componibili di destinazione. (I85aca, b/175125483)
Correzioni di bug
NavHostora funziona anche quando non viene trovato unOnBackPressedDispatcherOwner, come nel caso dell'anteprima diNavHost. (I7d8b4)- Navigation Compose ora dipende da Navigation
2.3.5, risolvendo un problema quando si utilizzaBackHandlerall'interno di una destinazioneNavHost. (I7e63b, b/182284739)
Versione 1.0.0-alpha09
10 marzo 2021
androidx.navigation:navigation-compose:1.0.0-alpha09 è stato rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner.currentora restituisce unViewModelStoreOwnernullable 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 è stato rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHostora compilaLocalSavedStateRegistryOwnerCompositionLocal conNavBackStackEntrydella destinazione, assicurandosi che qualsiasi stato salvato direttamente inSavedStateRegistryvenga 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 è stato rilasciato. 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) NavHostora utilizza il nuovoLocalOnBackPressedDispatcherOwnerdi Activity-Compose 1.3.0-alpha01 per ottenere ilOnBackPressedDispatcherimpostato suNavController. (I65b12)
Versione 1.0.0-alpha06
28 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha06 è stato rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- È stato aggiunto un metodo di estensione
getBackStackEntry(route: String)suNavControllerche restituisce ilNavBackStackEntryassociato. (If8931)
Versione 1.0.0-alpha05
13 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha05 è stato rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
È stato effettuato un aggiornamento 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 è stato rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
- È stato effettuato un aggiornamento per garantire la compatibilità con Compose
1.0.0-alpha09.
Versione 1.0.0-alpha03
2 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha03 è stato rilasciato. 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 è stato rilasciato. 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, consentendoti di creare grafici nidificati nel DSL di 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 è stato rilasciato. 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 composable
NavHostche ti consente di creare il grafico di navigazione tramite un DSL Kotlin. - Definizione dell'ambito del ciclo di vita,
ViewModele stato memorizzato a livello di destinazione. - Integrazione automatica con il pulsante Indietro del sistema.
- Supporto per il passaggio di argomenti, l'allegato di deep link 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 diNavControllerai 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 è stato rilasciato. La versione 2.3.5 contiene questi commit.
Nuove funzionalità
- Quando navighi utilizzando un intent
NavDeepLinkRequestoUri, ora puoi accedere all'intentUri, all'azione e al 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
OnBackPressedCallbacksaggiunto a un dispatcher conNavBackStackEntrycome LifecycleOwner ora intercetta correttamente il back 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.comcorrisponda sia awww.example.comche awww.Example.com. Tieni presente che i nomi dei parametri di ricerca sono ancora sensibili alle maiuscole. (#144, b/153829033) - È stato corretto un
NullPointerExceptionche 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
bentrengroveper 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 è stato rilasciato. La versione 2.3.4 contiene questi commit.
Nuove funzionalità
- Ora gli argomenti
ReferenceTypepossono 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:defaultValueper 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 a
setViewModelStoreosetLifecycleOwnercon 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
JvmNameper la richiesta di pull per garantire che gli argomentiReferenceTypeora possano essere analizzati correttamente quando vengono inviati come parte di un URI di link diretto. (#127, b/179166693) - Grazie
tatocasterper la pull request che consente adefaultValueper un argomento conapp:argType=”float”di supportare ora i valori predefiniti interi. (#117, b/173766247)
Versione 2.3.3
Versione 2.3.3
27 gennaio 2021
androidx.navigation:navigation-*:2.3.3 è stato rilasciato. La versione 2.3.3 contiene questi commit.
Correzioni di bug
- Non si verifica più un arresto anomalo quando viene estratto un
NavBackStackEntryprima che il relativoLifecyclevenga 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
0causava unResourceNotFoundException. (I7aedb, b/176819931)
Versione 2.3.2
Versione 2.3.2
2 dicembre 2020
androidx.navigation:navigation-*:2.3.2 è stato rilasciato. La versione 2.3.2 contiene questi commit.
Correzioni di bug
- È stato corretto un problema di regressione in
NavigationUIin cui l'utilizzo di una destinazione<activity>cononNavDestinationSelectednon consentiva di passare all'attività. (I22e34, b/171364502) - È stato risolto un problema per cui
navigation-dynamic-features-fragmentcomportava 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
OnDestinationChangedListenerquando 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)
- È stato risolto un problema per cui l'utilizzo di
navigate()con unpopUpToche 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 della radice 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 conFragmentScenarioeNavigation.setViewNavController(). (I69e0d)
Versione 2.3.1
Versione 2.3.1
14 ottobre 2020
androidx.navigation:navigation-*:2.3.1 è stato rilasciato. 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-uiora dipende da DrawerLayout 1.1.1, garantendo cheNavigationUIpossa aprire il riquadro anche quando si utilizzaLOCK_MODE_LOCKED_CLOSEDoLOCK_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 è stato rilasciato. La versione 2.3.0 contiene questi commit.
Modifiche principali dalla versione 2.2.0
- Integrazione dei moduli delle funzionalità: gli artefatti
navigation-dynamic-features-runtimeenavigation-dynamic-features-fragmentti 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-testingfornisce unTestNavHostControllerche 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'
NavBackStackEntryassociato a ogni destinazione nello stack di navigazione indietro ora ti consente di accedere a unSavedStateHandleadatto 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
NavigationUIperOpenable: tutti gli utilizzi diDrawerLayoutinNavigationUIsono stati sostituiti con l'interfaccia più genericaOpenableaggiunta in CustomView1.1.0e implementata daDrawerLayoutin DrawerLayout1.1.0. - Supporto di azioni e tipi MIME nei link diretti: i link diretti sono stati estesi per supportare
app:actioneapp:mimeType, oltre aapp:uriprecedentemente disponibile.NavControllerora 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 deep link 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 è stato rilasciato. La versione 2.3.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un
NullPointerExceptiondurante la sostituzione di un'istanza di una destinazione senza argomenti con un'altra istanza con argomenti consingleTop. (b/158006669) - Tutte le eccezioni
destination is unknowngenerate daNavControllerora 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 sono stati rilasciati. La versione 2.3.0-beta01 contiene questi commit.
Correzioni di bug
- Risolto un problema per cui il
LifecyclediNavBackStackEntrynon veniva aggiornato correttamente dopo l'interruzione del processo. (b/155218371) - Le istanze
OnDestinationChangedListenerregistrate prima della chiamatasetGraph()ora inviano correttamente la destinazione ripristinata dopo l'interruzione di un processo. (b/155218371) - Quando utilizzi
singleTop, oraNavBackStackEntryha correttamente gli argomenti aggiornati e questi vengono inviati a tutte le istanzeOnDestinationChangeListener. (b/156545508)
Aggiornamenti delle dipendenze
- L'artefatto
NavigationUIora dipende da CustomView1.1.0-rc01e DrawerLayout1.1.0-rc01. (aosp/1309696)
Versione 2.3.0-alpha06
29 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha06 è stato rilasciato. (La versione 2.3.0-alpha06 contiene questi commit.)
Nuove funzionalità
- I link diretti sono stati estesi per supportare
app:actioneapp:mimeType, oltre aapp:uriprecedentemente 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 è stato rilasciato. La versione 2.3.0-alpha05 contiene questi commit.
Nuove funzionalità
- Per le inclusioni di grafici dinamici che utilizzano
<include-dynamic>, non è più necessario specificareapp:graphPackagee ne verrà utilizzato uno predefinito aggiungendo il suffissomoduleNameaapplicationIddopo un punto. Se devi personalizzare il tuographPackage, ora è supportato un segnaposto${applicationId}. (b/152696768) - Il DSL Kotlin del grafico di navigazione ora espone un
defaultArgumentsMapper 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
IllegalStateExceptiondurante il deep linking alla destinazione iniziale del grafico quando hai più istanze diNavHostFragmentnell'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 è stato rilasciato. La versione 2.3.0-alpha04 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto per l'attività del modulo delle funzionalità e le destinazioni dei fragment nel DSL Kotlin di Navigation. (b/148969800)
Modifiche alle API
- La classe
DynamicExtrasnon utilizza più un pattern di builder e ora può essere costruita direttamente. (aosp/1253671) - Ora
DynamicActivityNavigatoraccetta unContextnel suo costruttore anziché unActivity. (aosp/1250252)
Correzioni di bug
NavigationUInon 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 è stato rilasciato. La versione 2.3.0-alpha03 contiene questi commit.
Modifiche alle API
- Anziché fare affidamento sulla classe concreta
DrawerLayout,AppBarConfigurationora utilizza l'interfacciaOpenableintrodotta in CustomView1.1.0-alpha02(cheDrawerLayoutimplementa a partire da DrawerLayout1.1.0-alpha04), consentendoti di utilizzare implementazioni personalizzate diOpenableconNavigationUI. (b/129030452)
Correzioni di bug
- Le regole
navigation-common-ktxProGuard ora conservano correttamente solo le classiNavArgsutilizzate anziché tutte le istanzeNavArgs. (b/150213558)
Modifiche alle dipendenze
- La navigazione non dipende più da Core
1.2.0e ora dipende da Core1.1.0per 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 è stato rilasciato. La versione 2.3.0-alpha02 contiene questi commit.
Nuove funzionalità
NavBackStackEntryora ti consente di accedere a unSavedStateHandleadatto 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, consulta Restituzione di un risultato. (b/79672220)
Modifiche alle API
- Sono stati aggiunti metodi pratici di
getCurrentBackStackEntry()egetPreviousBackStackEntry()per semplificare il recupero di unNavBackStackEntryper le destinazioni attuali e precedenti. (b/79672220)
Correzioni di bug
navigateUp()ora passa gli argomenti della destinazione corrente eKEY_DEEP_LINK_INTENTalla 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 è stato rilasciato. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il nuovo artefatto
navigation-testingfornisce una classeTestNavHostController. Questa classe fornisce un'alternativa all'utilizzo di un mockNavControllerdurante il test della 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 perfetta 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 deep link senza parametri di query ora ignorano correttamente tutti i parametri di query anziché aggiungerli agli elementi{argument}finali o non corrispondere al deep link. (b/147447512) - Da Navigazione
2.2.1: le regole dinavigation-uiProGuard perDrawerArrowDrawablesono state aggiornate per garantire cheandroid.enableJetifier=truenon sia richiesto. (b/147610424) - Da Navigazione
2.2.1: il modulonavigation-common-ktxora 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.1ora dipende da Lifecycle ViewModel SavedState2.2.0e Fragment1.2.1.
Versione 2.2.2
Versione 2.2.2
15 aprile 2020
androidx.navigation:navigation-*:2.2.2 sono stati rilasciati. La versione 2.2.2 contiene questi commit.
Correzioni di bug
- È stato corretto un
IllegalStateExceptiondurante il deep linking alla destinazione iniziale del grafico quando hai più istanze diNavHostFragmentnella tua Attività. (b/147378752) NavigationUInon 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-ktxProGuard ora conservano correttamente solo le classiNavArgsutilizzate 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 è stato rilasciato. La versione 2.2.1 contiene questi commit.
Correzioni di bug
- I deep link senza parametri di query ora ignorano correttamente tutti i parametri di query anziché aggiungerli agli elementi
{argument}finali o non corrispondere al deep link. (b/147447512) - Le regole di
navigation-uiProGuard perDrawerArrowDrawablesono state aggiornate per garantire cheandroid.enableJetifier=truenon sia richiesto. (b/147610424) - Il modulo
navigation-common-ktxora 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.1ora dipende da Lifecycle ViewModel SavedState2.2.0e Fragment1.2.1.
Versione 2.2.0
Versione 2.2.0
22 gennaio 2020
androidx.navigation:navigation-*:2.2.0 è stato rilasciato. 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 valoreNavBackStackEntryrestituito fornisce unLifecycleOwner,ViewModelStoreOwner(lo stesso restituito daNavController.getViewModelStoreOwner()) eSavedStateRegistryOwnerbasati 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 costruttoreViewModelProvidercon unViewModelStoreOwnerrestituito 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:
NavHostFragmentora utilizzaFragmentContainerViewda 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 è stato rilasciato. La versione 2.2.0-rc04 contiene questi commit.
Correzioni di bug
- Sono state modificate le animazioni di dissolvenza predefinite utilizzate da
navigation-uiin 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 è stato rilasciato. 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 deep link per cui i parametri facoltativi ricevevano
"@null"anzichénull. (b/141613546) NavHostFragmentora ripristina correttamente il grafico dopo una modifica della 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-rc03e Fragment1.2.0-rc03, a seconda dei casi.
Versione 2.2.0-rc02
7 novembre 2019
androidx.navigation:navigation-*:2.2.0-rc02 è stato rilasciato. 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 è stato rilasciato. La versione 2.2.0-beta01 contiene questi commit.
Nuove funzionalità
NavDestinatione 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 deep link venivano ignorati se venivano specificati anche i parametri di ricerca. (b/141505755)
- L'estensione
navArgs()Kotlin suActivityora ha un messaggio di errore migliore quando non sono presenti componenti aggiuntivi. (b/141408999) - Le classi Java
Directionsgenerate da Safe Args ora contengono valori predefiniti. (b/141099045) - Le classi Java
Argsgenerate da Safe Args ora contengono valori predefiniti. (b/140123727) - Quando si utilizza un
Toolbar,NavigationUInon 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 è stato rilasciato. 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 daNavHostnell'ambito della configurazione iniziale per garantire che tutte le istanzeNavBackStackEntryabbiano uno spazio di archiviazione coerente per le istanzeViewModel. (aosp/1111821)
Correzioni di bug
- È stato corretto un
ConcurrentModificationExceptionquando si utilizzano istanzeViewModelcollegate a più istanzeViewModelStorecon ambito del grafico di navigazione diverso. (aosp/1112257)
Versione 2.2.0-alpha02
5 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha02 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- 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. (b/133273839)
- Ora puoi chiamare
NavController.getBackStackEntry(), passando l'ID di una destinazione o di un grafico di navigazione nello stack precedente. Il valoreNavBackStackEntryrestituito fornisce unLifecycleOwner,ViewModelStoreOwner(lo stesso restituito daNavController.getViewModelStoreOwner()) eSavedStateRegistryOwnerbasati 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
NavHostFragmentaViewPager2non riusciva e veniva visualizzato unIllegalArgumentException. (b/133640271) NavInflaterora evita di chiamaregetResourceName()inutilmente, velocizzando il tempo di gonfiaggio fino al 40%. (b/139213740)
Versione 2.2.0-alpha01
7 agosto 2019
androidx.navigation:navigation-*:2.2.0-alpha01 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
SavedStateViewModelFactoryè ora la fabbrica predefinita utilizzata quando si utilizzaby navGraphViewModels()o il costruttoreViewModelProvidercon unViewModelStoreOwnerrestituito daNavController.getViewModelStoreOwner(). (b/135716331)
Modifiche all'API
- Da Navigazione
2.1.0-rc01: l'APIgetViewModelStore()obsoleta suNavControllerintrodotta in2.1.0-alpha02è stata rimossa. (aosp/1091021)
Correzioni di bug
NavHostFragmentora 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 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche importanti dalla versione 2.0.0
- ViewModel con ambito limitato a un grafico di navigazione: ora puoi creare ViewModel con ambito limitato a livello di grafico di navigazione utilizzando il delegato della proprietà
by navGraphViewModels()per gli utenti Kotlin che utilizzano le librerie-ktxo 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 unaDialogFragmentquandonavigate.NavHostFragmentsupporta le destinazioni di dialogo per impostazione predefinita. Per ulteriori informazioni, vedi Creare una destinazione da un DialogFragment. - Navigazione tramite URI: ora puoi
navigateutilizzando 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
NavHostpersonalizzato sono state spostate inNavHostController, consentendo alle implementazioni di connettere il proprioNavControllerall'hostingLifecycleOwner,OnBackPressedDispatchereViewModelStore.
Versione 2.1.0-rc01
7 agosto 2019
androidx.navigation:navigation-*:2.1.0-rc01 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- L'API
getViewModelStore()obsoleta suNavControllerintrodotta in2.1.0-alpha02è stata rimossa. (aosp/1091021)
Versione 2.1.0-beta02
19 luglio 2019
androidx.navigation:*:2.1.0-beta02 è stato rilasciato. 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 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
NavigationUIora anima la rimozione del pulsante Su quando si utilizzasetupWithNavController()con unToolbaro 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 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- L'attributo
app:navGraphutilizzato 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, ora Navigazione 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 precedente di navigazione 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 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- Le API correlate all'host su
NavControllersono state rinominate e spostate in una nuova sottoclasse diNavController,NavHostController. (aosp/966091) - Il metodo
NavControllersetHostOnBackPressedDispatcherOwner()è stato sostituito dal metodosetOnBackPressedDispatcher()diNavHostControllere ora richiede di chiamaresetLifecycleOwner()prima di chiamarlo. (aosp/965409) NavHostControllerora contiene un metodoenableOnBackPressed(boolean)che sostituisce la classeNavHostOnBackPressedManagerprecedentemente 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 è stato rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
NavHostFragmentrispetta correttamenteapp:defaultNavHostquando intercetta gli eventi del pulsante Indietro del sistema, correggendo una regressione nella navigazione2.1.0-alpha03. b/132077777DialogFragmentNavigatorora gestisce correttamente le operazionipopBackStack()enavigateUp(). b/132576764- È stato risolto un problema di
IllegalStateException: unknown destination during restoredurante lo spostamento ripetuto tra grafici nidificati. b/131733658
Versione 2.1.0-alpha03
7 maggio 2019
androidx.navigation:*:2.1.0-alpha03 è stato rilasciato. 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 unDialogFragmentquandonavigate.NavHostFragmentsupporta le destinazioni di dialogo per impostazione predefinita. b/80267254 - Oltre a chiamare
navigatecon 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()aNavDestinationper consentirti di verificare se un determinatoUripuò 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 NavHostFragmentora intercetta gli eventi Indietro del sistema utilizzandoOnBackPressedDispatcher, risolvendo un problema durante la navigazione condizionale nei metodi del ciclo di vita dei fragment al ritorno a un fragment. b/111598096- Per Safe Args, un
android:defaultValue=”@null”con unapp:argTypenon specificato viene ora dedotto correttamente come argomentostring. b/129629192
Versione 2.1.0-alpha02
3 aprile 2019
androidx.navigation:*:2.1.0-alpha02 è stato rilasciato. 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:targetPackagea 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:nameper 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 Navigation 2.1.0.
Modifiche alle dipendenze
- La navigazione ora dipende da
androidx.core:core:1.0.1eandroidx.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 utilizzaFragmentFactoryper creare istanze di Fragment. b/119054429
Correzioni di bug
- La navigazione non invia più un
Bundlenullo 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 Support; tutto lo sviluppo futuro successivo alla versione 1.0 si baserà su AndroidX e sulla release stabile 2.0.
Dipendenze precedenti ad AndroidX
Per le versioni precedenti di 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 al rilascio della 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_TASKb/126082008- È stato risolto un problema relativo a
ActivityNavigator.applyPopAnimationsToPendingTransitionche non applicava l'animazione di uscita popup corretta b/126237567 - Il codice Kotlin generato da Safe Args ora esegue correttamente l'escape delle parole chiave Kotlin
come
inefunnel 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
singleTopb/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
0comeandroid:defaultValueper gli argomentireference. b/124248602
Modifiche al funzionamento
- Ora la corrispondenza esatta dei link diretti ha la priorità sui link diretti con corrispondenze di argomenti o
.*. b/123969518
Correzioni di bug
popBackStack()enavigateUpora restituiscono correttamentefalsequando viene estratta l'ultima destinazione dallo stack precedente, correggendo una regressione introdotta in1.0.0-beta01. b/123933201- La navigazione ora imposta correttamente
ClassLoaderdurante il ripristino dello stato dell'istanza salvato, evitando problemi quando si utilizzano classi personalizzate nello stato salvato diNavigatoro 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:argTypediverso 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 Gradle. b/121304903
- È stato corretto un problema di regressione che causava l'esecuzione di una singola operazione
popBackStack()per spostare tutte le copie di una destinazione dalla parte superiore dello stack precedente, anziché una sola destinazione alla volta. b/123552990 - È stato risolto un problema per cui lo stato
FragmentNavigatorveniva desincronizzato con lo stato diNavController, causando unIllegalStateExceptionquando si tentava di ripristinare lo stack precedente. b/123803044 - È stato risolto un problema per cui la freccia indietro gestita da
NavigationUInon 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:argTypeche 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 hotfix di 1.0.0-alpha10 che corregge 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 all'API che provocano errori; 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 classeNavArgsgenerata da Safe Args in unActivityoFragment. 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.safeargsprecedente. b/110263087
Modifiche al comportamento
- I link diretti corrispondenti ora sono orientati verso il link diretto con il maggior numero di argomenti corrispondenti. b/118393029
- La chiamata a
setGraph()su unNavControllerora reimposta lo stack indietro. b/111450672 - I link diretti sconosciuti non generano più un
IllegalStateException, ma vengono ignorati, risolvendo i problemi relativi aNavHostFragmentnidificati 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
NavDirectionsgenerate 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
Bundlerestituito daNavDirections'getArguments()ora è contrassegnato come@NonNullanziché@Nullable. b/123243957
Correzioni di bug
NavDeepLinkBuilderora gestisce correttamente piùPendingIntentsimultanei alla stessa destinazione utilizzando gli argomenti che trasmetti per determinare l'unicità. b/120042732NavControllerora gestisce correttamente le operazionipopBackStack()quando utilizzi unNavHostFragmentnidificato o altri frammenti secondari con uno stack di ritorno. b/122770335NavigationUIora 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
NavDirectionsgenerate da Safe Args ora hanno correttamente valorihashCode()uguali quandoequals()restituirebbe true. b/123043662 FragmentNavigatorora genera un messaggio di errore migliore se tenti di eseguireFragmentTransactionspersonalizzati sulleNavHostFragmentdiFragmentManager. Devi sempre utilizzaregetChildFragmentManager(). b/112927148
Versione 1.0.0-alpha09
18 dicembre 2018
Questa release contiene modifiche all'API che provocano errori; 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 eseguite 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à
MenuItemconmenuCategory="secondary"non mostreranno più lo stack indietro se utilizzati con i metodiNavigationUI. b/120104424AppBarConfigurationora ti consente di impostare un'istanza diOnNavigateUpListenerdi 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 tuoMenuItemper evitare di estrarre lo stack precedente. aosp/852869- I metodi
fromBundle()delle classiArgsgenerate ora accettano unBundlenon nullo anziché unBundleannullabile. aosp/845616
Correzioni di bug
- Gli argomenti ora vengono analizzati correttamente dai link diretti come
argTypecorretto anziché sempre come stringhe b/110273284 - Ora la navigazione 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 all'API che provocano errori; 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:labelcon l'argomento corretto b/80267266 - La navigazione ora dipende dalla Support Library 28.0.0 b/120293333
Modifiche che provocano un errore
OnNavigatedListenerè stato rinominato inOnDestinationChangedListenerb/118670572OnDestinationChangedListenerora passa anche ilBundledegli argomenti aosp/837142- Gli attributi
app:clearTaskeapp:launchDocumente i relativi metodi sono stati rimossi. Utilizzaapp:popUpTocon la radice del grafico per rimuovere tutte le destinazioni dallo stack precedente. b/119628354 ActivityNavigator.Extrasora utilizza un patternBuildere aggiunge la possibilità di impostare qualsiasi flagIntent.FLAG_ACTIVITY_aosp/828140NavController.onHandleDeepLinkè stato rinominato inhandleDeepLinkaosp/836063- Molte classi e metodi non pensati per la creazione di sottoclassi, come
NavOptions,NavInflater,NavDeepLinkBuildereAppBarConfiguration, sono stati resifinalaosp/835681 - Il metodo
NavHostFragment.setGraph()deprecato è stato rimosso aosp/835684 - Il metodo
NavigationUI.navigateUp(DrawerLayout, NavController)deprecato è 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
NavGraphNavigatornon accetta piùContextaosp/835340 - NavigatorProvider ora è
una classe, anziché un'interfaccia. Il valore
NavigatorProviderrestituito dagetNavigatorProvider()non ha modificato la sua funzionalità. aosp/830660 NavDestination.navigate()è stato rimosso. Chiamanavigate()al numeroNavigatorin alternativa. aosp/830663- Refactoring significativo di
Navigator, che non richiede piùOnNavigatorNavigatedListenere fa sì chenavigaterestituiscaNavDestinationa cui è stata eseguita la navigazione. - Le istanze
Navigatornon possono più inviare eventi popup aNavController. Valuta la possibilità di utilizzare unOnBackPressedCallbackper intercettare le pressioni del pulsante Indietro e chiamarenavController.popBackStack(). aosp/833716
Correzioni di bug
popUpToora funziona in modo coerente quando la destinazione è un elemento<navigation>b/116831650- Sono stati corretti diversi bug che causavano un
IllegalArgumentExceptionquando venivano utilizzati grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - L'attributo
dataPatterndelle 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
@Overrideove 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 artifacte non verrà più pubblicato. - L'artefatto
navigation-testingora 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 deep link analizzano correttamente i parametri di query. b/110057514
- Le destinazioni delle attività ora applicano correttamente tutte le animazioni di entrata e uscita. b/117145284
- È stato corretto l'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
NavigationViewora 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 èNonNullb/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 - È stato corretto un errore di compilazione 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 imposta sempre il Fragment corrente come fragment di navigazione principale, assicurandosi che i gestori dei fragment secondari vengano rimossi prima che venga rimosso il NavController esterno b/111345778
Safe Args
- Modifica che provoca un errore:
app:typeè stato modificato inapp:argTypeper 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
NonNullnon sono effettivamente nulli b/111451769 - Sono state aggiunte ulteriori annotazioni
NonNullalle classi generate NavDirections e Args b/111455455 b/111455456
Correzioni di bug
- È stato risolto un problema relativo al 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 di ritorno è vuoto o quando l'ID destinazione specificato non è presente nello stack di ritorno 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 che causa interruzione: 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.indexdiventeràsetDemoControllerIndexb/79995048 - Ad esempio,
action_show_settingsdiventeràactionShowSettingsb/79642240
- Ad esempio,
- Modifica sostanziale:gli argomenti ora sono considerati non nulli per impostazione predefinita. Per consentire valori null negli argomenti stringa e serializzabili, 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
setPopUpTocon la prima destinazione nel grafico b/109909461 - È stato risolto il problema per cui tutti i valori di
app:defaultValuevenivano passati come stringhe b/110710788 - aapt2 incluso in Android Gradle Plugin 3.2 Beta 01 ora aggiunge regole di conservazione per ogni attributo
android:namenei 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
FragmentNavigatorora utilizzasetReorderingAllowed(true). b/109826220La navigazione ora decodifica gli argomenti analizzati dagli URL dei link diretti. b/79982454
Correzioni di bug
È stato corretto un
IllegalStateExceptiondurante la chiamata a navigate dai metodi del ciclo di vita di Fragment. b/79632233La navigazione ora dipende dalla Support Library 27.1.1 per correggere lo sfarfallio durante l'utilizzo delle animazioni. b/80160903
È stato corretto un
IllegalArgumentExceptionquando si utilizza defaultNavHost="true" come fragment secondario. b/79656847È stato corretto un
StackOverflowErrordurante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato corretto un
IllegalArgumentExceptiondurante la navigazione a ritroso in un grafico nidificato. b/80453447È stato risolto un problema relativo alla sovrapposizione di frammenti quando si utilizza
launchSingleTop. b/79407969La navigazione ora crea lo stack indietro 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
clearTaskper le azioni e l'API associata inNavOptionssono stati ritirati. b/80338878L'attributo
launchDocumentper le azioni e l'API associata inNavOptionssono 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.