Navigazione
Ultimo aggiornamento | Release stabile | Candidato per la release | Versione beta | Versione alpha |
---|---|---|---|---|
30 ottobre 2024 | 2.8.3 | - | - | 2.9.0-alpha02 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza da Navigation, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
Alla moda
dependencies { def nav_version = "2.8.0" // 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" }
Kotlin
dependencies { val nav_version = "2.8.0" // 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") }
Safe Args
Per aggiungere arg. sicuri
al tuo progetto, includi i seguenti classpath
nel file build.gradle
di primo livello:
Alla moda
buildscript { repositories { google() } dependencies { def nav_version = "2.8.0" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.8.0" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Devi inoltre applicare uno dei due plug-in disponibili.
Per generare un codice del linguaggio Java adatto a moduli Java o misti Java e Kotlin, aggiungi
questa riga nel file build.gradle
della tua app o del tuo modulo:
Alla moda
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
In alternativa, per generare un codice Kotlin adatto ai moduli solo Kotlin, aggiungi:
Alla moda
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Devi avere android.useAndroidX=true
nel tuo
gradle.properties
file in base a
Migrazione ad AndroidX.
Per informazioni sull'utilizzo delle estensioni Kotlin, consulta la documentazione di ktx.
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze di compilazione.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 2.9
Versione 2.9.0-alpha02
30 ottobre 2024
Viene rilasciato androidx.navigation:navigation-*:2.9.0-alpha02
. La versione 2.9.0-alpha02 contiene questi commit.
Contributo esterno
- Nuovo metodo
NavController.handleDeepLink(request: NavDeepLinkRequest)
comune. Grazie Konstantin Tskhovrebov. (I3e228)
Versione 2.9.0-alpha01
16 ottobre 2024
androidx.navigation:navigation-*:2.9.0-alpha01
viene rilasciato. La versione 2.9.0-alpha01 contiene questi commit.
Nuove funzionalità
- Ora i navigatori personalizzati possono contrassegnare le proprie destinazioni come implementanti l'interfaccia
SupportingPane
, che indica aNavController
che queste destinazioni verranno mostrate insieme ad altre. Ad esempio, utilizzando questa interfaccia, è possibileRESUMED
più destinazioni contemporaneamente. (Id5559) - In Navigazione
2.8.3
: sono stati aggiunti nuovi controlli di lint per i modulinavigation-common
,navigation-runtime
enavigation-compose
per identificare eventuali percorsi sicuri per i tipi che non sono annotati correttamente con@Serializable
. Questo controllo viene applicato a tutte le funzioni delle estensioniNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - In Navigazione
2.8.3
: sono stati aggiunti nuovi controlli di lint per i modulinavigation-common
,navigation-runtime
enavigation-compose
per identificare eventuali percorsi sicuri per i tipi con argomenti Enum non annotati correttamente con@Keep
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Modifiche al comportamento
- Il tentativo di utilizzare un
NavController
che è stato precedentementeDESTROYED
ora causerà unIllegalStateException
. (I520da, b/369616172)
Correzioni di bug
- Aggiorna l'eccezione Enumeration class not found per suggerire l'utilizzo dell'annotazione
@Keep
nel caso in cui la classe Enum venga cancellata nelle build minimizzate. (I90e79, b/358137294)
Problemi noti
- Esiste un problema con le nuove regole lint aggiunte in
Navigation 2.8.*
che causano un erroreObsolete custom lint check
durante il tentativo di eseguire lint con il plug-in Gradle per Android 8.4 e versioni successive. (b/368070326, b/371463741)
Versione 2.8
Versione 2.8.3
16 ottobre 2024
androidx.navigation:navigation-*:2.8.3
viene rilasciato. La versione 2.8.3 contiene questi commit.
Nuove funzionalità
- Sono stati aggiunti nuovi controlli lint per i moduli
navigation-common
,navigation-runtime
enavigation-compose
per identificare eventuali percorsi sicuri per i tipi che non sono annotati correttamente con@Serializable
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I28bda, b/362725816) - Sono stati aggiunti nuovi controlli lint per i moduli
navigation-common
,navigation-runtime
enavigation-compose
per identificare le route sicure per il tipo tramite argomenti Enum non annotati correttamente con@Keep
. Questo controllo viene applicato a tutte le funzioni di estensioneNavGraphBuilder
eNavDeepLinkBuilder
. (I4a259, I95402, Ie601a, Id8c6e, I2b46f, b/358687142)
Correzioni di bug
- È stato corretto un problema per cui le nuove regole di lint aggiunte in
Navigation 2.8.*
causavano un erroreObsolete custom lint check
durante il tentativo di eseguire lint con il plug-in Android Gradle 8.4 e versioni successive. (I1be3d, b/368070326, b/371463741)
Problemi noti
- Quando si tenta di eseguire il lint con Lint 16 (AGP 8.7) o versioni successive, viene generato un errore di controllo lint personalizzato obsoleto. (b/371926651)
Versione 2.8.2
2 ottobre 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.2
. La versione 2.8.2 contiene questi commit.
Nuove funzionalità
- La sicurezza di tipo di navigazione ora supporta le classi serializzabili che includono
Double
,Double?
,DoubleArray
,DoubleArray?
,List<Double>
eList<Double>?
senza richiedereNavType
personalizzati. (I570eb, Ibc4c0, I37461, I5bed4, b/359245753)
Correzioni di bug
- È stato migliorato il messaggio di errore che viene visualizzato quando 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
Viene rilasciato androidx.navigation:navigation-*:2.8.1
. La versione 2.8.1 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola lint per garantire l'utilizzo della funzione
popBackStack
che accetta un tipo di classe reinventata quando si tenta dipopBackStack
utilizzando API type-safe. (Ief161, b/358095343)
Correzioni di bug
- La navigazione ora richiede che il percorso passato a
startDestination
di unNavGraph
contenga i valori per tutti gli argomenti obbligatori, inclusi gli argomenti non null e senza valore predefinito. (I18e74, b/362594265) - Gli argomenti sicuri di navigazione hanno aggiunto il supporto per le stringhe non nulle, in modo che i valori "null" vengano analizzati e memorizzati nel bundle così come sono. Questo comportamento si discosta da quello esistente, in cui i valori "null" vengono analizzati in un oggetto null. Questa modifica si applica solo ai tipi String non null. Le stringhe facoltative rimangono invariate. (I08b4a, b/348936238)
- Non è più possibile creare un link diretto a un
NavDestination
, tranne tramite un link diretto aggiunto esplicitamente alla destinazione. Ciò significa anche che puoi navigare verso la route di una destinazione solo con il sovraccarico della funzione di navigazione che utilizza una route stringa. Questa operazione corregge una vulnerabilità che consentiva il collegamento diretto a una destinazione potenzialmente protetta. (Ie30e6)
Aggiornamento delle dipendenze
- Navigazione Safe Args ora dipende da Kotlin 1.9.24, piuttosto che da Kotlin 2.X, garantendo che gli sviluppatori non siano costretti a eseguire l'aggiornamento. (a4129a)
- La funzionalità Scrivi nella barra di navigazione ora dipende da Scrivi
1.7.2
.
Versione 2.8.0
4 settembre 2024
androidx.navigation:navigation-*:2.8.0
viene rilasciato. La versione 2.8.0 contiene questi commit.
Modifiche importanti dalla versione 2.7.0
Sicurezza del tipo DSL di Kotlin per la navigazione
- La navigazione ora fornisce la sicurezza del tipo per il DSL Kotlin (utilizzato da Navigation Compose) utilizzando la serializzazione Kotlin per consentirti di definire le destinazioni nel grafico di navigazione tramite oggetti e classi di dati sicuri per il tipo:
// 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 compilazione di navigazione che soddisfa la sicurezza del tipo.
Navigazione Componi Indietro predittivo
- La funzionalità di navigazione Componi ora supporta il pulsante Indietro in-app predittivo tramite le nuove API
SeekableTransitionState
di compose-animation. In questo modo puoi utilizzare il gesto Indietro per vedere la destinazione precedente con la transizione personalizzata prima di decidere se confermare la transazione tramite il gesto completato o annullare.
Composto frammento di navigazione
- È stato aggiunto un nuovo elemento
navigation-fragment-compose
che include un'alternativaComposableNavHostFragment
aNavHostFragment
che consente di aggiungere destinazioni componibili ai file XML di navigazione. Ogni destinazionecomposable
deve essere espressa come metodo@Composable
di primo livello senza argomenti il cui nome completo viene utilizzato come attributoandroid:name
in ogni destinazione. Quando accedi 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
- Navigazione Compose ora dipende da Compose 1.7.0.
- La navigazione ora fornisce una nuova classe
CollectionNavType<T>
, una sottoclasse diNavType<T>
per gli argomenti basati su raccolte come elenchi, array e mappe. Tutti gli arrayNavType
predefiniti (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora ereditano da questa nuova classe. NavType
ora supporta di serie gli elenchi di Int, String, Boolean, Float e Long.
Versione 2.8.0-rc01
21 agosto 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-rc01
. La versione 2.8.0-rc01 contiene questi commit.
Correzioni di bug
- Correzione dell'arresto anomalo della navigazione quando vengono passate le classi Enum di primo livello come argomenti sicuri per i tipi. (I0ba76, b/358137294)
- Navigation 2.8 ora funziona correttamente con l'SDK 34 e non passerà all'SDK 35 fino alla release 2.9, insieme al resto delle librerie AndroidX. (b/358798728)
Versione 2.8.0-beta07
7 agosto 2024
androidx.navigation:navigation-*:2.8.0-beta07
viene rilasciato. La versione 2.8.0-beta07 contiene questi commit.
Problemi noti
- A causa del problema b/358137294, solo gli enum nidificati in un'altra classe sono supportati per impostazione predefinita. Gli enum di primo livello saranno supportati nella prossima release.
Correzioni di bug
- Quando navighi verso destinazioni duplicate o condivise, la navigazione darà la priorità alla destinazione più vicina alla posizione corrente nel grafico. (Ic89a4, b/352006850)
- Nella navigazione in safe args è stato aggiunto un nuovo
NavType.EnumType
. Ciò significa che i tipi diEnum
non richiedono piùNavType
personalizzati. Tieni presente cheEnum
diSerialName
deve essere il nome completo predefinito. (I66d22, b/346475493) - La navigazione in safe args ha aggiunto il supporto integrato per i tipi di argomenti nullable,tra cui
Int?
,Long?
,Float?
,Boolean?
eEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) - Ora
startDestination
diNavGraph
utilizzerà i valori degli argomenti predefiniti se il percorsostartDestination
passato aNavGraph
è esattamente uguale astartDestination.route
. (I13762, b/354046047)
Versione 2.8.0-beta06
24 luglio 2024
androidx.navigation:navigation-*:2.8.0-beta06
viene rilasciato. La versione 2.8.0-beta06 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui i controlli di lint
WrongStartDestinationType
non cercavano oggetti Companion nel tipo di classe passato, causando la mancata rilevazione dell'errore da parte di lint. (I92b09)
Versione 2.8.0-beta05
10 luglio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta05
. La versione 2.8.0-beta05 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo di navigazione di
singleTop
quando gli elementiNavGraphs
nidificati condividono lo stesso percorsostartDestination
. (I17b94, b/294408596)
Versione 2.8.0-beta04
26 giugno 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta04
. 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 questa è attualmente una funzionalità non supportata. (I052b0, b/341319151) - L'API di test
SavedStateHandleFactory
ora può essere utilizzata nei test non Android, ma richiede che Robolectric supporti l'analisi degli argomenti con i bundle. (I76cdc, b/340966212) - È stato corretto l'arresto anomalo del ripristino dello stato al riavvio dell'app dopo l'interruzione del processo con l'utilizzo della navigazione sicura per i tipi in Compose. (Ia8f38, b/341801005)
- È stato risolto un problema nella funzionalità di composizione della navigazione per cui, dopo l'annullamento del Gesto Indietro predittivo, la
NavBackStackEntry
a cui l'utente torna non torna mai allo stato di ciclo di vitaRESUMED
. In questo modo, la destinazione di ritorno viene rianimata correttamente anziché scattare in posizione dopo un movimento. (I97a0c, b/346608857) - Quando utilizzi predittivo con Scrittura navigazione, la destinazione che viene visualizzata ora avrà l'ordine Z corretto, che si anima correttamente sopra la destinazione in arrivo. (I2077b, b/345993681)
Versione 2.8.0-beta03
12 giugno 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta03
. La versione 2.8.0-beta03 contiene questi commit.
Modifiche alle API
CollectionNavType
ha un nuovo metodoemptyCollection()
astratto. Sostituiscilo per gestire una raccolta vuota passata come argomento. (Ie4d84, b/341723133)
Correzioni di bug
- È stata aggiunta la documentazione su
NavType.serializeAsValue
eserializeAsValues
per evidenziare che gli output finali devono utilizzare la codifica URI. (Ida6bd, b/344943214) - È stato risolto l'arresto anomalo durante la chiamata a
toRoute<T>
con un argomentoCollectionNavType
null. Quando navighi con unCollectionNavType
nullo, l'argomento di output sarà il valore predefinito dichiarato nella classe Serializable o il valore restituito diemptyCollection()
se non esiste un valore predefinito. (I84158, Id630f, b/342672856)
Versione 2.8.0-beta02
29 maggio 2024
androidx.navigation:navigation-*:2.8.0-beta02
viene rilasciato. La versione 2.8.0-beta02 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo di
ClassCastException
quando si utilizzaNavBackStackEntry.toRoute
con unNavType
personalizzato con valori null. (I1c29b, b/342239473) - Sono stati risolti i problemi di ripristino dello stato della pila di navigazione causati dal tentativo di ripristinare una voce della pila di navigazione non raggiungibile tramite ID dalla destinazione corrente. Poiché le route sono supportate da ID, sono state interessate anche le destinazioni create con route. Viene inoltre corretto un arresto anomalo causato dalla chiamata a
clearBackStack()
che aveva lo stesso problema di fondo. (I423c3, b/339908057)
Versione 2.8.0-beta01
14 maggio 2024
androidx.navigation:navigation-*:2.8.0-beta01
viene rilasciato. La versione 2.8.0-beta01 contiene questi commit.
Modifiche all'API
SavedStateHandle.toRoute()
ora accetta un parametrotypeMap
per i tipi di argomenti personalizzati. (Ie39fb, b/339026523)- È stata aggiunta un'API di test a
navigation-testing
per creare unSavedStateHandle
da un oggetto Kotlin Serializable. (Id4867, b/339080702)
Correzioni di bug
- Sono state aggiunte le documentazioni dei parametri mancanti per le funzioni DSL di Kotlin di navigazione. (I26a36)
Versione 2.8.0-alpha08
1° maggio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha08
. La versione 2.8.0-alpha08 contiene questi commit.
Safe Args in Navigation Compose
- I lavori per supportare la sicurezza del tipo in fase di compilazione per Navigation Compose e gli utenti del DSL Kotlin Navigation basato sulla serializzazione Kotlin sono stati completati e le API precedentemente sperimentali sono ora stabili. (Iea94d, I0eb0d, I873b7, I3a64b, I6c3a2, I11f0b, Ic3032, I8d394, I95710, Ice060, Id0e55, I45f8b, Idcdaf, If5380, I08b23, Ia5c59, b/188693139)
Questa funzionalità utilizza la serializzazione Kotlin per consentirti di definire le destinazioni nel grafico di navigazione tramite oggetti e classi di dati sicuri per i tipi:
// Define a home destination that doesn't take any arguments
@Serializable
object Home
// Define a profile destination that takes an ID
@Serializable
data class Profile(val id: String)
// Now define your NavHost using type safe objects
NavHost(navController, startDestination = Home) {
composable<Home> {
HomeScreen(onNavigateToProfile = { id ->
navController.navigate(Profile(id))
})
}
composable<Profile> { backStackEntry ->
val profile: Profile = backStackEntry.toRoute()
ProfileScreen(profile)
}
}
Per ulteriori informazioni, leggi il post del blog su Compose Navigazione e sulla sicurezza dei tipi.
Nuove funzionalità
- L'elemento
navigation-fragment-compose
ora fornisce una composizioneLocalFragment
locale per i metodi composable all'interno di unComposableFragment
. (If35e5) NavType
ora supporta di serie gli elenchi di Int, String, Boolean, Float e Long. (I4b6dd, Ia914c, b/188693139)
Versione 2.8.0-alpha07
17 aprile 2024
androidx.navigation:navigation-*:2.8.0-alpha07
viene rilasciato. La versione 2.8.0-alpha07 contiene questi commit.
Nuove funzionalità
Aggiunge un nuovo elemento
navigation-fragment-compose
che include un'alternativaComposableNavHostFragment
aNavHostFragment
che consente di aggiungere destinazionicomposable
ai file XML di navigazione. Ogni destinazionecomposable
deve essere espressa come metodo di primo livello, senza argomento@Composable
, il cui nome completo viene utilizzato come attributoandroid:name
su ogni destinazione. Quando accedi 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 all'API
- Il supporto di Safe Args in Navigation Compose tramite un approccio basato sulla serializzazione di Kotlin è continuato. Queste API sono non finalizzate e sono contrassegnate dall'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa quando l'intera API sarà completata in una release futura.
Versione 2.8.0-alpha06
3 aprile 2024
androidx.navigation:navigation-*:2.8.0-alpha06
viene 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 sulla serializzazione Kotlin. Queste API sono non finalizzate e sono contrassegnate dall'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa al termine dell'intera piattaforma dell'API in una release futura. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e14, Ibb13e, If44d3, Icb70f, I8972f, I1d432, Icf32b, I20a14, I262aa, I7de99, I35990, I1033d, b/188693139)
Correzioni di bug
NavHost
ora utilizzaAlignment.TopStart
come argomento contentAlignment predefinito. In questo modo, il comportamento è in linea con quello predefinito perAnimatedContent
e vengono corrette alcune istanze di una scala imprevista dalla transizione al centro. (I09e72, b/330111602)- Quando esegui il gesto di scorrimento verso il retro predittivo durante l'utilizzo di Scrittura di navigazione, ora
NavHost
completerà correttamente la transizione personalizzata anziché terminare immediatamente. (I99017, b/327292110)
Versione 2.8.0-alpha05
20 marzo 2024
androidx.navigation:navigation-*:2.8.0-alpha05
viene rilasciato. La versione 2.8.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora puoi passare argomenti a
startDestination
diNavGraph
direttamente nella routestartDestination
senza fare affidamento sudefaultValue
. Questo vale anche perNavGraph
startDestinations
nidificati. (I0e0b5, b/109505019, b/188693139)
Modifiche alle API
- È stata aggiunta una nuova classe astratta
CollectionNavType<T>
, una sottoclasse diNavType<T>
per gli argomenti basati su raccolte come elenchi, array e mappe. (Ic6d63, b/188693139) - Tutti gli array
NavType
predefiniti (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora sono di tipoCollectionNavType
(Idcf79, b/188693139) NavType
ora fornisce una nuova APIvalueEquals
aperta che determina se due valori dello stesso tipo sono uguali tra loro. (I6cb97, b/327229511)
Correzioni di bug
- I parametri di query nei link diretti ora ammettono valori sotto forma di parentesi graffe intorno al nome dell'argomento (ad es.
{argName}
) come valori validi perNavTypes
basato su stringhe. In questo modo viene risolto un problema per cui un valore di questo tipo sarebbe considerato non valido (o assenza di valore) per tutti i tipi. (I18302, b/327274038) - Le funzioni
NavController
che supportano percorsi comenavigate
opopBackStack
ora possono abbinare correttamente i percorsi inseriti con gli argomenti dell'arrayNavTypes
. (Iea805, b/327229511)
Versione 2.8.0-alpha04
6 marzo 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha04
. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- Ora puoi specificare
SizeTranform
per le transizioni in Navigation Compose definendole nell'ambito dell'inizializzazione delle funzionicomposable
e/onavigation
. (I91062, b/296912651)
Correzioni di bug
- È stato risolto un problema per cui
NavHost
nella navigazione di composizione non riusciva a mostrare correttamente la transizione quando si utilizzava il tasto Indietro di sistema senza un gesto. (Iceeae, b/325998468)
Versione 2.8.0-alpha03
21 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha03
viene rilasciato. La versione 2.8.0-alpha03 contiene questi commit.
Modifiche all'API
NavBackStackEntry.savedStateHandle
ora è contrassegnato come@MainThread
perché utilizza il codice che deve comunque essere nel thread principale. (Ibb988, b/299523245)
Correzioni di bug
- È stato risolto un problema di navigazione a causa del quale
NavGraph
ViewModel diventavaDESTROYED
troppo presto perché il valoreViewModel
della voce associata non faceva parte dello stato salvato. (Ib6bb7, b/317581849)
Aggiornamento delle dipendenze
- La funzionalità Scrivi di navigazione ora dipende da Compose 1.7.0-alpha03.
Versione 2.8.0-alpha02
7 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha02
viene rilasciato. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- La funzionalità di navigazione Componi ora supporta il pulsante Indietro in-app predittivo tramite le nuove API
SeekableTransitionState
di compose-animation. In questo modo puoi utilizzare il gesto Indietro per vedere la destinazione precedente con la transizione personalizzata prima di decidere se confermare la transazione tramite il gesto completato o annullare. (I8b8e9)
Versione 2.8.0-alpha01
24 gennaio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha01
. La versione 2.8.0-alpha01 contiene questi commit.
Correzioni di bug
- È stato corretto una perdita di
BackStackState
in cui più chiamatesaveState
su una destinazione comportavano il salvataggio di più stati, ma solo il primo poteva essere ripristinato. (I598b0, b/309559751) - È stato risolto un problema per cui gli argomenti non stringa non venivano visualizzati correttamente quando si utilizzavano gli helper
NavigationUI
per compilare il titolo delle barre dell'app. (#636, b/316676794)
Aggiornamento delle dipendenze
- Scrittura navigazione ora dipende dalla funzionalità Scrivi
1.7.0-alpha01
che risolve un problema che potrebbe causare un'animazione in scala imprevista. (b/297258205)
Contributo esterno
- Grazie a SimonMarquis per aver risolto il problema di visualizzazione degli argomenti non String quando si utilizzano gli aiuti
NavigationUI
per compilare il titolo delle barre delle app.
Versione 2.7.7
Versione 2.7.7
7 febbraio 2024
androidx.navigation:navigation-*:2.7.7
viene rilasciato. La versione 2.7.7 contiene questi commit.
Correzioni di bug
- Backportato da Navigazione
2.8.0-alpha01
: è stato corretto una perdita diBackStackState
in cui più chiamatesaveState()
su un singoloNavBackStackEntry
comportavano il salvataggio di più stati, ma solo il primo stato salvato poteva essere ripristinato. (I598b0, b/309559751) - Backport da Navigazione
2.8.0-alpha01
: è stato risolto un problema per cui gli argomenti non di stringa non venivano visualizzati correttamente quando si utilizzavano gli aiutiNavigationUI
per compilare il titolo delle barre delle app. (#636, b/316676794)
Contributo esterno
- Grazie a SimonMarquis per aver risolto il problema di visualizzazione degli argomenti non String quando si utilizzano gli aiuti
NavigationUI
per compilare il titolo delle barre delle app.
Versione 2.7.6
Versione 2.7.6
13 dicembre 2023
androidx.navigation:navigation-*:2.7.6
viene rilasciato. La versione 2.7.6 contiene questi commit.
Correzioni di bug
- La funzione
NavGraph
equals()
ora prende in considerazione correttamente i nodi dell'altro grafico anziché solo quello che chiama. 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
Viene rilasciato androidx.navigation:navigation-*:2.7.5
. La versione 2.7.5 contiene questi commit.
Miglioramenti del rendimento
- Sono state notevolmente migliorate le prestazioni (sia in termini di tempo che di numero di allocazioni) del confronto tra due grafici. Ciò significa che le chiamate come
setGraph
, che confrontano internamente il nuovo grafico con quello esistente, sono molto più veloci e comportano un minor numero di frame ignorati. Grazie a Michał Z per l'analisi approfondita che ha portato a questo miglioramento. (I6ad62) NavHost
ora eseguirà il rendering della destinazione iniziale nel primo passaggio di composizione anziché 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 espulso se chiamavi
setGraph
più volte con lo stesso grafico esatto 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 il passaggio e che sono state chiuse in rapida successione non verranno più visualizzate nell'elenco di
NavController.visibleEntries
. (I67586, b/287969970) - Quando viene visualizzata una voce dopo una modifica alla configurazione, il valore
ViewModel
della voce viene cancellato correttamente sesaveState
è false. (Idf242, b/298164648) - È stato corretto un problema per cui
NavController
poteva gestire lo stesso link diretto più di una volta se lo stack di ritorno era completamente vuoto prima di una modifica della configurazione o di una chiamata asetGraph
solo quando l'intent in arrivo aveva il flagFLAG_ACTIVITY_NEW_TASK
impostato. (I73c7f)
Aggiornamenti delle dipendenze
- La navigazione con Frammenti ora dipende da Fragment 1.6.2, che risolve il problema per cui le istanze
ViewModel
di frammenti nidificati non vengono cancellate durante la chiamata aclearBackStack
.
Versione 2.7.4
Versione 2.7.4
4 ottobre 2023
androidx.navigation:navigation-*:2.7.4
viene rilasciato. La versione 2.7.4 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per
popUpTo
per utilizzare percorsi con argomenti per consentire di tornare a una voce specifica che utilizza gli stessi argomenti, in linea con il supporto disponibile inpopBackStack
. (I731f4, b/299255572)
Correzioni di bug
- È stato risolto il problema per cui l'interruzione di una navigazione con un'altra navigazione con
popUpTo
causava l'arresto anomalo diFragmentNavigator
. (I3c848, b/301887045) - È stato risolto il problema per cui la pressione del tasto Indietro del sistema causava il mancato aggiornamento corretto di
currentDestination
in modo che corrispondesse al frammento visualizzato. (Id0d6c, b/289877514) - Il ciclo di vita di
DialogFragment
passerà ora correttamente allo statoRESUMED
quando la finestra di dialogo soprastante viene chiusa. (I88f0d, b/301811387)
Versione 2.7.3
Versione 2.7.3
20 settembre 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.3
. La versione 2.7.3 contiene questi commit.
Correzioni di bug
- È stato risolto un problema nella navigazione con i frammenti che causava l'inserimento di voci errate nell'elenco
visibleEntries
. (I5caa9, b/288520638) - È stato risolto un problema che causava la mancata ricezione di un callback Lifecycle
RESUMED
per la destinazione della finestra mobile (ad es.Dialogs
,Bottomsheets
e così via). (I3b866, b/287505132)
Versione 2.7.2
Versione 2.7.2
6 settembre 2023
androidx.navigation:navigation-*:2.7.2
viene rilasciato. La versione 2.7.2 contiene questi commit.
Correzioni di bug
- La navigazione ora dipende dal Ciclo di vita
2.6.2
, dalla correzione di un'interazione trarememberSaveable
eNavHost
di navigazione di navigazione che causerebbe il ripristino dello statorememberSaveable
delle destinazioni e di qualsiasi istanzaSavedStateHandle
di proprietà diViewModel
dopo la morte e la ricreazione del processo. (b/298059596, b/289436035) - È stato risolto un problema relativo alla visualizzazione simultanea di più finestre di dialogo in Navigazione Componi, in cui le finestre di dialogo parzialmente oscurate (ad es. non la finestra di dialogo più in alto) si trovavano nello stato di ciclo di vita
CREATED
anziché nello statoSTARTED
. (aosp/2728520, b/289257213) - È stato risolto un problema relativo alla visualizzazione simultanea di più finestre di dialogo in Scrittura in Navigazione. La chiusura della finestra di dialogo più in alto causava il blocco di quest'ultima nello stato Ciclo di vita
STARTED
anziché essere correttamente spostata inRESUMED
. (aosp/2629401, b/286371387) - Navigation Safe Args non esegue più l'inizializzazione anticipata dell'attività se non viene effettivamente eseguita. (I0e385, b/260322841)
Aggiornamento delle dipendenze
- La funzionalità di composizione della navigazione ora dipende da Compose 1.5.1.
Versione 2.7.1
Versione 2.7.1
23 agosto 2023
androidx.navigation:navigation-*:2.7.1
viene rilasciato. La versione 2.7.1 contiene questi commit.
Correzioni di bug
- È stato risolto un problema della navigazione con Compose a causa del quale, quando si utilizzava un
Scaffold
era possibile ricevere un errore durante il tentativo di accesso a unLifecycle.State.DESTROYED
ViewModel
. (I1dc11, b/268422136)
Versione 2.7.0
Versione 2.7.0
9 agosto 2023
androidx.navigation:navigation-*:2.7.0
viene rilasciato. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
Animazioni di Accompagnatore
Ora che AnimatedContent
è stabile, siamo riusciti a spostare il codice da Accompanist Navigation Animation nella stessa composizione di navigazione.
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 presto ne verrà ritirato il supporto, insieme alle indicazioni su come eseguire la migrazione di nuovo a Navigation Compose. Tuttavia, la procedura sarà l'inverso della guida alla migrazione e non saranno necessarie altre modifiche all'API se utilizzi già la versione alpha più recente di Accompanist (0.31.2-alpha
). (b/197140101)
Correzioni di bug
- NavHost in Navigation Compose ora intercetta correttamente le chiamate di sistema precedenti anche dopo l'interruzione e la ripresa dell'attività. (Icb6de, b/279118447)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Componi
1.5.0
da1.1.0
.
Versione 2.7.0-rc01
26 luglio 2023
androidx.navigation:navigation-*:2.7.0-rc01
viene rilasciato. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui le funzioni lambda
EnterTransition
eExitTransition
create nell'ambito diNavHost
potevano potenzialmente rimanere in memoria anche dopo la rimozione diNavHost
dalla composizione. (I893d0)
Problemi noti
- Nella versione 2.6.x di Navigation si verifica un problema che, durante la navigazione con popUpTo, può causare un
IllegalArgumentException
. È possibile che questa eccezione possa essere evitata ristrutturando il grafico, in modo simile al consiglio suggerito qui. (b/287133013)
Versione 2.7.0-beta02
28 giugno 2023
androidx.navigation:navigation-*:2.7.0-beta02
viene rilasciato. La versione 2.7.0-beta02 contiene questi commit.
Correzioni di bug
- La funzionalità Scrittura guidata della navigazione ora ha l'ordine z corretto per le transizioni personalizzate che utilizzano la navigazione con l'opzione
popUpTo
.(/Ib1c3a, b/285153947)
Versione 2.7.0-beta01
7 giugno 2023
androidx.navigation:navigation-*:2.7.0-beta01
viene rilasciato. La versione 2.7.0-beta01 contiene questi commit.
Correzioni di bug
- Ora
NavHost
in Compose di navigazione intercetta correttamente le chiamate di sistema successive anche dopo cheActivity
è statoSTOPPED
eRESUMED
. (Icb6de, b/279118447)
Versione 2.7.0-alpha01
24 maggio 2023
androidx.navigation:navigation-*:2.7.0-alpha01
viene rilasciato. La versione 2.7.0-alpha01 contiene questi commit.
Animazioni dell'accompagnatore
Ora che AnimatedContent
è stabile, siamo riusciti a spostare il codice da Accompanist Navigation Animation nella stessa composizione di navigazione.
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 presto ne verrà ritirato il supporto, insieme alle indicazioni su come eseguire la migrazione di nuovo a Navigation Compose. Tuttavia, la procedura sarà l'inverso della guida alla migrazione e non saranno necessarie altre modifiche all'API se utilizzi già la versione alpha più recente di Accompanist (0.31.2-alpha
). (b/197140101)
Correzioni di bug
- In Navigazione
2.6.0-rc02
: è stato risolto un problema di navigazione nei frammenti in cui la navigazione conpopUpTo
e l'estrazione di un frammento dallo stack precedente senza ricreare la relativa visualizzazione causavano l'interruzione del funzionamento del pulsante Indietro del sistema. (Ieb8d4, b/281726455)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Componi
1.5.0-beta01
.
Versione 2.6.0
Versione 2.6.0
7 giugno 2023
Viene rilasciato androidx.navigation:navigation-*:2.6.0
. La versione 2.6.0 contiene questi commit.
Modifiche importanti a Navigazione dalla versione 2.5.0
- I
arguments
diNavBackStackEntry
e iarguments
passati aOnDestinationChangedListener
sono ora solo una copia degli argomenti immutabili creati quando hai raggiunto la destinazione. Ciò significa che le modifiche apportate a questi pacchetti non verranno applicate agli accessi successivi alle istanzearguments
o ad altre istanzeOnDestinationChangedListener
. NavDeepLink
ora supporta i valori predefiniti per gli array, il che consente di supportare i parametri di query ripetuti che verranno mappati al tipo di array dell'argomento.NavType
ora include anche un metodo predefinito che può essere sostituito per combinare due valori analizzati.- Le sottoclassi personalizzate di
NavType
ora possono eseguire l'override diserializeAsValue
per serializzare un valore in una stringa, consentendo sia la serializzazione sia la deserializzazione (tramiteparseValue
) di essere completamente incapsulate nella classeNavType
. OraStringType
esegue l'override di questo metodo per chiamareUri.encode
sul criterioString
specificato.
Modifiche importanti a Componi navigazione dalla versione 2.5.0
- Quando viene visualizzata l'anteprima di un composable con
NavHost
, ora viene mostrato per impostazione predefinita ilstartDestination
di NavGraph. - Ora
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
eNavController.clearBackStack(route)
supportano tutti i percorsi con argomenti parzialmente o completamente compilati. Tieni presente che gli argomenti devono corrispondere esattamente a quelli della voce. - Il tentativo di creare un
NavDeepLink
vuoto utilizzando il DSL KotlinnavDeepLink
ora comporterà un avviso lint che indica che un link diretto deve avere un uri, un'azione e/o un mimetype per essere valido.
Modifiche importanti alla navigazione con Fragments dalla versione 2.5.0
NavHostFragment
non intercetta più il pulsante Indietro del sistema. In questo modo l'elementoFragmentManager
sottostante può gestire il sistema. In questo modo, il componente Fragment1.7.0-alpha01
e versioni successive possono fornire un'animazione di ritorno in-app predittiva sui dispositivi Android U.- Quando utilizzi la navigazione con i frammenti, il tentativo di eseguire manualmente un
FragmentTransaction
che aggiunge un frammento alla pila di ritorno diFragmentManager
ora genera unIllegalArgumentException
. Devi sempre aggiungere i frammenti tramite l'APInavigate()
. - Quando utilizzi la stringa esatta
${applicationId}
come segnaposto negli attributiapp:data
eapp:dataPattern
nell'elemento activity di un file XML di navigazione, il segnaposto verrà compilato automaticamente con ilpackageName
del contesto al momento dell'inflazione. FragmentNavigator
ora utilizza le API di transizione durante la navigazione e la creazione diNavBackStackEntries
. Ciò significa cheNavBackStackEntry
Lifecycle
ora attenderà il completamento degli effetti speciali dei frammenti di entrata e di uscita prima di spostare ilLifecycle.State
finale.DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e la creazione diNavBackStackEntries
. Ciò significa cheNavBackStackEntry
Lifecycle
ora attenderà cheDialogFragment
Lifecycle
passi aDESTROYED
prima di passare aDESTROYED
.NavHostFragment
ora ti consente di recuperare ilNavController
non appena ilNavHostFragment
è collegato alFragmentManager
, anziché solo dopoonCreate()
.- Il supporto della navigazione per i moduli delle funzionalità dinamiche ora dipende dalla libreria granulare di Play Feature Delivery.
- Navigation Safe Args ora dipende dalla versione 7.3.0 del plug-in Android per Gradle. Ciò significa che ora è compatibile solo con le versioni 7.3.0+.
Modifiche importanti a NavigationUI dalla versione 2.5.0
- Quando viene passato l'ID di un grafo di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione iniziale del grafo di navigazione come destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafo come destinazione di primo livello. Il comportamento di passaggio dell'ID di una singola destinazione rimane invariato. Questa stessa funzionalità è disponibile per il tuo codice tramite la nuova funzioneisTopLevelDestination
suAppBarConfiguration
. - Le integrazioni di
setupWithNavController
inNavigationUI
per l'utilizzo della barra delle app in alto ora analizzeranno i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei relativi valori Stringa anziché in uscita l'intero della risorsa generato automaticamente. NavigationUI
ora fornisce i log quando non riesce a navigare tramite unMenuItem
selezionato.
Versione 2.6.0-rc02
24 maggio 2023
androidx.navigation:navigation-*:2.6.0-rc02
viene rilasciato. La versione 2.6.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di navigazione nei frammenti per cui, se si navigava con
popUpTo
e si estraeva un frammento dallo stack precedente senza ricrearne la visualizzazione, il pulsante Indietro del sistema smetteva di funzionare. (Ieb8d4, b/281726455)
Versione 2.6.0-rc01
10 maggio 2023
androidx.navigation:navigation-*:2.6.0-rc01
viene rilasciato. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema nella navigazione con i frammenti per cui la rimozione di un frammento tramite navigate con
popUpTo
nel relativo callback del ciclo di vitaonResume()
causava unIllegalStateException
. (I21884, b/279644470)
Versione 2.6.0-beta01
19 aprile 2023
androidx.navigation:navigation-*:2.6.0-beta01
viene rilasciato. La versione 2.6.0-beta01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora fornisce un'implementazione personalizzata ditoString
. (Iff00b)
Correzioni di bug
- Quando utilizzi la navigazione con i frammenti, il tentativo di eseguire manualmente un
FragmentTransaction
che aggiunge un frammento alla pila di ritorno diFragmentManager
ora genera unIllegalArgumentException
. Devi sempre aggiungere i frammenti tramite l'APInavigate()
. (I6d38e) - Quando c'è un
navigate
che aggiunge una voce e unpopBackStack
che la rimuove nello stesso frame, la voce superiore risultante nello stack posteriore ora farà di nuovo regolarmente tornare alla classeRESUMED
Lifecycle.State
. (Id8067, b/276495952)
Versione 2.6.0-alpha09
5 aprile 2023
androidx.navigation:navigation-*:2.6.0-alpha09
viene rilasciato. La versione 2.6.0-alpha09 contiene questi commit.
Correzioni di bug
- Controllo corretto della presenza di route non valide in modo che, se un
NavDestination
contieneNavArgument
con valori non null, la route di questa destinazione deve contenere segnaposto per argomenti con lo stesso nome diNavArgument
non null. (Ic62bf, b/274697949) - Le navigazioni con link diretti basate su
Action/MimeType
ora non andranno a buon fine se nell'operazione di navigazione manca unNavArgument
non nullo richiesto dalNavDestination
a cui corrispondeAction/MimeType
. (Ibfa17, b/271777424) - Quando
NavController
imposta un grafo con la stessa route e le stesse destinazioni del grafo precedente, ora sostituisce correttamente i nodi del grafo corrente e le destinazioni della pila precedente con nuove istanze. Questo corregge un arresto anomalo durante l'utilizzo dionLaunchSingleTop
senza salvare lo stato in Scrittura di navigazione. Inoltre, è stato corretto un errore relativo alla navigazione verso le destinazioni associate alle build del grafico principale e al back stack errato. (I5bc58, b/275258161, b/275407804)
Versione 2.6.0-alpha08
22 marzo 2023
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha08
. La versione 2.6.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHostFragment
ora ti consente di recuperare ilNavController
non appena ilNavHostFragment
è collegato alFragmentManager
, anziché solo dopoonCreate()
. (Ic6382, b/220186282)
Correzioni di bug
- È stato corretto un
NullPointerException
quando viene visualizzato un grafico nidificato che include un argomento non null. (6b3581, b/249988437) - Quando utilizzi il tasto Indietro del sistema dopo aver eseguito la navigazione con
popUpTo
, lo stato diNavController
verrà visualizzato nella voce corretta. (I3a8ec, b/270447657) FragmentNavigator
ora mostrerà correttamente le voci quando lo stack precedente viene creato tramite system back opopBackStack()
e se la transazione utilizza o meno effetti per il frammento. (I81bdf)- L'aggiunta di frammenti al
FragmentNavigator
FragmentManager
senza utilizzare la navigazione non causerà più un arresto anomalo. (b17204, b/274167493)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Ciclo di vita
2.6.1
. (586fe7) - La navigazione ora dipende da SavedState
1.2.1
. (078e4e) - La navigazione ora dipende da ProfileInstaller
1.3.0
. (512f0c)
Versione 2.6.0-alpha07
8 marzo 2023
androidx.navigation:navigation-*:2.6.0-alpha07
viene rilasciato. La versione 2.6.0-alpha07 contiene questi commit.
Correzioni di bug
- Le varianti API
getBackStackEntry
,popBackStack
eclearBackStack
che accettano route ora assumono pattern di route con argomenti e parametri di query null (I22294, b/269302500) - È stato risolto un problema per cui l'istruzione
clearBackStack()
chiamata daNavController
non cancellava lo stato salvato nel gestore dei frammenti associato allo stack di ritorno cancellato. (Ic1cce, b/271190202) - È stata corretta una regressione nella versione 2.6.0-alpha06 che causava l'evidenziazione del
MenuItem
errato nelBottomNavigationView
quando si utilizzava Indietro di sistema tra le schede. (I634f6, b/270447657) - È stata corretta la regressione nella versione 2.6.0-alpha06 che causava il mancato spostamento di
NavBackStackEntry
nello stato RIPRENDITO quando si utilizzavanoAnimation
. (Ib3589, b/269646882)
Versione 2.6.0-alpha06
22 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha06
viene rilasciato. La versione 2.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Quando viene visualizzata l'anteprima di un composable con
NavHost
, ora viene mostrato per impostazione predefinita ilstartDestination
di NavGraph. (I2b89f)
Modifiche all'API
- Tutti i sovraccarichi di
NavController
navigate
sono ora annotati con@MainThread
per garantire che vengano chiamati nel thread principale. (I2c0b0, b/263427111)
Correzioni di bug
- È stato corretto un arresto anomalo durante il tentativo di navigazione durante l'utilizzo della navigazione tra i frammenti dinamici. (I3ee29, b/268360479)
- È stato corretto un bug a causa del quale il passaggio a un altro frammento tramite il pulsante Indietro di sistema non aggiornava la barra in basso con l'elemento selezionato corretto (If559f, b/269044426)
Problemi noti
- Quando utilizzi la navigazione con i frammenti, il ciclo di vita di
NavBackStackEntry
non riesce a raggiungereRESUMED
quando utilizzi le APIAnimation
. (b/269646882) - Quando utilizzi la navigazione con Fragments e la navigazione con
BottomNavigation
, se tenti di ripristinare uno stack posteriore con più voci,BottomMenuItem
non viene aggiornato correttamente. (b/270447657) - Quando utilizzi la navigazione con i frammenti, dopo il ripristino dello stato
NavBackStackEntry
Lifecycle
non riceveDESTROYED
quando il suo frammento èDESTROYED
. (b/270610768)
Versione 2.6.0-alpha05
8 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha05
viene rilasciato. La versione 2.6.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
eNavController.clearBackStack(route)
supportano tutti i percorsi con argomenti parzialmente o completamente compilati. Tieni presente che gli argomenti devono corrispondere esattamente a quelli della voce. (Iebd28, Ic678c, I3b37b, b/257514373) FragmentNavigator
ora utilizza le API di transizione durante la navigazione e la visualizzazione di popupNavBackStackEntries
. Ciò significa che l'Lifecycle
NavBackStackEntry
attenderà il completamento degli effetti speciali del frammento in entrata e in uscita prima di spostare l'ultimoLifecycle.State
. (I3cb19, b/238686802)DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e la visualizzazione di popupNavBackStackEntries
. Ciò significa cheNavBackStackEntry
Lifecycle
ora attenderà cheDialogFragment
Lifecycle
passi aDESTROYED
prima di passare aDESTROYED
. (I53ee5, b/261213893)
Modifiche all'API
NavigatorState
ora fornisce l'APIprepareForTransition
per consentire aiNavigator
di spostareNavBackStackEntries
aiLifecycle.State
intermedi. (I42c21, b/238686802)- Ora puoi accedere alla pila di ritorno associata a un
NavGraphNavigator
o a unComposeNavigator
tramite una proprietàbackstack
.ComposeNavigator
ora espone anche il callbackonTransitionComplete()
per contrassegnare come completato unNavBackStackEntry
che ha eseguito un'operazione di navigazione opopBackStack
. (I02062, I718db, b/257519195)
Correzioni di bug
- Lo stato del navigatore ora non eseguirà alcuna operazione quando utilizzi le API
push/popWithTransition
e la voce è già in fase di elaborazione. (Iadbfa, b/261213893) - Quando utilizzi
launchSingleTop
con unNavGraph
nidificato, tutte le destinazioni che partono dalla destinazione originale fino al relativostartDestination
verranno aggiunte correttamente solo nella parte superiore della backstack. (Id4bea, b/253256629) - La navigazione ora sostituirà correttamente l'istanza
DialogFragment
quando si naviga verso la stessa destinazione con il flaglaunchSingleTop
impostato su true. (I45b5a, b/149572817) - Navigazione SafeArgs non causerà più un errore di compilazione quando utilizzi argomenti di esattamente 19 caratteri. (Id60bc, b/257110095)
Versione 2.6.0-alpha04
9 novembre 2022
androidx.navigation:navigation-*:2.6.0-alpha04
viene rilasciato. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- Le sottoclassi personalizzate di
NavType
ora possono eseguire l'override diserializeAsValue
per serializzare un valore in una stringa, consentendo sia la serializzazione sia la deserializzazione (tramiteparseValue
) di essere completamente incapsulate nella classeNavType
.StringType
ora sostituisce questo metodo per chiamareUri.encode
sulString
specificato. (Ie5213, b/247637434) NavigationUI
ora fornisce i log quando non riesce a navigare tramite unMenuItem
selezionato. (I2af5a, b/247730357)
Correzioni di bug
- I link diretti per la navigazione ora vengono analizzati in modo lento invece che durante l'inizializzazione del grafico, il che potrebbe migliorare le prestazioni dell'app all'avvio. (Iab0ab)
- È stato corretto un arresto anomalo causato dal passaggio in alto dopo il link diretto a una destinazione con argomenti predefiniti null. (I51c24, b/243183636)
Aggiornamento delle dipendenze
- Il supporto di Navigation per i moduli di funzionalità dinamici ora dipende dalla libreria granulare Play Feature Delivery. (Ib4ddc)
- Navigation Safe Args ora dipende dalla versione 7.3.0 del plug-in Android per Gradle. Ciò significa che ora è compatibile solo con le versioni 7.3.0 e successive. (I47e49)
Versione 2.6.0-alpha03
24 ottobre 2022
androidx.navigation:navigation-*:2.6.0-alpha03
viene rilasciato. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- In Navigazione
2.5.3
:NavHost
non causerà più unNoSuchElementException
quando non è disponibile una destinazione per la composizione diCrossfade
. Ora salterà la composizione. (Ieb46e, b/253299416) - In Navigazione
2.5.3
: è stato risolto un problema per cui lo stato di Scrittura salvato (ad es. gli utilizzi dirememberSaveable
) non veniva dimenticato e rimosso quando una destinazione veniva rimossa dallo stack precedente. (I64949)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal componente Fragment
1.5.4
. (Icd424)
Versione 2.6.0-alpha02
5 ottobre 2022
androidx.navigation:navigation-*:2.6.0-alpha02
viene rilasciato. La versione 2.6.0-alpha02 contiene questi commit.
Modifiche al comportamento
- Quando viene passato l'ID di un grafo di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione iniziale del grafo di navigazione come destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafo come destinazione di primo livello. Il comportamento di passaggio dell'ID di una singola destinazione rimane invariato. Questa stessa funzionalità è disponibile per il tuo codice tramite la nuova funzioneisTopLevelDestination
suAppBarConfiguration
. (Ie936e, b/238496771)
Correzioni di bug
- Il componente
navigation:navigation-fragment
ora dipende dalla versione del frammento1.5.2
. (I00ba4) - Il menu selezionato non verrà più aggiornato quando si passa a una destinazione
FloatingWindow
, ad esempio una finestra di dialogo. (I4cde8, b/240308330)
Versione 2.6.0-alpha01
7 settembre 2022
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha01
. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Le integrazioni di
setupWithNavController
inNavigationUI
per l'utilizzo della barra delle app in alto ora analizzeranno i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei relativi valori Stringa anziché in uscita l'intero della risorsa generato automaticamente. (I5f803, b/167959935) NavDeepLink
ora supporta i valori predefiniti per gli array, il che consente di supportare i parametri di query ripetuti che verranno mappati al tipo di array dell'argomento.NavType
ora include anche un metodo predefinito che può essere sostituito per combinare due valori analizzati. (Id68c3, b/209977108)- Quando utilizzi la stringa esatta
${applicationId}
come segnaposto negli attributiapp:data
eapp:dataPattern
nell'elemento activity di un file XML di navigazione, il segnaposto verrà compilato automaticamente con ilpackageName
del contesto al momento dell'inflazione. (Iaabde, b/234223561) - Il tentativo di creare un
NavDeepLink
vuoto utilizzando il DSL KotlinnavDeepLink
ora comporterà un avviso lint che indica che un link diretto deve avere un uri, un'azione e/o un mimetype per essere valido. (I08d2f, b/154038883)
Modifiche all'API
- È stata aggiunta una nuova funzione di estensione
NavDestination
per analizzare le etichette dinamiche con argomenti sotto forma diandroid:label="{arg}"
in stringa. Supporta argomentiReferenceType
mediante l'analisi dei valoriR.string
nei relativi valori String. (I07d89, b/236269380)
Modifiche al comportamento
arguments
di NavBackStackEntry earguments
passato a unOnDestinationChangedListener
ora sono solo una copia degli argomenti immutabili creati quando hai eseguito la navigazione fino alla destinazione. Ciò significa che le modifiche apportate a questi pacchetti non si rifletteranno nei successivi accessi all'istanzaarguments
o ad altre istanze diOnDestinationChangedListener
. (I676f5)
Correzioni di bug
- In Navigazione
2.5.2
: la navigazione dinamica ora tenta correttamente di installare le destinazioni Attività da altri moduli prima di passare a queste. (Ia2c16, b/240292838) - In Navigazione
2.5.2
: ora la navigazione sostituirà correttamente l'istanza del frammento quando si accede alla stessa destinazione e si imposta il flaglaunchSingleTop
su true. (I5a2f1, b/237374580) - In Navigazione
2.5.2
: è stato corretto un problemaIllegalStateException
causato dal passaggio a un grafo con doppio nidificazione che condivide un nodo principale con una nuova destinazione di partenza visualizzata. (I9f7cb, b/243778589)
Versione 2.5
Versione 2.5.3
24 ottobre 2022
androidx.navigation:navigation-*:2.5.3
viene rilasciato. La versione 2.5.3 contiene questi commit.
Correzioni di bug
NavHost
non causerà più unNoSuchElementException
quando non è disponibile una destinazione per la composizione delCrossfade
. Ora salterà la composizione. (Ieb46e, b/253299416)- È stato risolto un problema per cui lo stato di Scrittura salvato (ad es. gli utilizzi di
rememberSaveable
) non veniva dimenticato e rimosso quando una destinazione veniva rimossa dallo stack precedente. (I64949)
Versione 2.5.2
7 settembre 2022
androidx.navigation:navigation-*:2.5.2
viene rilasciato. La versione 2.5.2 contiene questi commit.
Correzioni di bug
- La navigazione dinamica ora tenta correttamente di installare le destinazioni Attività da altri moduli prima di passare a queste destinazioni. (Ia2c16, b/240292838)
- La navigazione ora sostituirà correttamente l'istanza del frammento quando si naviga verso la stessa destinazione e si imposta il flag
launchSingleTop
su true. (I5a2f1, b/237374580) - È stato corretto un problema
IllegalStateException
causato dal passaggio a un grafo con doppio nidificazione che condivide un elemento principale con una nuova destinazione di partenza visualizzata. (I9f7cb, b/243778589)
Aggiornamento delle dipendenze
- La navigazione
2.5.2
ora dipende dal componente Fragment1.5.2
. (aosp/2178734)
Versione 2.5.1
27 luglio 2022
androidx.navigation:navigation-*:2.5.1
viene rilasciato. La versione 2.5.1 contiene questi commit.
Correzioni di bug
Navigation Safe Args
non causerà più avvisi di ritiro nelle classi generate quando utilizzi tipi di argomenti personalizzati salvati in unBundle
. (Id86ed, b/237725966)
Aggiornamenti delle dipendenze
- La raccolta Navigation ora dipende da Lifecycle
2.5.1
. (Ib4451) - La raccolta Navigation ora dipende da Attività
1.5.1
. (I3efe8) - La raccolta Navigation ora dipende dal componente Fragment
1.5.1
. (I56177)
Versione 2.5.0
29 giugno 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.0
. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
- Integrazione di CreationExtras:
Navigation
ora è in grado di fornire unViewModelProvider.Factory
senza stato tramiteCreationExtras
di Lifecycle2.5.0
.
SafeArgs di navigazione
Navigation Safe Args
ha eseguito l'upgrade della dipendenzaAndroid Gradle Plugin
in modo che si basi su7.0.4
, eliminando la compatibilità con le versioni AGP precedenti alla7.0
.- È stato aggiunto il supporto per l'attributo build.gradle dello spazio dei nomi da utilizzare al posto di applicationId.
Altre modifiche
- L'API
visibleEntries
non è più sperimentale e fornisce una funzione per recuperare tutte le voci la cui destinazione è attualmente visibile in base aNavController
.
Versione 2.5.0-rc02
15 giugno 2022
androidx.navigation:navigation-*:2.5.0-rc02
viene 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 inferiori quando si utilizza la barra di navigazione Scrivi
NavHost
. (I3979a, b/234054916) Navigation SafeArgs
non avrà più un arresto anomalo se utilizziapplicationIdSuffix
e uno spazio dei nomi senzaapplicationId
o quandoapplicationId
e spazio dei nomi sono diversi. (I754b1, b/233119646)NavArgument
ora dispone di una funzionetoString()
personalizzata per mostrare i valori interni dell'argomento. (I900a8)
Versione 2.5.0-rc01
11 maggio 2022
androidx.navigation:navigation-*:2.5.0-rc01
viene rilasciato. La versione 2.5.0-rc01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola lint per avvisare di non inserire elementi
<deeplink>
all'interno di elementi<activity>
nel filenavigation.xml
.(Ic15a5, b/178403185)
Correzioni di bug
- Gli ambiti componibili in
NavHost
eDialogHost
vengono ora eliminati nell'ordine previsto, ovvero gli ambiti componibili interni vengono eliminati prima degli componibili esterni. (I157e6) - Navigation SafeArgs ora utilizza
PathSensitivity.RELATIVE
inArgumentsGenerationTask
per consentire la ricollocabilità della cache. Ciò significa che la voce della cache ora può essere riutilizzata da una build CI a una build locale. (I5f67c, b/173420454) - La regola lint
UnrememberedGetBackStackEntryDetector
è stata aggiornata per garantire che la chiamataremember
relativa alla chiamata agetBackStackEntry()
passi anche in un oggettoNavBackStackEntry
come chiave.(Ib7081, b/227382831)
Versione 2.5.0-beta01
20 aprile 2022
androidx.navigation:navigation-*:2.5.0-beta01
viene rilasciato. La versione 2.5.0-beta01 contiene questi commit.
Correzioni di bug
DialogNavigator
ora utilizzapopWithTransition
quando esegue una chiamatadismiss()
. In questo modo viene corretta una condizione di gara quando si utilizza unViewModel
all'interno della destinazionedialog
che causerebbe unIllegalStateException
quando 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 da Ciclo di vita
2.5.0-beta01
, correggendo unIllegalStateException
quando si nidifica unNavHost
all'interno di un altroNavHost
in una scheda di navigazione inferiore non principale quando si utilizzano più serie di schede Indietro.
Versione 2.5.0-alpha04
6 aprile 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.0-alpha04
. La versione 2.5.0-alpha04 contiene questi commit.
Modifiche all'API
visibleEntries
non è più in versione sperimentale. (I4829f, b/225394514)
Correzioni di bug
- NavHost ora dipende da
visibleEntries
delNavController
per determinare quali voci comporre. Ciò significa che, quando utilizzi NavHost nidificato, ora l'elementoNavHost
interno dovrebbe animarsi correttamente. (I4ba2b, b/225394514) - Il valore
visibleEntries
StateFlow
fornito daNavController
si basa ora 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'navController
è inferiore a STARTED, l'elenco delle voci visibili rimarrà invariato. (I9e2a8, b/225394514) SavedStateViewFactory
ora supporta l'utilizzo diCreationExtras
anche se è stato inizializzato conSavedStateRegistryOwner
. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583)NavDeepLink
ora può analizzare gli URI con un singolo parametro di query senza valore. (I0efe8, b/148905489)- Le stringhe vuote ora sono considerate argomenti validi nei link diretti. (I70a0d, b/217399862)
Navigation Safe Args
non avrà più arresti anomali quando vengono utilizzati gli spazi dei nomi e non è presenteAndroidManifest.xml
. (I17ccf, b/227229815)
Versione 2.5.0-alpha03
23 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha03
viene rilasciato. La versione 2.5.0-alpha03 contiene questi commit.
Modifiche all'API
- Ora puoi passare
CreationExtras
aby navGraphViewModels
per creare unViewModel
. (I29217, b/217618359)
Correzioni di bug
NavDeepLinks
ora supporta correttamente i caratteri di nuova riga codificati incorporati negli URI di percorsi/link diretti. (I513d1, b/217815060)CreationExtras
ora funzionerà correttamente se utilizzato conNavBackStackEntries
per creare ViewModel. (I69161, b/217617710)- Navigation Safe Args ora supporta l'utilizzo dello spazio dei nomi definito
in
build.gradle
al posto del pacchetto in AndroidManifest. (I659ef, b/217414933)
Versione 2.5.0-alpha02
9 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha02
viene rilasciato. La versione 2.5.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.4.1
: oraNavHostFragment
imposterà correttamenteOnBackPressedDispatcher
quando si utilizza il binding della vista con grafici nidificati. (Ifbb51, b/214577959) - Da Navigazione
2.4.1
: quando i link diretti attraverso piùNavGraph
nidificati, ora lo stack posteriore includono correttamente le destinazioni di partenza intermedie. (I504c0, b/214383060)
Versione 2.5.0-alpha01
26 gennaio 2022
androidx.navigation:navigation-*:2.5.0-alpha01
viene rilasciato. La versione 2.5.0-alpha01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora si integra con ViewModel CreationExtras, introdotto nell'ambito del ciclo di vita2.5.0-alpha01
. (Ib9fe2, b/207012490)
Correzioni di bug
- È stato risolto un problema per cui l'accesso a un
ViewModel
creato tramiteby navGraphViewModels()
dalonCreate()
di un frammento non andava a buon fine con unIllegalStateException
. (I8a14d) NavDeepLink
non decodificano più inutilmente gli argomenti due volte, il che significa che ora vengono passati gli argomenti corretti alla destinazione finale. (I31b0a, b/210711399)
Safe Args
- Safe Args ora dipende dalla versione 7.0.4 del plug-in Android per Gradle. 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 Gradle 7.1.0 e versioni successive. (I41c88, b/213086135, b/207670704)
Versione 2.4.2
Versione 2.4.2
6 aprile 2022
androidx.navigation:navigation-*:2.4.2
viene rilasciato. La versione 2.4.2 contiene questi commit.
Correzioni di bug
- Backportato da Navigazione
2.5.0-alpha03
:NavDeepLinks
ora supporta correttamente i caratteri di a capo codificati incorporati negli URI di percorsi/link diretti. (I513d1, b/217815060) - Backportato da Navigation
2.5.0-alpha03
: Navigation SafeArgs ora supporta l'utilizzo dello spazio dei nomi definito inbuild.gradle
al posto del pacchetto in AndroidManifest. (I659ef, b/217414933) - Backportato da Navigazione
2.5.0-alpha04
:Navigation Safe Args
non avrà più arresti anomali quando vengono utilizzati gli spazi dei nomi e non è presenteAndroidManifest.xml
. (I17ccf, b/227229815) - Backportato da Navigazione
2.5.0-alpha04
: le stringhe vuote ora sono considerate argomenti validi nei link diretti. (I70a0d, b/217399862)
Versione 2.4.1
Versione 2.4.1
9 febbraio 2022
androidx.navigation:navigation-*:2.4.1
viene rilasciato. La versione 2.4.1 contiene questi commit.
Correzioni di bug
- Ora
NavHostFragment
imposterà correttamenteOnBackPressedDispatcher
quando si utilizza il binding della vista con grafici nidificati. (Ifbb51, b/214577959) - Quando esegui il collegamento diretto tramite più
NavGraph
nidificati, lo stack di ritorno ora includerà correttamente le destinazioni iniziali intermedie. (I504c0, b/214383060) - Con backporting da Navigazione
2.5.0-alpha01
: è stato risolto un problema per cui l'accesso a un ViewModel creato tramiteby navGraphViewModels()
da un elementoonCreate()
di un frammento non riusciva con unIllegalStateException
. (I8a14d) - Backporting da Navigazione
2.5.0-alpha01
: iNavDeepLink
non decodificano più inutilmente gli argomenti due volte, il che significa che ora gli argomenti decodificati correttamente vengono passati alla destinazione finale. (I31b0a, b/210711399) - Backportato da Navigation
2.5.0-alpha01
: Safe Args ora dipende dalla versione 7.0.4 del plug-in Android per Gradle. Ciò significa che Navigazione Safe Args non sarà più compatibile con le versioni di Android Studio precedenti alla 7.0, ma ora è compatibile con il plug-in Android Gradle 7.1.0 e versioni successive. (I41c88, b/213086135, b/207670704)
Versione 2.4.0
Versione 2.4.0
26 gennaio 2022
androidx.navigation:navigation-*:2.4.0
viene rilasciato. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
- Tutti gli elementi di navigazione sono stati riscritti in Kotlin. In questo modo è stata migliorata la nullabilità delle classi che utilizzano i generici (ad esempio le sottoclassi
NavType
). Tutte le funzioni di estensione Kotlin che facevano parte degli elementi-ktx
sono state spostate nei rispettivi elementi principali. Gli elementi-ktx
continueranno a essere pubblicati, ma sono completamente vuoti. - L'artefatto
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza unSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla tua sottoclasse) e un riquadro dei dettagli, che utilizza unNavHostFragment
come implementazione, come mostrato nella nostra implementazione di esempio. - Il metodo
currentBackStackEntryAsFlow()
suNavController
fornisce unFlow
che emette ogni volta che il valoreNavBackStackEntry
corrente cambia. Questo flusso può essere utilizzato come alternativa alla gestione manuale di unOnDestinationChangedListener
. - NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntry
visibili comeStateFlow
tramite la proprietà sperimentalevisibleEntries
. - Ora è possibile estendere la classe
NavType
per creare NavType personalizzati. I tipi personalizzati sono supportati solo quando crei il grafico di navigazione in modo programmatico, ad esempio tramite il DSL Kotlin per i grafici di navigazione. La navigazione ora fornisce API
findStartDestination()
egetHierarchy()
che possono essere utilizzate per implementare l'UI di navigazione personalizzata.findStartDestination()
è una funzione di estensione diNavGraph
che individua la destinazione di partenza effettiva che verrà visualizzata quando accedi al grafico, anche sestartDestination
è a sua volta unNavGraph
nidificato.getHierarchy()
è una funzione diNavDestination
che può essere utilizzata per verificare se una determinata destinazione rientra nella gerarchia di un'altra.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
I metodi
NavigationUI
che accettavano unBottomNavigationView
sono stati aggiornati in modo da accettare il superclasse introdotto in Material1.4.0
,NavigationBarView
. In questo modo è possibile utilizzare questi metodi conNavigationRailView
.Quando gonfi 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) }
Percorsi di navigazione e DSL Kotlin
Le versioni precedenti di Navigazione si basavano sul fatto che ogni destinazione avesse un ID intero costante che la identificava in modo univoco dalle destinazioni gemelle e consentiva di navigate()
raggiungere quella destinazione direttamente o tramite un'azione. Sebbene questo approccio continui a essere valido e utile, in particolare nei casi in cui definisci il grafo di navigazione in XML e puoi utilizzare costanti R.id
generate automaticamente o Safe Args (che utilizzano queste costanti per generare codice in fase di compilazione), questo sistema di numeri interi univoci non ha acquisito il significato semantico e l'espressività necessari per supportare grafici completamente dinamici costruiti in modo programmatico in fase di esecuzione tramite il DSL Kotlin Navigation.
Questa release introduce una nuova opzione per identificare in modo univoco una destinazione in un grafo di navigazione tramite il relativo percorso. Una route è un String
che definisce il percorso univoco per una destinazione. Tutti i metodi DSL di Kotlin che accettavano un ID destinazione sono stati ritirati e sostituiti da un'API equivalente che accetta un percorso.
Ogni percorso deve essere considerato 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 contenuti specifici, questi argomenti dinamici devono far parte del percorso, seguendo le stesse regole dei link diretti impliciti.
Tutte le API NavController
che in precedenza accettavano solo un ID ora hanno un sovraccarico che accetta un percorso String
. Sono inclusi navigate()
, popBackStack()
, popUpTo()
e getBackStackEntry()
.
Ciò ha avuto alcune implicazioni per le API:
- La proprietà Kotlin
popUpTo
nel DSL di Kotlin è stata ritirata a favore dipopUpToId
. - L'API
getStartDestination()
è stata deprecata a favore digetStartDestinationId()
.
A differenza della navigazione per ID, la navigazione per percorso segue le stesse regole dei link diretti impliciti in quanto puoi passare direttamente a qualsiasi destinazione in qualsiasi grafico nidificato, assicurandoti che questi percorsi siano utilizzabili nei progetti multi-modulo senza aggiungere esplicitamente un link diretto visibile all'esterno a ogni destinazione.
Composizione di navigazione
L'artefatto navigation-compose
fornisce l'integrazione tra il componente di navigazione e Jetpack Compose. Utilizza le funzioni @Composable
come destinazioni nell'applicazione.
Questa release fornisce:
- Un componibile
NavHost
che ti consente di creare il tuo grafico di navigazione tramite una connessione DSL Kotlin, utilizzando destinazionicomposable
edialog
, oltre al supporto per navigatori facoltativi come quelli di Accompanist Navigation Material. - Supporto obbligatorio per la transizione tra le destinazioni. Animazione di navigazione dell'accompagnatore può essere utilizzata per controllare le transizioni di entrata e di uscita utilizzando le API Compose sperimentali.
- Determinazione dell'ambito di un
Lifecycle
per ogni destinazione componibile. Ogni destinazione raggiunge lo statoRESUMED
solo al termine di eventuali transizioni in entrata e passa immediatamente aSTARTED
all'inizio di eventuali transizioni in uscita, consentendoti così di evitare tutti i problemi diIllegalStateException
e multi-touch attivando una chiamatanavigate
solo quandoLifecycle
èRESUMED
. - Scoping di
ViewModel
(tramite l'APIviewModel()
di Lifecycle ViewModel Compose2.4.0
ohiltViewModel()
di Hilt Navigation Compose1.0.0
a livello di destinazione, fornendo un ambito che sopravvive alle modifiche di configurazione e all'essere nello stack secondario (quando i contenuti Composable vengono altrimenti eliminati) e un indicatore inonCleared()
del ViewModel che indica l'eliminazione permanente e la pulizia dello stato associato a quelNavBackStackEntry
. - Definizione dell'ambito dello stato
rememberSaveable
a livello di destinazione, in modo che tutto lo stato composable venga salvato e ripristinato automaticamente quando torni a una destinazione. - Supporto completo per il salvataggio e il ripristino dello stato di
NavController
e della relativa destinazione dopo l'interruzione e la ricreazione del processo. - Integrazione automatica con il pulsante Indietro del sistema.
Supporto per il passaggio di argomenti, l'associazione di link diretti alle destinazioni e il ritorno di un risultato alle destinazioni precedenti.
Componi helper specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire il sollevamento dello stato e la connessione diNavController
ai composabili esterni aNavHost
(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 nella composizione.
Più serie di foto simili
NavController è responsabile della gestione della pila di destinazione precedente, aggiungendo le destinazioni quando navigate()
e rimuovendole 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 del back stack.
Nell'ambito di questa modifica, i metodi NavigationUI
di onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
e NavigationView.setupWithNavController()
ora salvano e ripristinano automaticamente lo stato delle destinazioni popolate, consentendo il supporto di più stack arretrati senza alcuna modifica al codice. Quando utilizzi Navigation con i frammenti, questo è il modo consigliato per l'integrazione con più stack di ritorno.
Le API sottostanti per il salvataggio e il ripristino dello stato sono esposte tramite una serie di piattaforme:
Nel file XML di navigazione, l'elemento
<action>
ora può utilizzare gli attributi booleani diapp:popUpToSaveState
eapp:restoreState
per salvare lo stato di eventuali destinazioni visualizzate tramiteapp:popUpTo
e ripristinare lo stato associato alla destinazione passata comeapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
Nel DSL Kotlin
navOptions
, puoi aggiungere la proprietà booleanarestoreState
e la proprietà booleanasaveState
al compilatorepopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.findStartDestination().id) { saveState = true } }
Per creare manualmente un oggetto
NavOptions
tramiteNavOptions.Builder
, puoi utilizzaresetRestoreState()
e il nuovo sovraccarico disetPopUpTo()
che accetta un parametrosaveState
aggiuntivo.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(NavGraph.findStartDestination(navController.getGraph()).getId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Le chiamate programmatiche a
popBackStack()
ora possono includere un parametrosaveState
aggiuntivo.Puoi utilizzare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
.
In tutti i casi, NavController
salverà e ripristinerà lo stato di ogni NavBackStackEntry
, incluse eventuali istanze ViewModel
basate sulla 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 comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
aPendingIntent
restituito dacreatePendingIntent()
, garantendo che questa API funzioni come previsto quando si sceglie come target Android 12.- La navigazione ora dipende dal
ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i metodi che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione con l'applicazione del thread principale introdotta nel ciclo di vita2.3.0
. - I link diretti ora verificano che tutti gli argomenti richiesti (senza valori predefiniti) siano presenti in
Uri
. NavDeepLink
Gli argomenti analizzati ora considerano i simboli di cancelletto nello stesso modo dei punti interrogativi come separatore tra i segmenti del percorso, impedendo a un argomento di estendersi oltre il simbolo di cancelletto.- Quando generi azioni, il codice Kotlin generato da Safe Args ora inserisce gli argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri.
- Quando genera gli 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ù ricevere l'avviso relativo all'utilizzo di
applicationIdTextResource
.
Problemi noti
- Risolto il problema in Navigazione
2.5.0-alpha01
: l'accesso a unaViewModel
creata tramiteby navGraphViewModels()
da un elementoonCreate()
di Framment non riuscirà con unIllegalStateException
. (b/213504272) - Risolto in Navigazione
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) - I link diretti con più grafici di navigazione nidificati non creano correttamente il backstack completo. (b/214383060)
Versione 2.4.0-rc01
15 dicembre 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-rc01
. La versione 2.4.0-rc01 contiene questi commit.
Modifiche al comportamento
- Gli argomenti analizzati da
NavDeepLink
ora considerano il simbolo 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)
- Dopo il ripristino di
NavController
,NavController
non si arresta in modo più anomalo quando viene aperta una destinazione nidificata utilizzando le transizioni. (I0f7c9, b/205021623) - Il messaggio di errore quando si utilizza un valore
startDestination
non valido ora verrà impostato sul percorso predefinito della destinazione di partenza, se disponibile. (I86b9d, b/208041894)
Correzioni di bug di Scrittura in navigazione
- È stato risolto il potenziale arresto anomalo causato dal passaggio rapido tra la destinazione di partenza e un'altra destinazione utilizzando le voci del menu di navigazione nella parte inferiore. (Ic8976, b/208887901)
- La destinazione della finestra di dialogo viene ora ripristinata correttamente nella parte superiore dello schermo dopo le modifiche alla configurazione o l'interruzione del processo. (I4c0dc, b/207386169)
- È stato risolto un problema per cui il tentativo di recuperare un
ViewModel
da unNavBackStackEntry
di una finestra di dialogo non andava a buon fine quando la finestra di dialogo veniva chiusa. (I6b96d, b/206465487) - È stato risolto un problema relativo all'utilizzo delle destinazioni
activity
conNavHost
di Composizione di navigazione che causava ricostruzioni infinite. (I8f64c) - È stato corretto un problema di perdita in Navigation Compose, che conservava un riferimento alla vecchia attività dopo una modifica della configurazione o l'interruzione del processo. (I4efcb, b/204905432)
Correzioni di bug di Safe Args
SafeArgs
non si arresta più in modo anomalo quando tenta di ripristinare gli array assegnabili personalizzati dopo la morte del processo. (I618e8, b/207315994)- È stato corretto un bug in safe args che non consentiva agli array booleani di avere un valore
null
. (I8c396, b/174787525)
Versione 2.4.0-beta02
3 novembre 2021
androidx.navigation:navigation-*:2.4.0-beta02
viene 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
saveState
quando si passa a un altro grafico, garantendo che il codice comeNavigationUI.setupWithNavController
e il codice che utilizza più stack di ritorno funzioni come previsto. (Ic8807)
Modifiche al comportamento
- I pattern dei link diretti vengono ora compilati in modo lento in NavDeepLink anziché durante l'inflazione. In questo modo dovrebbe migliorare il tempo di inflazione dei grafici di navigazione che includono link diretti. (b8d257, b/184149935)
Correzioni di bug
- È stato risolto un problema per cui gli elementi NavBackStackEntries venivano spostati in
Lifecycle.State.CREATED
dopo il passaggio aLifecycle.State.STARTED
quandoNavHost
viene aggiunto direttamente asetContent()
dell'attività. (Ia5ac1, b/203536683) - È stata corretta una condizione di gara in cui la destinazione
DialogFragment
veniva rimossa dalla pila di ritorno prima che la finestra di dialogo venisse effettivamente visualizzata, senza che la finestra di dialogo venisse effettivamente chiusa, causando un arresto anomalo quando la finestra di dialogo errata veniva chiusa manualmente dall'utente. (I687e5) - È stato risolto un problema per cui l'API
onNavDestinationSelected
suNavigationUI
restituivatrue
anche se nonnavigate()
a quel grafo di navigazione. Ora utilizza la stessa logica impiegata internamente dasetupWithNavController
per selezionare solo ilMenuItem
associato alla destinazione corrente utilizzando ilhierarchy
della destinazione. (I2b053)
Versione 2.4.0-beta01
27 ottobre 2021
androidx.navigation:navigation-*:2.4.0-beta01
viene rilasciato. La versione 2.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare
by navGraphViewModel
con una route come alternativa all'utilizzo di un ID per supportare meglio l'utilizzo del DSL Kotlin di Navigation con i frammenti. (I901e3, b/201446416)
Modifiche alle API
- L'API
visibleEntries
è ora sperimentale. (I93f6f)
Correzioni di bug
- I ViewModel non verranno più distrutti quando le transizioni vengono interrotte passando da una schermata all'altra (Id52d8, b/200817333)
- Gli argomenti
NavDeepLink
con valori null non richiedono più un valore predefinito quando aggiungi link diretti aiNavDestination
. (I5aad4, b/201320030) - Ora NavBackStackEntries con cicli di vita diversi non sono più considerati uguali. Ciò significa che NavHost ricomporrà correttamente tutte le destinazioni durante la navigazione con singleTop e quando selezioni nuovamente gli elementi del menu inferiore. (I1b351, b/196997433)
- È stato risolto un problema con
AbstractListDetailFragment
che causava la gestione o l'ignoramento degli attributilayout_width
elayout_weight
nel riquadro dell'elenco restituiti daonCreateListPaneView()
. (f5fbf3) - Ora lo stato visivo delle destinazioni della finestra di dialogo rimane correttamente sincronizzato con lo stato di
DialogFragmentNavigator
. Ciò significa che la chiamata manuale dell'APIdismiss()
asincrona perDialogFragment
ora cancella correttamente tutte le destinazioni della finestra di dialogo sopra la finestra di dialogo ora ignorata. Ciò non influisce sui casi in cui utilizzipopUpTo
opopBackStack()
per chiudere la finestra di dialogo. (I77ba2) AbstractAppBarOnDestinationChangedListener
ora ha messaggi di errore più chiari peronDestinationChanged()
. (Ie742d)
Versione 2.4.0-alpha10
29 settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha10
viene 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
NavBackStackEntry
visibili tramitevisibleEntries
StateFlow (Ia964e) rememberNavController()
ora accetta un insieme facoltativo di istanzeNavigator
che verranno aggiunte alNavController
restituito per supportare meglio i navigatori facoltativi, come quelli del materiale di navigazione per l'accompagnatore. (I4619e)
Correzioni di bug
- La navigazione dinamica non avrà più arresti anomali quando l'attività viene rielaborata. (Ifa6a3, b/197942869)
- È stato risolto un problema relativo al pulsante Indietro di sistema che si verifica solo dopo il ritorno 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
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha09
. La versione 2.4.0-alpha09 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
. (I80a0f) - Ora puoi passare un elenco di argomenti e/o link diretti al generatore del grafico di navigazione nidificato, che verranno aggiunti automaticamente al grafico risultante. (I8a470, b/182545357)
Modifiche all'API
- La funzione DSL di Kotlin
navArgument
ora fa parte dinavigation-common
anziché dinavigation-compose
. Sarà necessario aggiornare le importazioni per continuare a utilizzare questa funzione. (I1d095)
Cambiamenti del comportamento
- Quando genera gli 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, NavGraphs sarà
DESTROYED
solo quando tutti i loro figli avrannoDESTROYED
. (I86552, b/198741720) - Gli argomenti
NavDeepLink
facoltativi non richiedono più un valore predefinito. (Ia14ef, b/198689811) - La chiamata di
setGraph()
con un nuovo grafico ora cancellerà anche tutti gli eventuali back stack salvati, oltre al comportamento precedente di aprire lo stack posteriore. (I97f96) - Risolto un problema per cui
le istanze
OnDestinationChangedListener
e ilcurrentBackStackEntryFlow
non venivano notificate quando si utilizzavalaunchSingleTop
. (Iaaebc)
Aggiornamenti delle dipendenze
- La funzionalità di composizione della navigazione ora dipende da Activity Compose 1.3.1. (I05829)
- Navigazione Compose ora dipende da
Lifecycle ViewModel Compose
2.4.0-beta01
. (Ib86a3)
Versione 2.4.0-alpha08
1° settembre 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha08
. La versione 2.4.0-alpha08 contiene questi commit.
Nuove funzionalità
- Ora è possibile estendere la classe
NavType
per creare NavType personalizzati. I tipi personalizzati sono supportati solo durante la creazione del grafico di navigazione in modo programmatico, ad esempio tramite il Navigator Graph Kotlin DSL. (I78440, b/196871885)
Modifiche al comportamento
- Quando generi 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)
- Ora i link diretti verificano che tutti gli argomenti obbligatori (quelli senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Correzioni di bug
- L'utilizzo di
getBackStackEntry
epreviousBackStackEntry
all'interno composable(), insieme aremember()
, non causerà più un'eccezione perché nessuna destinazione si trova nello stack posteriore. (I75138, b/194313238) - Navigazione Compose ora si ricompone correttamente quando si modificano
gli argomenti dello stack di nuovo e si utilizzano
launchSingleTop=true
. (Iebd69, b/186392337) - Non sarà più presente un
ArrayIndexOutOfBoundsException
quando chiamisetGraph
con un grafico con 13 o 29 destinazioni. (I1a9f1, b/195171984) - Il generatore Java SafeArgs non dovrebbe più causare avvisi lint durante la generazione delle classi Args. (I1a666, b/185843837)
Contributo esterno
- Grazie a ospixd per aver verificato che i link diretti garantiscano che tutti gli argomenti obbligatori (quelli senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Versione 2.4.0-alpha07
18 agosto 2021
androidx.navigation:navigation-*:2.4.0-alpha07
viene rilasciato. La versione 2.4.0-alpha07 contiene questi commit.
Correzioni di bug
- Navigazione Compose ora salva correttamente lo stato dopo le modifiche alla configurazione e quando si cambiano i grafici, utilizzando la funzionalità multiback stack. (If5a3d, b/195141957)
- Se selezioni di nuovo la stessa scheda quando utilizzi la modalità di scrittura della navigazione con più stack precedenti, non verrà più visualizzata una schermata vuota. (I860dc, b/194925622)
NavHost
ora osserva le modifiche inLifecycle.State
diNavBackStackEntry
, il che significa che l'utilizzo di unNavHost
in un frammento ora verrà ricomposto correttamente quando cambia il ciclo di vita anziché visualizzare una schermata vuota. (I4eb85, b/195864489)- Risolto un problema per cui la chiusura di un
DialogFragment
non aggiornava correttamente lo stato diNavController
dopo aver ricreato l'attività (ad esempio dopo una modifica alla configurazione). (Icd72b) - È stato risolto un problema per cui l'apertura di una destinazione della finestra di dialogo non aggiornava la gestione del pulsante Indietro di sistema di NavController, con il potenziale rischio che NavController intercettasse il pulsante Indietro anche se non aveva una pila Indietro da aprire. (If3b34)
- Ora Safe-args genera automaticamente un metodo
toSavedStateHandle
per gli argomenti che può essere utilizzato per testare il codiceViewModel
. (If1e2d, b/193353880)
Versione 2.4.0-alpha06
4 agosto 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha06
. La versione 2.4.0-alpha06 contiene questi commit.
Modifiche all'API
- I metodi
requireSlidingPaneLayout()
erequireDetailPaneNavHostFragment()
suAbstractListDetailFragment
sono stati rinominati rispettivamente ingetSlidingPaneLayout()
egetDetailPaneNavHostFragment()
. (I34a08)
Modifiche al comportamento
- Quando navighi con le animazioni (ad esempio
Crossfade
), ilLifecycle
della nuova destinazione ora raggiungerà ilRESUMED
solo al termine dell'animazione. (If0543, b/172112072, b/194301889) - Ora
NavHost
di Componi navigazione imposta il grafico come parte della prima composizione. (Ieb7be)
Correzioni di bug
- L'apertura dell'ultima destinazione di un grafo di navigazione non genera più un
ClassCastException
. (If0543, b/172112072, b/194301889) - È stato corretto un
NullPointerException
che si verificava quando si aggiungeva un link diretto senza unUri
e si navigava tramite un percorso o un link diretto. (938a0c, b/193805425) - È stato risolto un problema in Componi navigazione per cui un
NavBackStackEntry
con link diretto non raggiungeva lo statoRESUMED
. (I192c5) - È stato risolto un problema per cui l'apertura di una destinazione della finestra di dialogo non aggiornava la gestione del pulsante Indietro di sistema di NavController, con il potenziale rischio che NavController intercettasse il pulsante Indietro anche se non aveva una pila Indietro da aprire. (aosp/1782668)
Versione 2.4.0-alpha05
21 luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha05
viene rilasciato. La versione 2.4.0-alpha05 contiene questi commit.
Cambiamenti del comportamento
NavHost
di Composizione navigazione ora utilizza sempre le transizioni tra le destinazioni quando navighi tra le destinazioni. (I07049, b/172112072)- Ora puoi apportare modifiche al grafo di un NavHost. I grafici con la stessa destinazione iniziale e le stesse destinazioni nel grafico verranno considerati uguali e non cancelleranno la pila di ritorno
NavController
. (I0b8db, b/175392262)
Correzioni di bug
- È stato corretto un
NoSuchElementException
durante la chiamata dipopBackStack()
dall'interno di unLifecycleObserver
associato a unNavBackStackEntry
causato da aggiornamenti rientranti allo stato del NavController. (I64621) AbstractListDetailFragment
ora consente di rimuovere completamenteSlidingPaneLayout
dall'APK quandoAbstractListDetailFragment
non viene utilizzato. (I611ad)NavGraph
eNavDestination
ora sostituiscono il metodo equals, pertanto due oggetti con gli stessi valori verranno considerati uguali. (I166eb, b/175392262)
Versione 2.4.0-alpha04
1° luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha04
viene rilasciato. La versione 2.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'elemento
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza unSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla tua sottoclasse) e un riquadro dei dettagli, che utilizza unNavHostFragment
come implementazione, come mostrato nella nostra implementazione di esempio. (Iac4be, b/191276636) - L'elemento
NavHost
dell'elementonavigation-compose
ora supporta le destinazionidialog
, oltre a quellecomposable
. Ognuna di queste destinazioni della finestra di dialogo verrà visualizzata in un componente componibileDialog
, sopra la destinazionecomposable
corrente. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Modifiche all'API
- La funzione
add
inNavigatorState
è stata rinominata inpush
. Tutte le chiamate attuali aadd()
dovranno essere modificate in push(). (Ie89fc, b/172112072) - Le istanze
Navigator
personalizzate ora possono utilizzare le APIpushWithTransaction
epopWithTransition
suNavigatorState
per eseguire il push o pop di una destinazione in modo asincrono. Tieni presente che queste API non sono ancora utilizzate da nessuno dei navigatori inclusi. (Ic4d7c, b/172112072)
Modifiche al comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
aPendingIntent
restituito dacreatePendingIntent()
, garantendo che questa API funzioni come previsto quando si sceglie come target Android 12. (If8c52)
Correzioni di bug
- È stato risolto un problema relativo a
<include-dynamic>
per cui gli argomenti passati al grafo non venivano trasmessi correttamente al grafo incluso dinamicamente. (I3e115) - È stato corretto un problema relativo a
NullPointerException
durante la navigazione verso una destinazione utilizzando un argomentostring[]
con un valore predefinito di@null
. (I1fbe8) - Aggiungi regole ProGuard per
@Navigator.Name
per risolvere i problemi quando utilizzi la modalità completa di R8 3.1. (I2add9, b/191654433) - SafeArgs non genererà più errori durante la creazione della tua app con
Kotlin
versioni precedenti al giorno1.5.0
. (Icd1ff, b/190739257)
Versione 2.4.0-alpha03
16 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha03
viene 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) - È stata corretta una regressione introdotta in
Navigazione
2.4.0-alpha01
per cuisetupActionBarWithNavController()
non rimuoveva correttamente l'icona Su quando ti trovi in una destinazione di primo livello. (I5d443, b/189868637) - È stato risolto il problema di
IllegalStateException
durante la chiamata apopBackStack()
dopo aver visualizzato in precedenza il grafico principale di NavController. (I2a330, b/190265699) - Ora le regole di ProGuard per
by navArgs()
vengono applicate correttamente quando si utilizzaby navArgs()
o gli elementi correlati.navigation-common
(I68800, b/190082521) - Un
OnDestinationChangedListener
che chiamanavigate()
la prima volta che riceve un callback ora riceve correttamente un secondo callback con la destinazione a cui è stato eseguito il passaggio. (Ie5f9e, b/190228815) - Safe Args non si arresta più in modo anomalo se utilizzato con moduli di funzionalità dinamiche e AGP 7.0 o versioni successive. (I69518, b/189966576)
Problema noto
- Safe Args non andrà a buon fine con un errore
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
quando utilizzi Gradle6.7.0
a causa di una dipendenza da una versione precedente di Kotlin. Questo problema può essere risolto aggiornando Gradle alla versione 7.0. (b/190739257)
Versione 2.4.0-alpha02
2 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha02
viene rilasciato. La versione 2.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- Le route sono ora supportate per le destinazioni Attività, Fragment e Dialogo, nonché nell'intero DSL Kotlin di DynamicNavigation. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
ha aggiunto temporaneamente API sperimentali per consentire la disattivazione del salvataggio dello stato. Sebbene il salvataggio dello stato sia il comportamento corretto, esistono ancora utilizzi di librerie ritirate (ad es. frammenti mantenuti) che non possono essere supportati durante il salvataggio dello stato, pertanto questa opzione offre alle app la possibilità 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 personalizzato.findDestination()
è una funzione di estensione diNavGraph
che consente di individuare una destinazione all'interno del grafico.getHierarchy()
è una funzione diNavDestination
che può essere utilizzata per verificare se una determinata destinazione si trova nella gerarchia di un'altra.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
I metodi NavigationUI che accettavano un
BottomNavigationView
sono stati aggiornati in modo da accettare il superclasse introdotto in Material1.4.0
,NavigationBarView
. In questo modo è possibile utilizzare questi metodi conNavigationRailView
. (Ib0b36, b/182938895)Quando gonfi 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 all'API
- I builder DSL Kotlin che utilizzano un ID sono stati deprecati e devono essere sostituiti con builder che utilizzano le route (I85b42, b/188816479) (I9f58f, b/188816479)
Correzioni di bug
DialogFragmentNavigator
ora utilizza l'APINavigatorState.pop()
per informareNavController
quando una finestra di dialogo viene chiusa premendo il pulsante di riavvio del sistema o facendo clic al di fuori, assicurandosi che lo stato diNavController
sia sempre in sincronia con lo stato del navigatore. (I2ead9)La navigazione non restituisce più un
ConcurrentModificationException
quando si manipola l'elenco diOnDestinationChangedListeners
da con unonDestinationChanged
callback. (Ib1707, b/188860458)Safe Args non si arresta più in modo anomalo durante il tentativo di generare proprietà di direzione in Kotlin. (Id2416, b/188564435)
Il metodo setId su NavDestination ora è correttamente annotato con
@IdRes
, pertanto accetta solo ID risorsa. (I69b80)Il parametro int di
findNode
ora èresId
anzichéresid
. (I7711d)
Aggiornamento delle dipendenze
- Safe-Args ora dipende dal plug-in Android per Gradle 4.2.0. Ciò significa che non dovresti più ricevere l'avviso relativo all'utilizzo di
applicationIdTextResource
. (I6d67b, b/172824579)
Versione 2.4.0-alpha01
18 maggio 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha01
. La versione 2.4.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il metodo
currentBackStackEntryAsFlow()
inNavController
fornisce unFlow
che viene emesso ogni volta che cambia l'attualeNavBackStackEntry
. Questo flusso può essere utilizzato come alternativa alla gestione manuale di unOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Più serie di foto simili
Il NavController è responsabile della gestione del back stack delle destinazioni, dell'aggiunta di destinazioni al back stack quando navigate()
e della rimozione quando chiami popBackStack()
o attivi il pulsante Indietro del sistema. La classe NavOptions
esistente e l'integrazione nelle voci <action>
del file XML del grafico di navigazione sono state ampliate per supportare il salvataggio e il ripristino della pila di ritorno. (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 poppate, consentendo il supporto di più stack di ritorno senza alcuna modifica al codice. Quando utilizzi Navigation con i frammenti, questo è il modo consigliato per l'integrazione con più stack di ritorno. (Ie07ca).
Le API sottostanti per il salvataggio e il ripristino dello stato sono esposte tramite una serie di piattaforme:
Nel file XML di navigazione, l'elemento
<action>
ora può utilizzare gli attributi booleani diapp:popUpToSaveState
eapp:restoreState
per salvare lo stato di eventuali destinazioni visualizzate tramiteapp:popUpTo
e ripristinare lo stato associato alla destinazione passata comeapp:destination
:<action android:id=”@+id/swap_stack” app:destination=”@id/second_stack” app:restoreState=”true” app:popUpTo=”@id/first_stack_start_destination” app:popUpToSaveState=”true” />
Nella
navOptions
Kotlin DSL, puoi aggiungere la proprietà booleanarestoreState
e la proprietà booleanasaveState
nello strumento di creazionepopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Nella creazione manuale di un oggetto
NavOptions
tramiteNavOptions.Builder
, puoi utilizzaresetRestoreState()
e il nuovo sovraccarico persetPopUpTo()
che richiede un parametrosaveState
aggiuntivo.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Le chiamate programmatiche a
popBackStack()
ora possono includere un ulteriore parametrosaveState
.
In tutti i casi, NavController
salverà e ripristinerà lo stato di ogni NavBackStackEntry
, incluse eventuali istanze ViewModel
basate sulla destinazione di navigazione. Le API Navigator
sono state aggiornate in modo da consentire a ogni Navigator
di supportare il salvataggio e il ripristino del proprio stato.
ComposeNavigator
utilizzato per le destinazioni composable
in Navigation Compose e FragmentNavigator
e DynamicFragmentNavigator
utilizzati per le destinazioni <fragment>
in Navigation con i frammenti sono stati entrambi 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 fa parte delle API di navigazione di base. Ciò fornisce un'alternativa all'utilizzo di ID interi durante la creazione del grafico tramite Navigatore Kotlin DSL. (b/172823546)
Tutte le API che utilizzavano solo un ID ora hanno un sovraccarico che richiede una route String
. Sono inclusi navigate()
, popBackStack()
, popUpTo()
e getBackStackEntry()
.
Ciò ha avuto alcune implicazioni per le API:
- La proprietà
popUpTo
kotlin nel DSL Kotlin è stata ritirata a favore dipopUpToId
. (I59c73, b/172823546) - L'API
getStartDestination()
è stata ritirata in favore digetStartDestinationId()
. (I0887f, b/172823546)
Per gli sviluppatori che eseguono l'upgrade da versioni precedenti di Navigation Compose a Navigation Compose 2.4.0-alpha01
, ciò significa che le seguenti importazioni nei 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
in NavDestination
, il che ti consente di chiamare direttamente navBackStackEntry.destination.route
.
Modifiche all'API
- Tutti gli elementi di navigazione sono stati riscritti in Kotlin. In questo modo è stata migliorata la nullabilità delle classi che utilizzano i generici (ad esempio le sottoclassi
NavType
). Tutte le funzioni di estensione Kotlin che facevano parte degli elementi-ktx
sono state spostate nei rispettivi elementi principali. Gli elementi-ktx
continueranno a essere pubblicati, ma sono completamente vuoti. (b/184292145) NavDeepLinkBuilder
ora supporta l'aggiunta di più destinazioni distinte allo stack back generato. (I3ee0d, b/147913689)- Aggiungi funzioni di fabbrica per
DynamicNavHostFragment
(Icd515, b/175222619) - L'ID univoco di un
NavBackStackEntry
ora è esposto nell'ambito della sua API pubblica. (Ie033a) - I campi
name
eargument
e le funzioni di destrutturazione diNamedNavArgument
sono ora pubblici. (#174, b/181320559) - Introdotta una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisce ilNavBackStackEntry
ai locali composizioni pertinenti. (#175, b/187229439)
Arg sicuri
Safe Args ora genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (#122, b/136967621)class HomeViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { // Create a HomeDestinationArgs class with type safe accessors for each argument // defined on your destination private val args = HomeDestinationArgs.fromSavedStateHandle(savedStateHandle) }
Safe Args è stato aggiornato in modo da dipendere da KotlinPoet
1.8.0
. (#172, b/183990444)
Modifiche al comportamento
- La navigazione ora dipende da
Lifecycle
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i metodi che aggiornano ilNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione all'applicazione del thread principale introdotta in Lifecycle2.3.0
. (b/171125856) - L'analisi degli argomenti Enum dai link diretti ora è insensibile alle maiuscole, il che consente a un link diretto come
http://www.example.com/red
di corrispondere a un link direttowww.example.com/{color}
anche quando l'enum ha il valoreRED
. (#152, b/135857840)
Compatibilità di Componi
androidx.navigation:navigation-compose:2.4.0-alpha01
è compatibile solo con Compose versione1.0.0-beta07
e successive.
Correzioni di bug
- Risolto un problema per cui i segnaposto degli argomenti finali avevano la precedenza sui link diretti con un suffisso esatto corrispondente. (#153, b/184072811)
NavHostFragment
ora supporta i navigatori personalizzati che utilizzano lo stesso@Navigator.Name("dialog")
delDialogFragmentNavigator
predefinito. (Ib1c2c, b/175979140)- È stato migliorato il comportamento di
NavigatorProvider#addNavigator
per garantire che la chiamata ripetuta con la stessa istanza non causi problemi. (#176, b/187443146)
Contributi esterni
- Grazie a simonschiller per aver creato il supporto per Safe Args generando un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (#122, b/136967621) - Grazie a Bradleycorn per aver reso la sintassi di analisi degli argomenti Enum dai link diretti non sensibile alle maiuscole. (#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
. (N. 172, b/183990444) - Grazie a jossiwolf per aver reso pubblici i campi
name
eargument
e le funzioni di destrutturazione diNamedNavArgument
. (#174, b/181320559) - Grazie a jossiwolf per aver introdotto una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisce ilNavBackStackEntry
ai locali delle composizioni pertinenti. (N. 175, b/187229439) - Grazie jossiwolf per aver migliorato il comportamento di
NavigatorProvider#addNavigator
al fine di garantire che la chiamata ripetuta con la stessa istanza non causi problemi. (#176, b/187443146)
Navigation Compose versione 1.0.0
Versione 1.0.0-alpha10
7 aprile 2021
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha10
. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche all'API
NavHost
ora accetta unModifier
, che viene trasmesso al contenitore composable che racchiude i composable di destinazione. (I85aca, b/175125483)
Correzioni di bug
NavHost
ora funziona anche quando non viene trovato unOnBackPressedDispatcherOwner
, ad esempio durante l'anteprima delNavHost
. (I7d8b4)- La compilazione della navigazione ora dipende da
2.3.5
di navigazione, risolvendo un problema relativo all'utilizzo diBackHandler
all'interno di una destinazioneNavHost
. (I7e63b, b/182284739)
Versione 1.0.0-alpha09
10 marzo 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
viene rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche all'API
LocalViewModelStoreOwner.current
ora restituisce unViewModelStoreOwner
con valori nulli per determinare meglio se è disponibile unViewModelStoreOwner
nella composizione corrente. Le API che richiedono unViewModelStoreOwner
, comeviewModel()
eNavHost
, generano comunque un'eccezione se non viene 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
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha08
. La versione 1.0.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHost
ora compilaLocalSavedStateRegistryOwner
CompositionLocal conNavBackStackEntry
della destinazione, garantendo che qualsiasi stato salvato direttamente inSavedStateRegistry
venga salvato e ripristinato insieme alla destinazione. (I435d7, b/179469431)
Versione 1.0.0-alpha07
10 febbraio 2021
androidx.navigation:navigation-compose:1.0.0-alpha07
viene 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). NavHost
ora utilizza il nuovoLocalOnBackPressedDispatcherOwner
di Activity-Compose 1.3.0-alpha01 per ottenere ilOnBackPressedDispatcher
impostato suNavController
. (I65b12).
Versione 1.0.0-alpha06
28 gennaio 2021
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha06
. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche all'API
- È stato aggiunto un metodo di estensione
getBackStackEntry(route: String)
inNavController
che restituisce ilNavBackStackEntry
associato. (If8931)
Versione 1.0.0-alpha05
13 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Aggiornato in modo da dipendere da Compose 1.0.0-alpha10.
Versione 1.0.0-alpha04
16 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
viene rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
- Aggiornamento per la compatibilità con Compose
1.0.0-alpha09
.
Versione 1.0.0-alpha03
2 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
viene 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) - Passare a un grafico nidificato all'interno di NavHost ora funziona correttamente. (I0948d, b/173647694)
Versione 1.0.0-alpha02
11 novembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche all'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 prende un percorso anziché un ID che consente di creare grafici nidificati nel DSL di composizione della navigazione. (I1661d)
- startDestination ora precede il percorso nell'elenco dei parametri per un NavHost (Ie620e)
- Ora puoi creare un grafo utilizzando il percorso come destinazione iniziale al di fuori di un composable NavHost. (Iceb75)
Versione 1.0.0-alpha01
28 ottobre 2020
android.navigation:navigation-compose:1.0.0-alpha01
viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
L'elemento navigation-compose
fornisce l'integrazione tra il componente di navigazione e Jetpack Compose. Utilizza le funzioni @Composable
come destinazioni nell'applicazione.
Questa release iniziale fornisce:
- Un composable
NavHost
che ti consente di costruire il grafico di navigazione tramite un DSL Kotlin. - Determinazione dell'ambito del ciclo di vita,
ViewModel
e stato memorizzato a livello di destinazione. - Integrazione automatica con il pulsante Indietro del sistema.
- Supporto per il passaggio di argomenti, l'associazione di link diretti alle destinazioni e il ritorno di un risultato alle destinazioni precedenti.
- Componi helper specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire lo stato di sollevamento e di collegareNavController
a componibili esterni aNavHost
(ad esempio una barra di navigazione in basso).
Per ulteriori informazioni, consulta la Guida alla navigazione nella composizione.
Versione 2.3.5
Versione 2.3.5
7 aprile 2021
androidx.navigation:navigation-*:2.3.5
viene rilasciato. La versione 2.3.5 contiene questi commit.
Nuove funzionalità
- Quando navighi utilizzando un
NavDeepLinkRequest
o unUri
, ora puoi accedere alUri
, all'azione e al tipo MIME nella destinazione risultante recuperando l'intent dagli argomenti tramiteKEY_DEEP_LINK_INTENT
, rispecchiando la funzionalità già disponibile per i link diretti esterni. (I975c3, b/181521877)
Correzioni di bug
OnBackPressedCallbacks
aggiunto a un dispatcher conNavBackStackEntry
come LifecycleOwner ora intercetta correttamente il ritorno dopo che il ciclo di vita dell'attività èSTOPPED
, quindiSTARTED
(Iff94f, b/182284739)- L'analisi del dominio dei link diretti ora non è sensibile alle maiuscole, pertanto
www.example.com
corrisponde sia awww.example.com
che awww.Example.com
. Tieni presente che i nomi dei parametri di query sono ancora sensibili alle maiuscole. (#144, b/153829033) - È stato corretto un
NullPointerException
che poteva verificarsi quando una destinazione ha più argomenti predefiniti non null e si accede a quella destinazione sostituendo solo un sottoinsieme di questi argomenti. (aosp/1644827)
Aggiornamenti delle dipendenze
- Il plug-in Navigazione sicura Args Gradle ora dipende dal plug-in Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)
Contributo esterno
- Grazie
bentrengrove
per la richiesta di pull che non fa distinzione tra maiuscole e minuscole per l'analisi dei domini dei link diretti. (#144, b/153829033)
Versione 2.3.4
Versione 2.3.4
10 marzo 2021
androidx.navigation:navigation-*:2.3.4
viene rilasciato. La versione 2.3.4 contiene questi commit.
Nuove funzionalità
- Ora gli argomenti
ReferenceType
possono essere analizzati correttamente quando vengono inviati come parte di un URI di link diretto. Sono supportati sia il valore intero non elaborato sia i valori esadecimali con prefisso0x
. (N. 127, b/179166693) android:defaultValue
per un argomento conapp:argType="float"
ora supporta i valori predefiniti interi, il che ti consente di utilizzareandroid:defaultValue="0"
anziché0.0
. (#117, b/173766247)
Correzioni di bug
- Risolvere i problemi di avanzamento dell'installazione bloccati quando si utilizza il supporto di Navigazione per le funzionalità dinamiche. (Ib27a7, b/169636207)
- La chiamata a
setViewModelStore
osetLifecycleOwner
con lo stesso oggetto già impostato ora non avrà alcun effetto (Idf491, b/177825470) - Safe-Args ora aggiunge annotazioni di soppressione ai metodi appropriati quando si utilizza Java. (I8fbc5, b/179463137)
Contributi esterni
- Grazie a
JvmName
per la pull request che ha permesso di garantire che gli argomentiReferenceType
ora possano essere analizzati correttamente quando vengono inviati come parte di un URI di link diretto. (#127, b/179166693) - Grazie a
tatocaster
per la pull request che consente adefaultValue
per un argomento conapp:argType=”float”
di supportare ora i valori predefiniti interi. (N. 117, b/173766247)
Versione 2.3.3
Versione 2.3.3
27 gennaio 2021
androidx.navigation:navigation-*:2.3.3
viene rilasciato. La versione 2.3.3 contiene questi commit.
Correzioni di bug
- Non si verifica più un arresto anomalo quando apri un
NavBackStackEntry
prima che il relativoLifecycle
venga spostato inCREATED
. (Ie3ba3) - È stata corretta la regressione causata da b/171364502, in cui la navigazione a un'attività con un valore della risorsa animazione pari a
0
causava unResourceNotFoundException
. (I7aedb, b/176819931)
Versione 2.3.2
Versione 2.3.2
2 dicembre 2020
androidx.navigation:navigation-*:2.3.2
viene rilasciato. La versione 2.3.2 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione in
NavigationUI
per cui l'utilizzo di una destinazione<activity>
cononNavDestinationSelected
non consentiva di passare all'attività. (I22e34, b/171364502) - Risolto un problema per cui
navigation-dynamic-features-fragment
comportava l'accesso più volte alla destinazione appena installata. (aosp/1486056, b/169636207) - Risolto un problema per cui gli argomenti predefiniti non venivano inviati alle istanze
OnDestinationChangedListener
quando si utilizzavalaunchSingleTop
. (I2c5cb) - È stato risolto un problema per cui la navigazione a un grafo di navigazione nidificato non creava una nuova istanza del grafo nella pila precedente. (Ifc831)
- È stato risolto un problema per cui l'utilizzo di
navigate()
con unpopUpTo
che rimuoveva l'ultima destinazione in un grafo di navigazione non distruggeva e rimuoveva immediatamente il grafo di navigazione stesso dallo stack precedente. (I910a3) - Navigazione 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 vista decor principale di un DialogFragment, oltre ai controlli esistenti della gerarchia dei frammenti e della gerarchia delle viste dei frammenti. In questo modo, puoi testare i frammenti di dialogo che utilizzano la navigazione conFragmentScenario
eNavigation.setViewNavController()
. (I69e0d)
Versione 2.3.1
Versione 2.3.1
14 ottobre 2020
Viene rilasciato androidx.navigation:navigation-*:2.3.1
. 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 sostituisce i metodi hashcode ed equals (b/161586466)
- La navigazione ora include la destinazione corrente nell'eccezione "Nessuna destinazione con ID", che dovrebbe migliorare l'esperienza di debug dello sviluppatore. (b/168311416)
Correzioni di bug
- Safe Args non eseguirà più il wrapping della riga di ritorno, anche se il nome della classe dell'argomento generato è più lungo di 100 caratteri. (b/168584987)
Modifiche alle dipendenze
navigation-ui
ora dipende da DrawerLayout 1.1.1, assicurando cheNavigationUI
sia in grado di aprire il riquadro a scomparsa anche quando si utilizzaLOCK_MODE_LOCKED_CLOSED
oLOCK_MODE_LOCKED_OPEN
. (b/162253907)- Safe Args ora dipende da KotlinPoet 1.6.0 (aosp/1435911)
- Safe Args ora dipende da AGP 4.0.1 (aosp/1442337)
Versione 2.3.0
Versione 2.3.0
24 giugno 2020
Viene rilasciato androidx.navigation:navigation-*:2.3.0
. La versione 2.3.0 contiene questi commit.
Modifiche principali dalla versione 2.2.0
- Integrazione dei moduli delle funzionalità: gli elementi
navigation-dynamic-features-runtime
enavigation-dynamic-features-fragment
ti consentono di accedere alle destinazioni definite nei moduli delle funzionalità, gestendo automaticamente l'installazione dei moduli delle funzionalità in base alle esigenze. Per ulteriori informazioni, consulta Navigare con i moduli di funzionalità. - Test di navigazione: l'artefatto
navigation-testing
fornisce unTestNavHostController
che consente di impostare la destinazione corrente e verificare lo stack posteriore dopo le operazioni di navigazione. Per ulteriori informazioni, consulta Testare la navigazione. - Restituzione di un risultato: il
NavBackStackEntry
associato a ogni destinazione nella pila di navigazione ora consente di accedere a unSavedStateHandle
adatto per memorizzare piccole quantità di stato salvato da associare a una determinata voce della pila di navigazione. Per saperne di più, consulta Restituire un risultato alla destinazione precedente. - Supporto di
NavigationUI
perOpenable
: tutti gli utilizzi diDrawerLayout
inNavigationUI
sono stati sostituiti dall'interfaccia più genericaOpenable
aggiunta in CustomView1.1.0
e implementata daDrawerLayout
in DrawerLayout1.1.0
. - Supporto di Action e Mime Type nei link diretti: i link diretti sono stati estesi per supportare
app:action
eapp:mimeType
, oltre aapp:uri
, disponibile in precedenza.NavController
ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. Per ulteriori informazioni, consulta la sezione Eseguire la navigazione utilizzando NavDeepLinkRequest.
Problemi noti
- Il supporto per le azioni dei link diretti e i tipi MIME non è ancora disponibile nell'unione di file manifest. Fino al completamento di questo lavoro, tutti gli elementi
<intent-filter>
generati dall'elemento<nav-graph>
nel manifest non includeranno il tipo MIME nell'elemento<data>
o il<action>
personalizzato. Devi aggiungere manualmente un elemento<intent-filter>
appropriato al file manifest.
Versione 2.3.0-rc01
10 giugno 2020
Viene rilasciato androidx.navigation:navigation-*:2.3.0-rc01
. La versione 2.3.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un problema relativo a
NullPointerException
quando si sostituisce un'istanza di una destinazione senza argomenti con un'altra istanza con argomenti consingleTop
. (b/158006669) - Tutte le eccezioni
destination is unknown
lanciate daNavController
ora dispongono di informazioni di debug aggiuntive per determinare lo stato diNavController
. (b/157764916)
Versione 2.3.0-beta01
20 maggio 2020
androidx.navigation:navigation-*:2.3.0-beta01
sono state rilasciate. La versione 2.3.0-beta01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui il
Lifecycle
delNavBackStackEntry
non veniva aggiornato correttamente dopo l'interruzione del processo. (b/155218371) - Le istanze
OnDestinationChangedListener
registrate prima di chiamaresetGraph()
ora ricevono correttamente la destinazione ripristinata dopo l'interruzione di un processo. (b/155218371) - Quando utilizzi
singleTop
, gli argomenti diNavBackStackEntry
vengono ora aggiornati correttamente e inviati a tutte le istanze diOnDestinationChangeListener
. (b/156545508)
Aggiornamenti delle dipendenze
- L'elemento
NavigationUI
ora dipende da CustomView1.1.0-rc01
e DrawerLayout1.1.0-rc01
. (aosp/1309696)
Versione 2.3.0-alpha06
29 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha06
viene rilasciato. (La versione 2.3.0-alpha06 contiene questi commit.)
Nuove funzionalità
- I link diretti sono stati ampliati per supportare
app:action
eapp:mimeType
, oltre aiapp:uri
disponibili in precedenza. NavController ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. (b/136573074, b/135334841)
Modifiche all'API
- Ha notevolmente ampliato il supporto DSL di Kotlin per le destinazioni della Navigazione dinamica. (b/148969800)
Correzioni di bug
- È stato risolto un problema per cui gli intent dei link diretti venivano ignorati quando si utilizzava una destinazione di inizio nidificata. (b/154532067)
Versione 2.3.0-alpha05
15 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha05
viene 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:graphPackage
e verrà utilizzato un valore predefinito aggiungendo il suffissomoduleName
aapplicationId
dopo un punto. Se devi personalizzaregraphPackage
, ora è supportato un segnapostographPackage
.${applicationId}
(b/152696768) - Il DSL Kotlin del grafo di navigazione ora espone un
defaultArguments
Map
per le azioni, rispecchiando la possibilità di impostare valori predefiniti sugli elementi<action>
nei file XML di navigazione. (b/150345605)
Correzioni di bug
- In Navigazione 2.2.2: è stato corretto un
IllegalStateException
durante il deep linking alla destinazione iniziale del grafico quando erano presenti più istanzeNavHostFragment
nell'Attività. (b/147378752)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Frammento
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
Viene rilasciato androidx.navigation:navigation-*:2.3.0-alpha04
. La versione 2.3.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per l'attività del modulo di funzionalità e le destinazioni dei frammenti nel DSL Kotlin di Navigation. (b/148969800)
Modifiche all'API
- La classe
DynamicExtras
non utilizza più un pattern di builder e ora può essere costruita direttamente. (aosp/1253671) - Ora
DynamicActivityNavigator
accetta unContext
nel suo costruttore anziché unActivity
. (aosp/1250252).
Correzioni di bug
NavigationUI
non ignora più le etichette vuote (ad es. una destinazione conandroid:label=””
) e ora imposta correttamente il titolo su una stringa vuota. (b/148679860)
Aggiornamenti delle dipendenze
- Gli elementi delle funzionalità dinamiche di navigazione ora dipendono da Play Core
1.6.5
. (b/149556401)
Versione 2.3.0-alpha03
4 marzo 2020
androidx.navigation:navigation-*:2.3.0-alpha03
viene rilasciato. La versione 2.3.0-alpha03 contiene questi commit.
Modifiche all'API
- Anziché fare affidamento sulla classe
DrawerLayout
concreta,AppBarConfiguration
ora utilizza l'interfacciaOpenable
introdotta in CustomView1.1.0-alpha02
(cheDrawerLayout
implementa a partire da DrawerLayout1.1.0-alpha04
), consentendoti di utilizzare implementazioni personalizzate diOpenable
conNavigationUI
. (b/129030452)
Correzioni di bug
- Le regole ProGuard per
navigation-common-ktx
ora mantengono correttamente solo le classinavigation-common-ktx
utilizzate anziché tutte le istanzenavigation-common-ktx
.NavArgs
NavArgs
(b/150213558)
Modifiche alle dipendenze
- La navigazione ha ripristinato la dipendenza dal core
1.2.0
e ora dipende dal core1.1.0
per evitare di costringere gli sviluppatori a passare a una dipendenza più recente quando Navigazione non dipende da nuove API nel core1.2.0
.
Versione 2.3.0-alpha02
19 febbraio 2020
androidx.navigation:navigation-*:2.3.0-alpha02
viene rilasciato. La versione 2.3.0-alpha02 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora consente di accedere a unSavedStateHandle
adatto per memorizzare piccole quantità di stato salvato da associare a una determinata voce della pila di ritorno. Per un esempio di caso d'uso, consulta Restituire un risultato. (b/79672220)
Modifiche alle API
- Sono stati aggiunti metodi di comodità per
getCurrentBackStackEntry()
egetPreviousBackStackEntry()
per semplificare il recupero di unNavBackStackEntry
per le destinazioni correnti e precedenti. (b/79672220)
Correzioni di bug
navigateUp()
ora passa gli argomenti della destinazione corrente eKEY_DEEP_LINK_INTENT
alla destinazione precedente quando avvii l'app nel tuo stack di attività. (b/147456890)
Modifiche alle dipendenze
- La navigazione ora dipende da Core
1.2.0
.
Versione 2.3.0-alpha01
5 febbraio 2020
androidx.navigation:navigation-*:2.3.0-alpha01
viene rilasciato. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il nuovo artefatto
navigation-testing
fornisce una classeTestNavHostController
. Questa classe fornisce un'alternativa all'utilizzo di unNavController
simulato durante il test di navigazione che consente di impostare la destinazione corrente e verificare la pila di ritorno dopo le operazioni di navigazione. (b/140884273) - Il nuovo
navigation-dynamic-features-fragment
(e la relativa dipendenza transitiva,navigation-dynamic-features-runtime
) ti consente di includere destinazioni o interi grafici di navigazione (tramite<include-dynamic>
) dai moduli delle funzionalità, garantendo un'installazione senza problemi dei moduli delle funzionalità on demand quando navighi verso queste destinazioni. Per saperne di più, consulta la sezione Navigare con i moduli delle funzionalità. (b/132170186)
Correzioni di bug
- In Navigazione
2.2.1
: i link diretti senza parametri di query ora ignorano correttamente i parametri di query anziché aggiungerli agli elementi{argument}
finali o non corrispondere al link diretto. (b/147447512) - Da Navigazione
2.2.1
: le regole di ProGuardnavigation-ui
perDrawerArrowDrawable
sono state aggiornate per garantire cheandroid.enableJetifier=true
non sia obbligatorio. (b/147610424) - Da Navigazione
2.2.1
: il modulonavigation-common-ktx
ora ha un nome univoco del pacchetto manifest anziché condividere lo stesso nome del pacchetto manifest dinavigation-runtime-ktx
. (aosp/1141947)
Aggiornamenti delle dipendenze
- Da Navigation
2.2.1
: Navigation2.2.1
ora dipende da Lifecycle ViewModel SavedState2.2.0
e Fragment1.2.1
.
Versione 2.2.2
Versione 2.2.2
15 aprile 2020
androidx.navigation:navigation-*:2.2.2
sono state rilasciate. La versione 2.2.2 contiene questi commit.
Correzioni di bug
- È stato corretto un problema relativo al
IllegalStateException
quando si crea un link diretto alla destinazione iniziale del grafico se nella tua attività sono presenti più istanze diNavHostFragment
. (b/147378752) NavigationUI
non ignora più le etichette vuote (ad es. una destinazione conandroid:label=””
) e ora imposta correttamente il titolo su una stringa vuota. In precedenza era stata rilasciata in Navigazione 2.3.0-alpha04. (b/148679860)- Le regole di ProGuard
navigation-common-ktx
ora mantengono correttamente solo le classiNavArgs
in uso anziché tutte le istanzeNavArgs
. In precedenza era stata rilasciata in Navigazione 2.3.0-alpha03. (b/150213558
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal componente Fragment
1.2.4
. (aosp/1277325)
Versione 2.2.1
Versione 2.2.1
5 febbraio 2020
androidx.navigation:navigation-*:2.2.1
viene rilasciato. La versione 2.2.1 contiene questi commit.
Correzioni di bug
- I link diretti senza parametri di query ora ignorano correttamente i parametri di query anziché aggiungerli agli elementi
{argument}
finali o non corrispondere al link diretto. (b/147447512) - Le regole di ProGuard
navigation-ui
perDrawerArrowDrawable
sono state aggiornate per garantire cheandroid.enableJetifier=true
non sia richiesto. (b/147610424) - Il modulo
navigation-common-ktx
ora ha un nome univoco del pacchetto manifest anziché condividere lo stesso nome del pacchetto manifest dinavigation-runtime-ktx
. (aosp/1141947)
Aggiornamenti delle dipendenze
- La navigazione
2.2.1
ora dipende da Lifecycle ViewModel SavedState2.2.0
e Fragment1.2.1
.
Versione 2.2.0
Versione 2.2.0
22 gennaio 2020
androidx.navigation:navigation-*:2.2.0
viene 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 grafo di navigazione nella pila di ritorno. Il valoreNavBackStackEntry
restituito fornisce unLifecycleOwner
basato sulla navigazione,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
, oltre a fornire gli argomenti utilizzati per avviare la destinazione. - Integrazione del ciclo di vita ViewModel SavedState:
SavedStateViewModelFactory
è ora il valore predefinito utilizzato quando si utilizzaby navGraphViewModels()
o il costruttoreViewModelProvider
con unViewModelStoreOwner
restituito daNavController.getBackStackEntry()
oNavController.getViewModelStoreOwner()
. - Supporto dei parametri di query per i link diretti: i link diretti con parametri di query ora supportano i parametri di query riordinati. Gli argomenti che hanno un valore predefinito o con valori null sono ora facoltativi quando si abbinano i link diretti.
- Supporto dell'animazione migliorato:
NavHostFragment
ora utilizzaFragmentContainerView
di Fragment 1.2.0 per risolvere i problemi di ordinamento in Z delle animazioni e l'invio di riquadri di finestre ai frammenti.
Versione 2.2.0-rc04
18 dicembre 2019
Viene rilasciato androidx.navigation:navigation-*:2.2.0-rc04
. La versione 2.2.0-rc04 contiene questi commit.
Correzioni di bug
- Sono state regolate le animazioni di dissolvenza predefinite utilizzate da
navigation-ui
in modo che corrispondano a quelle regolate nel Frammento1.2.0-rc04
. (b/145769814)
Versione 2.2.0-rc03
4 dicembre 2019
Viene rilasciato androidx.navigation:navigation-*:2.2.0-rc03
. La versione 2.2.0-rc03 contiene questi commit.
Correzioni di bug
- È stato risolto un problema con l'analisi dei link diretti durante l'utilizzo dei parametri di query e di un argomento come ultima parte del percorso che impediva l'analisi di più di un carattere dell'argomento del percorso finale. (b/144554689)
- È stato risolto un problema di analisi dei link diretti per cui i parametri facoltativi ricevevano
"@null"
anzichénull
. (b/141613546) NavHostFragment
ora ripristina correttamente il grafico dopo una modifica della configurazione se utilizzato conFragmentContainerView
. (b/143752103)
Modifiche alle dipendenze
- La navigazione ora dipende da Ciclo di vita
2.2.0-rc03
, Lifecycle ViewModel SavedState1.0.0-rc03
, Attività1.1.0-rc03
e Frammento1.2.0-rc03
ove appropriato.
Versione 2.2.0-rc02
7 novembre 2019
androidx.navigation:navigation-*:2.2.0-rc02
viene 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
viene rilasciato. La versione 2.2.0-beta01 contiene questi commit.
Nuove funzionalità
NavDestination
e le relative sottoclassi ora eseguono l'override ditoString()
per fornire informazioni più utili durante il debug. (b/141264986)
Modifiche al comportamento
- I parametri di query aggiuntivi ora vengono ignorati durante la corrispondenza dei link diretti anziché causare il fallimento della corrispondenza. (b/141482822)
Correzioni di bug
- Risolto il problema per cui gli argomenti nel percorso di un link diretto venivano ignorati se venivano specificati anche i parametri di query. (b/141505755)
- L'estensione Kotlin di
navArgs()
suActivity
ora ha un messaggio di errore migliore quando non sono presenti extra. (b/141408999) - Le classi Java
Directions
generate da Safe Args ora contengono valori predefiniti. (b/141099045) - Le classi Java
Args
generate da Safe Args ora contengono valori predefiniti. (b/140123727) - Quando utilizzi un elemento
Toolbar
,NavigationUI
non anima più la modifica del testo durante lo spostamento tra due destinazioni di primo livello. (b/140848160)
Versione 2.2.0-alpha03
18 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha03
viene rilasciato. La versione 2.2.0-alpha03 contiene questi commit.
Modifiche al comportamento
- La chiamata a
setViewModelStore()
dopo la chiamata asetGraph
ora genera unIllegalStateException
. Questo valore deve essere sempre impostato daNavHost
nell'ambito della configurazione iniziale per garantire che tutte le istanzeNavBackStackEntry
abbiano uno spazio di archiviazione coerente per le istanzeViewModel
. (aosp/1111821)
Correzioni di bug
- È stato corretto un problema relativo a
ConcurrentModificationException
quando si utilizzano istanzeViewModel
collegate a più istanzeViewModelStore
basate su diversi grafici di navigazione. (aosp/1112257).
Versione 2.2.0-alpha02
5 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha02
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- I link diretti con parametri di query ora supportano i parametri di query riordinati; gli argomenti che hanno un valore predefinito o sono nullable sono ora facoltativi per la corrispondenza dei link diretti. (b/133273839)
- Ora puoi chiamare
NavController.getBackStackEntry()
passando l'ID di una destinazione o di un grafo di navigazione nello stack precedente. Il valoreNavBackStackEntry
restituito fornisce unLifecycleOwner
basato sulla navigazione,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
, oltre a fornire gli argomenti utilizzati per avviare la destinazione. (aosp/1101691, aosp/1101710)
Correzioni di bug
- Risolto un problema per cui l'aggiunta di un
NavHostFragment
aViewPager2
non riusciva con unIllegalArgumentException
. (b/133640271) - Ora
NavInflater
evita di chiamaregetResourceName()
inutilmente, accelerando il tempo di inflazione fino al 40%. (b/139213740)
Versione 2.2.0-alpha01
7 agosto 2019
androidx.navigation:navigation-*:2.2.0-alpha01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
SavedStateViewModelFactory
è ora il valore predefinito utilizzato quando si utilizzaby navGraphViewModels()
o il costruttoreViewModelProvider
con unViewModelStoreOwner
restituito daNavController.getViewModelStoreOwner()
. (b/135716331)
Modifiche all'API
- Da Navigazione
2.1.0-rc01
: l'APIgetViewModelStore()
deprecata suNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Correzioni di bug
NavHostFragment
ora utilizzaFragmentContainerView
, risolvendo i problemi di ordinamento Z delle animazioni e l'invio degli incavi della finestra ai frammenti. (b/137310379)
Versione 2.1.0
Versione 2.1.0
5 settembre 2019
androidx.navigation:navigation-*:2.1.0
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche importanti dalla versione 2.0.0
- Definizione dell'ambito dei ViewModel in base a un grafo di navigazione: ora puoi creare ViewModel con ambito a livello di grafo di navigazione utilizzando il delegato della proprietà
by navGraphViewModels()
per gli utenti Kotlin che utilizzano le librerie-ktx
o l'APIgetViewModelStoreOwner()
aggiunta aNavController
. Per scoprire di più, consulta Condividere dati relativi all'interfaccia utente tra le destinazioni. - Destinazioni di dialogo: ora puoi creare
<dialog>
destinazioni che mostreranno unaDialogFragment
quandonavigate
.NavHostFragment
supporta le destinazioni delle finestre di dialogo per impostazione predefinita. Per ulteriori informazioni, vedi Creare una destinazione da un DialogFragment. - Navigazione tramite URI: ora puoi
navigate
utilizzando unUri
, che utilizza il<deepLink>
che hai aggiunto a una destinazione per raggiungerla. Per ulteriori informazioni, consulta la sezione Eseguire la navigazione utilizzando Uri. - NavHostController: le API utilizzate specificamente per la costruzione di un
NavHost
personalizzato sono state spostate inNavHostController
, consentendo alle implementazioni di collegare il proprioNavController
all'hostingLifecycleOwner
,OnBackPressedDispatcher
eViewModelStore
.
Versione 2.1.0-rc01
7 agosto 2019
androidx.navigation:navigation-*:2.1.0-rc01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- L'API
getViewModelStore()
deprecata suNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Versione 2.1.0-beta02
19 luglio 2019
androidx.navigation:*:2.1.0-beta02
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- È stata rimossa la dipendenza da JaCoCo non intenzionale introdotta in
2.1.0-beta01
. (b/137782950)
Versione 2.1.0-beta01
17 luglio 2019
Viene rilasciato androidx.navigation:*:2.1.0-beta01
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
NavigationUI
ora anima la rimozione del pulsante Su quando si utilizzasetupWithNavController()
conToolbar
oCollapsingToolbarLayout
. (b/131403621)
Correzioni di bug
- È stato risolto un problema di tempo durante l'utilizzo di più NavHostFragments con lo stesso contenitore con
findNavController()
. (b/136021571)
Versione 2.1.0-alpha06
2 luglio 2019
Viene rilasciato androidx.navigation:*:2.1.0-alpha06
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- L'attributo
app:navGraph
utilizzato da NavHostFragment è stato spostato nell'elementonavigation-runtime
. I navigatori personalizzati che possono essere aggiunti tramite XML devono utilizzare questo attributo per ottenere l'integrazione con il riquadro Host di Navigation Editor. (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 di finestre mobili, come le destinazioni
<dialog>
, è stata generalizzata in un'interfaccia di indicatori,FloatingWindow
, che ora viene implementata da tutte le destinazioni<dialog>
. I metodi di navigazione dell'interfaccia utente per interagire con la barra delle app in alto ora ignorano le destinazioniFloatingWindow
. (b/133600763)
Modifiche al comportamento
- La navigazione ora mantiene correttamente lo stato in sincronia con ciò che viene visualizzato sullo schermo quando si utilizza una destinazione
<dialog>
. Di conseguenza, ora la navigazione mostra automaticamente le destinazioni<dialog>
quando vai a una destinazione non di dialogo e non di attività, ad esempio una destinazione<fragment>
. (b/134089818)
Correzioni di bug
- La navigazione ora elimina l'animazione che si verifica durante la ricreazione dell'attività quando viene gestito un link diretto, correggendo un lampo visivo. (b/130362979)
- È stato corretto un bug per cui la pila di navigazione a ritroso non era sincronizzata quando veniva visualizzato un frammento durante l'aggiunta del frammento iniziale. (b/133832218)
Versione 2.1.0-alpha05
5 giugno 2019
androidx.navigation:*:2.1.0-alpha05
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche all'API
- Le API correlate all'host in
NavController
sono state rinominate e spostate in una nuova sottoclasseNavController
,NavHostController
. (aosp/966091) - Il metodo
setHostOnBackPressedDispatcherOwner()
NavController
è stato sostituito con il metodosetOnBackPressedDispatcher()
diNavHostController
e ora è necessario chiamaresetLifecycleOwner()
prima di chiamarlo. (aosp/965409) NavHostController
ora contiene un metodoenableOnBackPressed(boolean)
che sostituisce la classeNavHostOnBackPressedManager
restituita in precedenza dasetHostOnBackPressedDispatcherOwner()
. (aosp/966091)
Correzioni di bug
- È stato risolto un problema per cui la pila di ritorno non era corretta dopo la navigazione tramite URI. (b/132509387)
- I link diretti gestiti automaticamente da NavController ora vengono attivati una sola volta. (b/132754763)
Versione 2.1.0-alpha04
16 maggio 2019
Viene rilasciato androidx.navigation:*:2.1.0-alpha04
. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
NavHostFragment
rispetta correttamenteapp:defaultNavHost
quando intercetta gli eventi del pulsante Indietro di sistema, correggendo una regressione in2.1.0-alpha03
di navigazione. b/132077777DialogFragmentNavigator
ora gestisce correttamente le operazionipopBackStack()
enavigateUp()
. b/132576764- È stato risolto un problema di
IllegalStateException: unknown destination during restore
durante la navigazione ripetuta tra grafici nidificati. b/131733658
Versione 2.1.0-alpha03
7 maggio 2019
androidx.navigation:*:2.1.0-alpha03
viene 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 mostrino unDialogFragment
quandonavigate
.NavHostFragment
supporta le destinazioni della finestra di dialogo per impostazione predefinita. b/80267254 - Oltre a chiamare
navigate
con un ID risorsa o un'istanzaNavDirections
, ora puoi eseguire la navigazione tramite unUri
, che utilizza il<deepLink>
che hai aggiunto a una destinazione per passare alla destinazione corretta. b/110412864
Modifiche al comportamento
- Le animazioni predefinite fornite da NavigationUI sono state velocizzate da 400 ms a 220 ms per corrispondere alla velocità di animazione predefinita di attività e frammenti. b/130055522
Modifiche alle API
- Il metodo
createFragmentNavigator()
diNavHostFragment
è stato ritirato e la relativa funzionalità è stata spostata nel nuovo metodoonCreateNavController()
per chiarire che questo è il punto di contatto corretto per l'aggiunta di Navigator personalizzati quando si esegue il sottoclassamento diNavHostFragment
. b/122802849 - A
NavDestination
è stato aggiunto un metodohasDeepLink()
per consentirti di verificare se un determinatoUri
può essere gestito da quella destinazione o, nel caso di unNavGraph
, da qualsiasi destinazione nel grafo di navigazione. b/117437718
Correzioni di bug
- Ora gli argomenti predefiniti vengono passati correttamente alle istanze
OnDestinationChangedListener
. b/130630686 NavHostFragment
ora intercetta gli eventi di sistema Indietro utilizzandoOnBackPressedDispatcher
, risolvendo un problema relativo alla navigazione condizionale nei metodi del ciclo di vita del frammento al ritorno a un frammento. b/111598096- Per Safe Args, un
android:defaultValue=”@null”
con unapp:argType
non specificato viene ora dedotto correttamente come argomentostring
. b/129629192
Versione 2.1.0-alpha02
3 aprile 2019
androidx.navigation:*:2.1.0-alpha02
viene 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:targetPackage
a una destinazione<activity>
per limitare il nome del pacchetto corrispondente. Supportaapp:targetPackage="${applicationId}"
per la limitazione del pacchetto al tuo ID applicazione. b/110975456
Correzioni di bug
android:name
per le destinazioni<activity>
non viene più analizzato in un Class al momento dell'inflazione, evitando ClassNotFoundExceptions quando si utilizzano funzionalità dinamiche. b/124538597
Versione 2.1.0-alpha01
19 marzo 2019
Questa è la prima versione alpha di Navigazione 2.1.0
.
Modifiche alle dipendenze
- La navigazione ora dipende da
androidx.core:core:1.0.1
eandroidx.fragment:fragment:1.1.0-alpha05
. Questa release rimuove anche la dipendenza daandroidx.legacy:legacy-support-core-utils:1.0.0
. B/128632612
Modifiche all'API
- È stato aggiunto un nuovo metodo
Navigation.createNavigateOnClickListener(NavDirections)
come alternativa alla creazione di un ascoltatore dei clic con un ID risorsa e un bundle. b/127631752 FragmentNavigator.instantiateFragment
è stato deprecato. L'implementazione predefinita ora utilizzaFragmentFactory
per creare istanze di frammenti. b/119054429
Correzioni di bug
- Navigazione non invia più un
Bundle
nullo quando sono presenti argomenti allegati a una destinazione, risolvendo un problema quando si utilizzaandroid:defaultValue="@null"
. b/128531879 - Safe Args ora dipende da KotlinPoet 1.1.0, risolvendo un problema con i 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 elementi con l'ID gruppo androidx.navigation
e modifica le dipendenze in modo che corrispondano a quelle di AndroidX.
Il comportamento di 2.0.0-rc02 è identico a quello di Navigation 1.0.0-rc02 e non dovrebbero essere necessarie modifiche al codice per l'aggiornamento da 1.0.0-rc02 oltre all'aggiornamento delle dipendenze in modo che corrispondano alle nuove dipendenze.
Per utilizzare le release 2.X di Navigazione devi aver eseguito la migrazione ad AndroidX del progetto. La versione stabile di Navigation 1.0 sarà l'ultima release che utilizza le dipendenze della libreria di supporto. Tutto lo sviluppo futuro oltre la versione 1.0 si baserà su AndroidX e sulla release stabile 2.0.
Dipendenze precedenti ad AndroidX
Per le versioni di Navigation precedenti ad AndroidX, 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
Questa è la seconda release candidate per la release stabile 1.0.0 di Navigazione. Questa release contiene una serie di correzioni di bug.
Correzioni di bug
- Risolto un problema per cui
popBackStack()
veniva ignorato se il grafico principale non aveva un ID b/126251695 navigateUp()
ora gestisce correttamente il ritorno all'attività dell'app quando viene chiamato dopo la gestione di un link diretto senzaFLAG_ACTIVITY_NEW_TASK
b/126082008- È stato risolto un problema relativo alla mancata applicazione dell'animazione di uscita pop corretta da parte di
ActivityNavigator.applyPopAnimationsToPendingTransition
b/126237567 - Il codice Kotlin generato da Safe Args ora esegue correttamente l'escape delle parole chiave Kotlin come
in
efun
nel nome del pacchetto associato alla classeR
. b/126020455
Versione 1.0.0-rc01
21 febbraio 2019
Si tratta di un candidato per la release stabile 1.0.0 di Navigazione. Questa release contiene una correzione di bug.
Correzioni di bug
- Risolto un problema durante l'utilizzo di Frammenti e delle operazioni di navigazione di
singleTop
b/124294805
Versione 1.0.0-beta02
12 febbraio 2019
Questa release include una serie di piccoli miglioramenti e importanti correzioni di bug.
Nuove funzionalità
- Ora puoi utilizzare
0
comeandroid:defaultValue
per gli argomentireference
. b/124248602
Modifiche al comportamento
- Le corrispondenze dei link diretti esatte ora hanno la priorità sui link diretti con corrispondenze degli argomenti
.*
o . b/123969518
Correzioni di bug
popBackStack()
enavigateUp
ora restituiscono correttamentefalse
quando viene estratta l'ultima destinazione dalla pila di ritorno, correggendo una regressione introdotta in1.0.0-beta01
. b/123933201- La navigazione ora imposta correttamente
ClassLoader
durante il ripristino dello stato dell'istanza salvata, evitando problemi durante l'utilizzo di classi personalizzate nello stato salvato diNavigator
o negli argomenti inviati a unNavDestination
. b/123893858 - Safe Args ha generato le classi NavArgs non si arrestano più in modo anomalo durante il ripristino di un
argomento
Parcelable[]
dallo stato dell'istanza salvata. b/123963545 - Safe Args ora ripulisce correttamente le classi Kotlin generate non necessarie. b/124120883
Versione 1.0.0-beta01
4 febbraio 2019
Questa è la prima versione beta di Navigazione. In futuro, l'API di navigazione dovrebbe rimanere stabile fino alla versione successiva, a meno che non ci sia un problema critico. Questa release contiene alcune correzioni di bug e modifiche al comportamento.
Modifiche al comportamento
- La navigazione ora garantisce che i valori predefiniti degli argomenti vengano trattati in modo identico
in fase di esecuzione e tramite Safe Args. Di conseguenza, solo gli argomenti con un
app:argType="reference"
possono avere un valore predefinito che rimanda a un'altra risorsa (ad esempio@color/colorPrimary
). Il tentativo di utilizzare un valore predefinito di riferimento con unapp:argType
diverso comporterà un'eccezione durante la lettura del file 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 librerie e funzionalità su tutte le versioni del plug-in Android per Gradle. b/121304903
- È stata corretta una regressione che causava il recupero di tutte le copie di una destinazione dalla parte superiore della pila posteriore con una singola operazione
popBackStack()
, anziché di una sola destinazione alla volta. b/123552990 - È stato risolto un problema per cui lo stato
FragmentNavigator
si disaccoppiava con lo stato diNavController
, causando unIllegalStateException
quando si tentava di ripristinare la pila precedente. b/123803044 - È stato risolto un problema per cui la Freccia indietro gestita da
NavigationUI
non veniva visualizzata durante l'utilizzo di ProGuard con l'offuscamento. b/123449431 - Il codice generato da Safe Args ora gestisce correttamente l'utilizzo di un
app:argType
che rimanda 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 modo approfondito. b/123347762
Versione 1.0.0-alpha11
23 gennaio 2019
Questa è una release hotfix di 1.0.0-alpha10
che corregge un problema relativo a Safe Args.
Correzioni di bug
- Risolto 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 un errore di seguito.
Nuove funzionalità
- Ora gli utenti di Kotlin possono utilizzare il delegato della proprietà
by navArgs()
per recuperare in modo lazy un riferimento a una classeNavArgs
generata da Safe Args in unActivity
oFragment
. b/122603367 - Safe Args ora ti consente di generare codice Kotlin applicando il plug-in
androidx.navigation.safeargs.kotlin
. Il codice Kotlin è stato creato specificamente per i moduli solo Kotlin, utilizzando argomenti predefiniti e classi immutabili rispetto al pattern del builder ancora disponibile tramite il plug-inandroidx.navigation.safeargs
precedente. b/110263087
Modifiche al comportamento
- I link diretti corrispondenti ora vengono orientati verso il link diretto con il maggior numero di argomenti corrispondenti. b/118393029
- Ora, chiamare
setGraph()
su unNavController
reimposta lo stack di ritorno. b/111450672 - I link diretti sconosciuti non generano più un
IllegalStateException
, ma vengono ignorati, risolvendo i problemi relativi aNavHostFragment
nidificati o multipli. b/121340440
Modifiche che provocano un errore
- Il metodo
NavOptions.applyPopAnimationsToPendingTransition()
per applicare animazioni pop a un'attività è stato spostato inActivityNavigator
. B/122413117 - Ora Safe Args evita di duplicare classi identiche per azioni senza argomenti. Il tipo di ritorno per i metodi senza argomenti nelle classi NavDirections generate ora è
NavDirections
. b/123233147 - I classi Directions generati da Safe Args non hanno più un costruttore pubblico. Devi interagire solo con i metodi statici generati. b/123031660
- Le classi
NavDirections
generate da Safe Args non hanno più un costruttore pubblico. Dovrebbero essere generate solo tramite i metodi statici nelle classi Directions generate. b/122963206 - Il valore
Bundle
restituito dagetArguments()
diNavDirections
è ora contrassegnato come@NonNull
anziché come@Nullable
. B/123243957
Correzioni di bug
NavDeepLinkBuilder
ora gestisce correttamente piùPendingIntent
simultanei alla stessa destinazione utilizzando gli argomenti che passi per determinare l'unicità. b/120042732NavController
ora gestisce correttamente le operazionipopBackStack()
quando viene utilizzato unNavHostFragment
nidificato o altri frammenti secondari con una pila di ritorno. b/122770335NavigationUI
ora imposta correttamente la descrizione dei contenuti del pulsante Su. b/120395362- Ora le classi Directions generate da Safe Args gestiscono correttamente le azioni globali che hanno lo stesso ID di un'azione su una destinazione. b/122962504
- Le classi
NavDirections
generate da Safe Args ora hanno correttamente valorihashCode()
uguali quandoequals()
restituisce true. b/123043662 FragmentNavigator
ora genera un messaggio di errore migliore se tenti di eseguireFragmentTransactions
personalizzato sulFragmentManager
diNavHostFragment
. Dovresti usare sempregetChildFragmentManager()
. b/112927148
Versione 1.0.0-alpha09
18 dicembre 2018
Questa release contiene modifiche alle API che causano interruzioni; consulta la sezione Modifiche che causano interruzioni di seguito.
Abbiamo scelto di non continuare lo sviluppo dell'elemento android.arch.navigation:navigation-testing
. Sebbene si sia dimostrata utile per i test interni di NavController
, consigliamo vivamente strategie di test alternative, ad esempio la simulazione dell'istanza NavController
, al fine di verificare che vengano eseguite le chiamate navigate()
corrette. Questo approccio è discusso in dettaglio nel
talk sull'attività singola all'AndroidDevSummit 2018
e stiamo lavorando a ulteriore documentazione specifica sui test con Navigation.
Nuove funzionalità
- Gli elementi
MenuItem
conmenuCategory="secondary"
non torneranno più nello stack indietro se utilizzati con i metodiNavigationUI
. b/120104424 - Ora
AppBarConfiguration
consente di impostare un'istanza di fallbackOnNavigateUpListener
che verrà chiamata quandonavController.navigateUp()
restituiscefalse
. b/79993862 b/120690961
Modifiche che provocano un errore
- Quando utilizzi un
<argument>
con unargType="reference"
, Navigazione non analizza più il riferimento, fornendo invece l'ID risorsa non elaborato. b/111736515 onNavDestinationSelected()
ora torna alla destinazione iniziale del grafico di navigazione per impostazione predefinita, rendendoli coerenti con i metodisetup
. AggiungimenuCategory="secondary"
al tuoMenuItem
per evitare di aprire la pila precedente. aosp/852869- I metodi
fromBundle()
delle classiArgs
generate ora accettano un valore non nulloBundle
anziché un valore nullableBundle
aosp/845616
Correzioni di bug
- Ora gli argomenti vengono analizzati correttamente dai link diretti come
argType
corretto invece che sempre come stringhe b/110273284 - Ora la navigazione esporta correttamente le proprie 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 alle API che causano interruzioni; consulta la sezione Modifiche che causano interruzioni di seguito.
Nuove funzionalità
- Le etichette di destinazione, se utilizzate con i metodi
NavigationUI
, ora sostituiranno automaticamente le istanze{argName}
inandroid:label
con l'argomento corretto b/80267266 - La navigazione ora dipende dalla libreria di supporto 28.0.0 b/120293333
Modifiche che provocano un errore
OnNavigatedListener
è stato rinominato inOnDestinationChangedListener
b/118670572OnDestinationChangedListener
ora passa anche ilBundle
di argomenti aosp/837142- Gli attributi
app:clearTask
eapp:launchDocument
e i relativi metodi associati sono stati rimossi. Utilizzaapp:popUpTo
con la radice del grafico per rimuovere tutte le destinazioni dallo stack precedente. b/119628354 ActivityNavigator.Extras
ora utilizza un patternBuilder
e aggiunge la possibilità di impostare eventuali flagIntent.FLAG_ACTIVITY_
. aosp/828140NavController.onHandleDeepLink
è stato rinominato inhandleDeepLink
aosp/836063- Molte classi e metodi non pensati per la sottoclassificazione, come
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, sono stati resifinal
aosp/835681 - Il metodo
NavHostFragment.setGraph()
deprecato è stato rimosso aosp/835684 - Il metodo
NavigationUI.navigateUp(DrawerLayout, NavController)
obsoleto è stato rimosso. aosp/835684 - La creazione di frammenti è stata spostata in
FragmentNavigator
per semplificare la delega della creazione di frammenti in unFragmentFactory
. b/119054429 - Il costruttore di
NavGraphNavigator
non accetta più unContext
aosp/835340 - NavigatorProvider ora è
una classe anziché un'interfaccia. La funzionalità di
NavigatorProvider
restituito dagetNavigatorProvider()
non è cambiata. aosp/830660 NavDestination.navigate()
è stato rimosso. Chiamatenavigate()
al numeroNavigator
. aosp/830663- Refactoring significativo di
Navigator
, con conseguente rimozione della necessità diOnNavigatorNavigatedListener
enavigate
di restituire l'elementoNavDestination
a cui era stato indirizzato. Navigator
istanze non possono più inviare eventi pop aNavController
. Valuta la possibilità di utilizzare unOnBackPressedCallback
per intercettare le pressioni del tasto Indietro e chiamarenavController.popBackStack()
. aosp/833716
Correzioni di bug
popUpTo
ora funziona in modo coerente quando la destinazione è un elemento<navigation>
b/116831650- Sono stati corretti una serie di bug che causavano un errore
IllegalArgumentException
quando si utilizzavano grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - L'attributo
dataPattern
delle destinazioni<activity>
ora completerà gli argomenti da argomenti non String chiamandotoString()
b/120161365
Arg sicuri
- Safe Args supporta gli oggetti Serializable, inclusi i valori Enum. I tipi di enum
possono impostare un valore predefinito utilizzando il valore letterale dell'enum senza il nome della classe
(ad es.
app:defaultValue="READ"
) b/111316353 - Safe Args supporta gli array di tutti i tipi supportati b/111487504
- Safe Args ora ignora le sottocartelle delle directory delle risorse b/117893516
- Safe Args aggiunge le annotazioni
@Override
ove appropriato b/117145301
Versione 1.0.0-alpha07
29 ottobre 2018
Nuove funzionalità
- Una nuova classe AppBarConfiguration consente di personalizzare le destinazioni considerate di primo livello. Per maggiori dettagli, consulta la documentazione aggiornata. b/117333663
- Ora puoi passare argomenti alla destinazione iniziale del grafico b/110300470
- Ora i link diretti supportano gli schemi personalizzati con punti, trattini e segni più. b/112806402
Modifiche che provocano un errore
- Il modulo
navigation-testing-ktx
è stato incorporato innavigation-testing artifact
e non verrà più pubblicato. - L'elemento
navigation-testing
ora ha una dipendenza dalla libreria standard di 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
- Non è più possibile associare le azioni alle destinazioni <activity>. aosp/785539
Correzioni di bug
- I link diretti ora 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 un arresto anomalo che si verifica dopo le modifiche alla configurazione quando si utilizzano Navigator personalizzati. b/110763345
Safe Args
- Gli argomenti sicuri ora hanno 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 grafo <include>. b/116542123
Versione 1.0.0-alpha06
20 settembre 2018
Nuove funzionalità
- Le transizioni di elementi condivisi per le destinazioni di frammenti e attività sono ora supportate b/79665225. Per ulteriori informazioni, vedi Implementare la navigazione con il componente Architettura di navigazione.
- Se selezioni un elemento in
NavigationView
, tutti i riquadri inferiori contenenti b/112158843 verranno chiusi
Modifiche all'API
- Modifica non compatibile: il metodo Navigator
navigate()
ora accetta un parametroNavigator.Extras
. - Il metodo
getGraph()
di NavController ora èNonNull
b/112243286
Correzioni di bug
NavigationUI.setupWithNavController()
non fa più trapelare più visualizzazioni se utilizzato con visualizzazioni da singole destinazioni b/111961977- Navigator
onSaveState()
ora viene chiamato una sola volta b/112627079
Arg sicuri
- Le classi Indicazioni per le destinazioni di navigazione ora estendono la classe Indicazioni del relativo elemento principale, se esistente b/79871405
- Le classi Directions e Args ora hanno un'utile implementazione di
toString()
b/111843389
Versione 1.0.0-alpha05
10 agosto 2018
Correzioni di bug
- È stato corretto un bug che causava un comportamento errato della pila di ritorno. b/111907708
- Correzione di un bug in
equals()
delle classi Generated Args. b/111450897 - Correggi un errore di build in Safe Args. b/109409713
- Correggere una conversione dagli identificatori di risorse ai nomi Java b/111602491
- Risolvere i problemi segnalati dai messaggi di errore relativi ai valori null nel plug-in Safe Args.
- Aggiungi le annotazioni mancanti relative alla nullabilità.
Versione 1.0.0-alpha04
19 luglio 2018
Navigation 1.0.0-alpha04
e il plug-in Gradle Safe Args associato contengono una serie di modifiche all'API, al comportamento e correzioni di bug.
Modifiche al comportamento / API
- NavHostFragment imposterà sempre il frammento corrente come frammento di navigazione principale, assicurandosi che i gestori dei frammenti secondari vengano rimossi prima del gestore NavController esterno b/111345778
Safe Args
- Modifica che provoca un errore:
app:type
è stato modificato inapp:argType
per evitare conflitti con altre librerie come ConstraintLayout 2.0.0-alpha1 b/111110548 - I messaggi di errore di Safe Args ora sono cliccabili b/111534438
- Le classi Args ora confermano che gli attributi
NonNull
non sono effettivamente null b/111451769 - Sono state aggiunte annotazioni
NonNull
aggiuntive alle classi NavDirections e Args generate b/111455455 b/111455456
Correzioni di bug
- È stato risolto un problema con il pulsante Indietro di sistema dopo il deep link a una destinazione del frammento b/111515685
Versione 1.0.0-alpha03
12 luglio 2018
Navigation 1.0.0-alpha03
e il plug-in Gradle Safe Args associato contengono una serie di modifiche all'API, al comportamento e correzioni di bug.
Modifiche al comportamento / 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 la pila di ritorno è vuota o quando l'ID destinazione specificato non è presente nella pila di ritorno b/110893637
- FragmentNavigator ora ignora le operazioni di navigazione dopo che FragmentManager ha salvato lo stato, evitando le eccezioni "Impossibile eseguire questa azione dopo onSaveInstanceState" b/110987825
Safe Args
- Modifica non compatibile: i caratteri non alfanumerici nei nomi di azioni e argomenti verranno sostituiti da lettere maiuscole nei rispettivi nomi dei metodi NavDirections.
- Ad esempio,
DemoController.index
diventeràsetDemoControllerIndex
b/79995048 - Ad esempio,
action_show_settings
diventeràactionShowSettings
b/79642240
- Ad esempio,
- Modifica che interrompe la modifica: gli argomenti ora sono considerati non nulli per impostazione predefinita. Per consentire valori null per gli argomenti stringa e parcelable, aggiungi
app:nullable="true"
b/79642307 - Ora puoi utilizzare
app:type="long"
con valori predefiniti sotto forma di "123L" b/79563966 - Gli argomenti Parcelable sono ora supportati, 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 librerie b/80036553
- Il plug-in Safe Args ora può essere applicato ai progetti di funzionalità b/110011752
Correzioni di bug
- Sono stati corretti i problemi di navigazione durante i metodi di ciclo di vita dei frammenti b/109916080
- Sono stati risolti i problemi relativi alla navigazione tra grafici nidificati più volte b/110178671
- Sono stati risolti i problemi relativi all'utilizzo di
setPopUpTo
con la prima destinazione nel grafico b/109909461 - È stato risolto il problema per cui tutti i valori
app:defaultValue
venivano passati come stringhe b/110710788 - aapt2 in bundle con il plug-in Android Gradle 3.2 Beta 01 ora aggiunge regole di conservazione per ogni attributo
android:name
nei file XML di navigazione b/79874119 - È stata corretta la perdita di memoria durante la sostituzione del FragmentNavigator predefinito b/110900142
Versione 1.0.0-alpha02
7 giugno 2018
Modifiche al comportamento
FragmentNavigator
ora utilizzasetReorderingAllowed(true)
. B/109826220La navigazione ora decodifica gli argomenti analizzati dagli URL dei link diretti. b/79982454
Correzioni di bug
È stato corretto un
IllegalStateException
quando si chiama navigate dai metodi di ciclo di vita del frammento. b/79632233La navigazione ora dipende dalla libreria di supporto 27.1.1 per correggere lo sfarfallio durante l'utilizzo delle animazioni. b/80160903
È stato corretto un
IllegalArgumentException
quando si utilizzava defaultNavHost="true" come frammento secondario. b/79656847È stato corretto un
StackOverflowError
durante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato corretto un
IllegalArgumentException
quando si tornava a un grafico nidificato. b/80453447È stato risolto un problema relativo all'accavallamento dei frammenti quando si utilizza
launchSingleTop
. b/79407969La navigazione ora genera lo stack back sintetico corretto per i grafici nidificati. b/79734195
NavigationUI ora evidenzierà l'elemento corretto quando viene utilizzato un grafico nidificato come
MenuItem
. b/109675998
Modifiche all'API
L'attributo
clearTask
per le azioni e l'API associata inNavOptions
è stato ritirato. b/80338878L'attributo
launchDocument
per le azioni e l'API associata inNavOptions
è stato ritirato. b/109806636
Versione 1.0.0-alpha01
8 maggio 2018
Navigazione fornisce un framework per creare
la navigazione in-app. Questa release iniziale è 1.0.0-alpha01
.