Navigazione
Aggiornamento più recente | Release stabile | Candidato per l'uscita | Versione beta | Release alpha |
---|---|---|---|---|
4 settembre 2024 | 2.8.0 | - | - | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza alla navigazione, devi aggiungere il Repository Maven di Google al tuo progetto. Consulta il Repository Maven di Google per ulteriori informazioni.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il 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 ktx.
Per saperne di più sulle dipendenze, consulta Aggiungere dipendenze nella build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Non esitare a contattarci in caso di nuovi problemi o idee per migliorare questa raccolta. Dai un'occhiata alle problemi esistenti in questa raccolta, prima di crearne uno nuovo. Puoi aggiungere il tuo voto a un problema esistente tramite facendo clic sul pulsante a forma di stella.
Consulta la documentazione di Issue Tracker per ulteriori informazioni.
Versione 2.8
Versione 2.8.0
4 settembre 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0
. La versione 2.8.0 contiene questi commit.
Modifiche importanti dalla versione 2.7.0
Navigazione Kotlin DSL di sicurezza
- Navigazione ora fornisce sicurezza dei tipi per il DSL Kotlin (utilizzato da Navigation Compose) utilizzando la serializzazione Kotlin per consentirti di definire le destinazioni nel grafico di navigazione tramite oggetti sicuri del tipo e classi di dati:
// 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.
Navigazione predittiva per Compose
- Navigazione Compose ora fornisce il supporto per predittivo in-app tramite le nuove API
SeekableTransitionState
da write-animation. In questo modo puoi utilizzare il gesto Indietro per visualizzare la destinazione precedente con la transizione personalizzata prima di decidere se eseguire la transazione tramite il gesto completato o annullarla.
Frammento di navigazione componibile
- È stato aggiunto un nuovo artefatto
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 argomento, il cui nome completo viene utilizzato come attributoandroid:name
su ogni destinazione. Quando si accede a una di queste destinazioni, viene creato un frammento contenitore per visualizzare il contenuto componibile.
// 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 sottoclasseNavType<T>
per gli argomenti basati su raccolta come elenco, array e mappe. Tutti gli array predefiniti diNavType
(IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora ereditano da questa nuova classe. - Ora in
NavType
è integrato il supporto per elenchi di tipo 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
- È stato corretto l'arresto anomalo della navigazione durante il passaggio nelle classi enum di primo livello come argomenti sicuri. (I0ba76, b/358137294)
- La navigazione 2.8 ora funziona correttamente con l'SDK 34 e non passerà all'SDK 35 fino alla versione 2.9 insieme al resto delle librerie AndroidX. (b/358798728)
Versione 2.8.0-beta07
7 agosto 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta07
. La versione 2.8.0-beta07 contiene questi commit.
Problemi noti
- A causa di b/358137294, sono supportate solo le enum nidificate in un'altra classe. Le enum di primo livello saranno supportate nella prossima release.
Correzioni di bug
- Durante la navigazione verso destinazioni duplicate o condivise, la navigazione darà la priorità alla destinazione corrispondente più vicina dalla posizione corrente nel grafico. (Ic89a4, b/352006850)
- Per la navigazione negli argomenti sicuri è stato aggiunto un nuovo
NavType.EnumType
. Ciò significa che i tipi diEnum
non richiedono piùNavType
personalizzati. Tieni presente che ilSerialName
diEnum
deve essere il nome completo predefinito. (I66d22, b/346475493) - Nella navigazione negli argomenti sicuri è stato aggiunto il supporto integrato per i tipi di argomenti null,tra cui
Int?
,Long?
,Float?
,Boolean?
eEnum<*>?
. (I32d13,I1c580,Ifba66,I978b0,Ide076 , b/351994237) startDestination
diNavGraph
ora utilizzerà i valori di argomento predefiniti se la routestartDestination
passata aNavGraph
è esattamente uguale astartDestination.route
. (I13762, b/354046047)
Versione 2.8.0-beta06
24 luglio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta06
. La versione 2.8.0-beta06 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui i controlli lint
WrongStartDestinationType
non controllavano la presenza di oggetti Companion nel tipo di classe passato, causando il mancato rilevamento dell'errore da parte del 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) - Ora l'API test
SavedStateHandleFactory
può essere utilizzata in test non Android, ma richiederà Robolectric per supportare l'analisi degli argomenti con i bundle. (I76cdc, b/340966212) - È stato risolto l'arresto anomalo del ripristino dello stato durante la ripresa dell'app dopo la morte del processo con l'utilizzo della Navigazione sicura per i tipi in Compose. (Ia8f38, b/341801005)
- Risolto un problema di Navigazione in Compose per cui, dopo aver annullato il gesto Indietro predittivo, il
NavBackStackEntry
a cui l'utente tornava non torna più allo stato del ciclo di vita diRESUMED
. In questo modo, inoltre, la destinazione di ritorno si anima di nuovo correttamente anziché agganciarsi in posizione dopo uno scorrimento. (I97a0c, b/346608857) - Quando si utilizza predittivo con Scrittura navigazione, la destinazione 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 corretto 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 è presente un valore predefinito. (I84158, Id630f, b/342672856)
Versione 2.8.0-beta02
29 maggio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta02
. La versione 2.8.0-beta02 contiene questi commit.
Correzioni di bug
- È stato corretto l'arresto anomalo di
ClassCastException
durante l'utilizzo diNavBackStackEntry.toRoute
con un elementoNavType
personalizzato con valori null. (I1c29b, b/342239473) - Sono stati risolti i problemi di ripristino dello stato dello stack posteriore della navigazione causati dal tentativo di ripristinare una voce dello stack posteriore che non è raggiungibile tramite ID dalla destinazione corrente. Poiché le route sono supportate da ID, sono state interessate anche le destinazioni create con route. Inoltre, è stato corretto un arresto anomalo causato dalla chiamata a
clearBackStack()
con lo stesso problema di fondo. (I423c3, b/339908057)
Versione 2.8.0-beta01
14 maggio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-beta01
. La versione 2.8.0-beta01 contiene questi commit.
Modifiche alle API
SavedStateHandle.toRoute()
ora accetta un parametrotypeMap
per i tipi di argomenti personalizzati. (Ie39fb, b/339026523)- È stata aggiunta un'API di test a
navigation-testing
per creare unSavedStateHandle
da un oggetto Kotlin Serializable. (Id4867, b/339080702)
Correzioni di bug
- Sono stati aggiunti i documenti relativi ai parametri mancanti per le funzioni DSL di Navigation Kotlin. (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.
Arg sicuri in Compose Navigazione
- Il lavoro per supportare la sicurezza del tipo di tempo di compilazione per Navigator Compose e per gli utenti del Navigatore Kotlin DSL basato sulla serializzazione Kotlin è terminato e le API precedentemente sperimentali sono ora stabili.
Questa funzionalità utilizza la serie di serie di Kotlin per consentirti di definire le destinazioni nel grafico di navigazione tramite classi di dati e oggetti sicuri di 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, leggi il post del blog su Compose Navigazione e sulla sicurezza dei tipi.
Nuove funzionalità
- L'artefatto
navigation-fragment-compose
ora fornisce una composizioneLocalFragment
locale a metodi componibili all'interno di unComposableFragment
. (If35e5). - Ora in
NavType
è integrato il supporto per elenchi di tipo Int, String, Boolean, Float e Long. (I4b6dd, Ia914c, b/188693139)
Versione 2.8.0-alpha07
17 aprile 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha07
. La versione 2.8.0-alpha07 contiene questi commit.
Nuove funzionalità
Aggiunge un nuovo elemento
navigation-fragment-compose
che include un'alternativaComposableNavHostFragment
aNavHostFragment
che ti consente di aggiungere destinazionicomposable
ai tuoi file XML di navigazione. Ogni destinazionecomposable
deve essere espressa come metodo@Composable
di primo livello, senza argomento, il cui nome completo viene utilizzato come attributoandroid:name
su ogni destinazione. Quando si accede a una di queste destinazioni, viene creato un frammento contenitore per visualizzare il contenuto componibile. (I0ef2e, b/265480755)// In HomeScreen.kt @Composable fun HomeScreen() { // Your Composable content here }
// In your navigation.xml <composable android:id="@+id/home_screen" android:name="com.example.HomeScreenKt\$HomeScreen" />
Modifiche alle API
- Il supporto di Safe Args in Navigation Compose tramite un approccio basato sulla serializzazione di Kotlin è continuato. Queste API non sono completate e sono contrassegnate con l'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa al termine dell'intera piattaforma dell'API in una release futura. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, I9b73c, I554db2}19}I554db2
Versione 2.8.0-alpha06
3 aprile 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha06
. La versione 2.8.0-alpha06 contiene questi commit.
Modifiche alle API
- È iniziato il supporto di Safe Args in Navigation Compose tramite un approccio basato sulla serializzazione di Kotlin. Queste API non sono completate e sono contrassegnate con l'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa al termine dell'intera piattaforma dell'API in una release futura. (I6444e7, I988896, I98896, I98896, I98896, I2a1c5, I43a51, I43a51, I836a51, I836a1, I836a1, I836a1, I836a1, I836a1, Ic5eec, Ic5eec, Ic5eec, Ic5eec, I39407 o I39407 o I39407 . 14}I2444e41, 14}. I2444e415
Correzioni di bug
NavHost
ora utilizzaAlignment.TopStart
come argomento contentAllineament predefinito. Questo lo allinea con l'impostazione predefinita perAnimatedContent
e corregge alcune istanze di scalabilità imprevista dalla transizione dal centro. (I09e72, b/330111602)- Quando fai scorrere il gesto Indietro predittivo durante l'utilizzo di Scrittura di navigazione, ora
NavHost
completerà correttamente la transizione personalizzata anziché terminarla immediatamente. (I99017, b/327292110)
Versione 2.8.0-alpha05
20 marzo 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha05
. 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 per gli elementiNavGraph
startDestinations
nidificati. (I0e0b5, b/109505019, b/188693139)
Modifiche alle API
- È stata aggiunta la nuova classe
CollectionNavType<T>
astratta, una sottoclasseNavType<T>
per gli argomenti basati su raccolta come elenco, array e mappe. (Ic6d63, b/188693139) - Tutti gli array di
NavType
predefiniti (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora sono di tipoCollectionNavType
(Idcf79, b/188693139) NavType
ora fornisce una nuova APIvalueEquals
aperta che determina se due valori dello stesso tipo sono uguali tra loro. (I6cb97, b/327229511)
Correzioni di bug
- I parametri di query nei link diretti ora consentono i valori sotto forma di parentesi graffe attorno al nome dell'argomento (ad es.
{argName}
) come valori validi perNavTypes
basato su stringa. In questo modo è stato risolto il problema per cui un valore di questo tipo veniva considerato non valido (o assenza di un valore) per tutti i tipi. (I18302, b/327274038) - Le funzioni di
NavController
che supportano route comenavigate
opopBackStack
ora possono corrispondere correttamente alle route riempite con 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 il
SizeTranform
per le transizioni in Navigation Compose definendole come parte dell'inizializzazione delle funzionicomposable
e/onavigation
. (I91062, b/296912651)
Correzioni di bug
- È stato risolto un problema per cui
NavHost
nella navigazione Scrivi non riusciva a mostrare correttamente la transizione quando si utilizzava Indietro sistema senza un gesto. (Iceeae, b/325998468)
Versione 2.8.0-alpha03
21 febbraio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha03
. La versione 2.8.0-alpha03 contiene questi commit.
Modifiche alle API
NavBackStackEntry.savedStateHandle
ora è contrassegnato come@MainThread
perché utilizza codice che deve comunque essere presente nel thread principale. (Ibb988, b/299523245)
Correzioni di bug
- È stato risolto un problema della 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
- Compose ora dipende da Compose 1.7.0-alpha03.
Versione 2.8.0-alpha02
7 febbraio 2024
Viene rilasciato androidx.navigation:navigation-*:2.8.0-alpha02
. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- Navigazione Compose ora fornisce il supporto per predittivo in-app tramite le nuove API
SeekableTransitionState
da write-animation. In questo modo puoi utilizzare il gesto Indietro per visualizzare la destinazione precedente con la transizione personalizzata prima di decidere se eseguire la transazione tramite il gesto completato o annullarla. (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
- È stata corretta la fuga di dati di
BackStackState
per 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 SimonMarquis per aver risolto il problema di visualizzazione degli argomenti non-String quando utilizzi gli helper
NavigationUI
per compilare il titolo delle barre dell'app.
Versione 2.7.7
Versione 2.7.7
7 febbraio 2024
Viene rilasciato androidx.navigation:navigation-*:2.7.7
. La versione 2.7.7 contiene questi commit.
Correzioni di bug
- Backporting da Navigazione
2.8.0-alpha01
: è stata corretta la fuga diBackStackState
per cui più chiamatesaveState()
su un singoloNavBackStackEntry
comportavano il salvataggio di più stati, ma era possibile ripristinare solo il primo stato salvato. (I598b0, b/309559751) - Backported da Navigazione
2.8.0-alpha01
: è stato risolto un problema per cui gli argomenti non stringa non venivano visualizzati correttamente quando si utilizzano gli helperNavigationUI
per compilare il titolo delle barre dell'app. (#636, b/316676794)
Contributo esterno
- Grazie SimonMarquis per aver risolto il problema di visualizzazione degli argomenti non-String quando utilizzi gli helper
NavigationUI
per compilare il titolo delle barre dell'app.
Versione 2.7.6
Versione 2.7.6
13 dicembre 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.6
. La versione 2.7.6 contiene questi commit.
Correzioni di bug
- La funzione
NavGraph
equals()
ora considera correttamente i nodi dell'altro grafico anziché solo quello che chiama. In questo modo i grafici con nodi con ID diversi non saranno 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
- Ha migliorato enormemente il rendimento (sia in termini di tempo che di numero di allocazioni) dal 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 Michał Z per l'analisi approfondita che ha portato a questo miglioramento. (I6ad62). - Ora
NavHost
mostrerà la destinazione di inizio sul primo passaggio della composizione, invece di dover attendere che il secondo passaggio legga lo stato aggiornato. (I439a7, b/304852206)
Correzioni di bug
- È stato risolto un problema per cui il tuo back stack veniva popolato se chiamassi
setGraph
più di una volta con lo stesso identico grafico solo se nel grafico era presente una destinazione che conteneva un'azione che collega due destinazioni. (Ieaed7) - Le finestre di dialogo che sono state visitate e ignorate in rapida successione non verranno più mostrate 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) - Risolto un problema per cui
NavController
poteva gestire lo stesso link diretto più di una volta se lo stack posteriore era completamente vuoto prima di una modifica alla configurazione o di una chiamata asetGraph
solo quando per l'intent in entrata era impostato il flagFLAG_ACTIVITY_NEW_TASK
. (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
Viene rilasciato androidx.navigation:navigation-*:2.7.4
. La versione 2.7.4 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto di
popUpTo
per usare route con argomenti per consentire di tornare a una voce specifica che utilizza questi argomenti esatti, in base al supporto trovato inpopBackStack
. (I731f4, b/299255572)
Correzioni di bug
- Risolvi 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 retropressione del sistema causava l'aggiornamento non corretto di
currentDestination
in modo che corrispondesse al frammento visualizzato. (Id0d6c, b/289877514) - Il ciclo di vita di
DialogFragment
ora verrà spostato correttamente nello statoRESUMED
quando la finestra di dialogo sopra viene ignorata. (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 della navigazione con frammenti che causava la presenza di voci errate nell'elenco
visibleEntries
. (I5caa9, b/288520638) - Risolto un problema per cui la destinazione della finestra mobile (ad es.
Dialogs
,Bottomsheets
e così via) non riceveva mai un callback del ciclo di vitaRESUMED
. (I3b866, b/287505132)
Versione 2.7.2
Versione 2.7.2
6 settembre 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.2
. 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 Scrittura navigazione, in cui le finestre di dialogo parzialmente oscurate (ad esempio non quella più in alto) si trovavano nello stato 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 della nuova finestra di dialogo più in alto nello stato Ciclo di vita
STARTED
anziché essere correttamente spostata inRESUMED
. (aosp/2629401, b/286371387) - Navigazione sicura Args non crea più un'istanza con entusiasmo della sua attività se non viene effettivamente eseguita. (I0e385, b/260322841)
Aggiornamento delle dipendenze
- Navigazione Compose ora dipende da Compose 1.5.1.
Versione 2.7.1
Versione 2.7.1
23 agosto 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.1
. 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
Viene rilasciato androidx.navigation:navigation-*:2.7.0
. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
Animazioni dell'accompagnatore
Ora che AnimatedContent
è stabile, abbiamo potuto spostare il codice da Animazione di navigazione accompagnata a Compose di navigazione.
Ciò significa che tutto il supporto per l'impostazione di transizioni personalizzate esistenti in AnimatedNavHost
è supportato direttamente in NavHost
.
Non verranno apportate ulteriori modifiche all'animazione della navigazione accompagnata e a breve la ritireremo formalmente, insieme alle indicazioni su come eseguire la migrazione di nuovo a Navigation Compose, ma sarà l'opposto della guida alla migrazione e non saranno necessarie altre modifiche all'API se utilizzi già l'ultima versione alpha di Accompanist (0.31.2-alpha
). (b/197140101)
Correzioni di bug
- NavHost in Navigation Compose ora intercetta correttamente le chiamate a ritroso di sistema anche dopo che l'attività è stata INTERROMPI e RIPRENDITA. (Icb6de, b/279118447)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dalla funzionalità Scrivi
1.5.0
in alto da1.1.0
.
Versione 2.7.0-rc01
26 luglio 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.0-rc01
. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui le lambda
EnterTransition
eExitTransition
create come parte diNavHost
potevano potenzialmente rimanere in memoria anche dopo la rimozione diNavHost
dalla composizione. (I893d0)
Problemi noti
- Navigazione 2.6.x presenta un problema che causa un problema di
IllegalArgumentException
durante la navigazione con popUpTo. È possibile che questa eccezione possa essere evitata riorganizzando il grafico, in modo simile ai consigli suggeriti qui. (b/287133013)
Versione 2.7.0-beta02
28 giugno 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.0-beta02
. La versione 2.7.0-beta02 contiene questi commit.
Correzioni di bug
- Navigazione Compose ora ha l'ordine Z corretto per le transizioni personalizzate che utilizzano la navigazione con l'opzione
popUpTo
.(/Ib1c3a, b/285153947)
Versione 2.7.0-beta01
7 giugno 2023
Viene rilasciato androidx.navigation:navigation-*:2.7.0-beta01
. 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
Viene rilasciato androidx.navigation:navigation-*:2.7.0-alpha01
. La versione 2.7.0-alpha01 contiene questi commit.
Animazioni dell'accompagnatore
Ora che AnimatedContent
è stabile, abbiamo potuto spostare il codice da Animazione di navigazione accompagnata a Compose di navigazione.
Ciò significa che tutto il supporto per l'impostazione di transizioni personalizzate esistenti in AnimatedNavHost
è supportato direttamente in NavHost
.
Non verranno apportate ulteriori modifiche all'animazione della navigazione accompagnata e a breve la ritireremo formalmente, insieme alle indicazioni su come eseguire la migrazione di nuovo a Navigation Compose, ma sarà l'opposto della guida alla migrazione e non saranno necessarie altre modifiche all'API se utilizzi già l'ultima versione alpha di Accompanist (0.31.2-alpha
). (b/197140101)
Correzioni di bug
- Da Navigazione
2.6.0-rc02
: è stato risolto un problema relativo alla Navigazione in Frammenti per cui la navigazione conpopUpTo
e lo spostamento di un frammento dallo stack posteriore senza ricreare la relativa visualizzazione causava l'interruzione del funzionamento del sistema. (Ieb8d4, b/281726455)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Scrivi
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 alla 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 si rifletteranno nei successivi accessi all'istanzaarguments
o ad altre istanze diOnDestinationChangedListener
. NavDeepLink
ora supporta i valori predefiniti per gli array, in modo da supportare i parametri di query ripetute 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 interamente incapsulate nella classeNavType
. OraStringType
esegue l'override di questo metodo per chiamareUri.encode
sul criterioString
specificato.
Modifiche importanti a Navigation Compose dalla versione 2.5.0
- Durante l'anteprima di un componibile con
NavHost
, ora per impostazione predefinita verrà visualizzatostartDestination
di NavGraph. NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
eNavController.clearBackStack(route)
ora supportano tutte le route con argomenti compilati parzialmente o completamente. Tieni presente che gli argomenti devono corrispondere esattamente a quelli della voce.- Se provi a creare un campo
NavDeepLink
vuoto utilizzando l'DSL KotlinnavDeepLink
, ora verrà visualizzato un avviso di lint che indica che un link diretto richiede un URI, un'azione e/o un tipo MIME 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 Frammento1.7.0-alpha01
e versioni successive possono fornire un'animazione di Indietro predittivo in-app sui dispositivi Android U.- Quando utilizzi la navigazione con frammenti, se tenti di eseguire manualmente un'
FragmentTransaction
che aggiunge un frammento allo stack posteriore diFragmentManager
, ora verrà generato unIllegalArgumentException
. Devi sempre aggiungere i frammenti tramite l'APInavigate()
. - Quando utilizzi la stringa esatta
${applicationId}
come segnaposto negli attributiapp:data
eapp:dataPattern
nell'elemento di attività di un file XML di navigazione, il segnaposto viene 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 che l'Lifecycle
NavBackStackEntry
attenderà il completamento degli effetti speciali del frammento in entrata e in uscita prima di spostare l'ultimoLifecycle.State
.DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e la creazione diNavBackStackEntries
. Ciò significa che l'Lifecycle
diNavBackStackEntry
attenderà che l'elementoLifecycle
diDialogFragment
si sposti suDESTROYED
prima di spostarsi suDESTROYED
stesso.NavHostFragment
ora ti consente di recuperareNavController
non appenaNavHostFragment
viene collegato aFragmentManager
, anziché solo dopoonCreate()
.- Il supporto della navigazione per i moduli delle funzionalità dinamiche ora dipende dalla libreria granulare di Play Feature Delivery.
- Navigazione Safe Args ora dipende dal plug-in Android Gradle versione 7.3.0. Ciò significa che ora è compatibile solo con le versioni 7.3.0+.
Modifiche importanti a NavigationUI dalla versione 2.5.0
- Quando passi l'ID di un grafico di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione di partenza di quel grafico di navigazione come destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafico come destinazione di primo livello. Il comportamento della trasmissione dell'ID di una singola destinazione rimane invariato. Questa stessa funzionalità è disponibile per il tuo codice tramite la nuova funzioneisTopLevelDestination
suAppBarConfiguration
. - Le integrazioni
setupWithNavController
inNavigationUI
per l'utilizzo della barra delle app in alto analizzeranno ora i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei relativi valori stringa, invece di restituire il numero 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
Viene rilasciato androidx.navigation:navigation-*:2.6.0-rc02
. La versione 2.6.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un problema relativo alla Navigazione in Frammenti per cui la navigazione con
popUpTo
e lo spostamento di un frammento dallo stack posteriore senza ricreare la relativa visualizzazione causava l'interruzione del funzionamento del sistema. (Ieb8d4, b/281726455)
Versione 2.6.0-rc01
10 maggio 2023
Viene rilasciato androidx.navigation:navigation-*:2.6.0-rc01
. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema in Navigazione con frammenti per cui la rimozione di un frammento tramite la navigazione con
popUpTo
nel callback del ciclo di vitaonResume()
causava unIllegalStateException
. (I21884, b/279644470)
Versione 2.6.0-beta01
19 aprile 2023
Viene rilasciato androidx.navigation:navigation-*:2.6.0-beta01
. La versione 2.6.0-beta01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora fornisce un'implementazionetoString
personalizzata. (Iff00b)
Correzioni di bug
- Quando utilizzi la navigazione con frammenti, se tenti di eseguire manualmente un'
FragmentTransaction
che aggiunge un frammento allo stack posteriore diFragmentManager
, ora verrà generato unIllegalArgumentException
. Devi sempre aggiungere i frammenti tramite l'APInavigate()
. (I6d38e) - Quando c'è un
navigate
che aggiunge una voce e unapopBackStack
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
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha09
. 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 riusciranno se nell'operazione di navigazione manca unNavArgument
con valore nullo richiesto dallaNavDestination
con cuiAction/MimeType
corrisponde. (Ibfa17, b/271777424) - Quando
NavController
imposta un grafico con la stessa route e le stesse destinazioni del grafico precedente, ora sostituisce correttamente i nodi del grafico attuali e le destinazioni dello stack precedente con nuove istanze. Questo corregge un arresto anomalo durante l'utilizzo dionLaunchSingleTop
senza salvataggio dello stato in Compose 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 recuperareNavController
non appenaNavHostFragment
viene collegato aFragmentManager
, anziché solo dopoonCreate()
. (Ic6382, b/220186282)
Correzioni di bug
- È stato corretto un valore
NullPointerException
durante la comparsa di un grafico nidificato che include un argomento non nullo. (6b3581, b/249988437) - Se riutilizzi il sistema dopo aver eseguito una 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)- Aggiunta di frammenti al file
FragmentNavigator
FragmentManager
senza utilizzare la navigazione non causerà più un arresto anomalo. (b17204, b/274167493)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal 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
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha07
. 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 la chiamata a
clearBackStack()
daNavController
non cancellava lo stato salvato nel gestore di frammenti associato allo stack posteriore cancellato. (Ic1cce, b/271190202) - È stata corretta una regressione nella versione 2.6.0-alpha06 che causava l'evidenziazione dell'errore
MenuItem
errato inBottomNavigationView
quando si utilizzava di nuovo il 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
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha06
. La versione 2.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Durante l'anteprima di un componibile con
NavHost
, ora per impostazione predefinita verrà visualizzatostartDestination
di NavGraph. (I2b89f)
Modifiche alle API
- Tutti gli sovraccarichi di
NavController
navigate
ora sono annotati con@MainThread
per garantire che vengano chiamati sul thread principale. (I2c0b0, b/263427111)
Correzioni di bug
- È stato risolto un arresto anomalo che si verificava durante il tentativo di navigare durante l'utilizzo della navigazione dinamica con frammenti. (I3ee29, b/268360479)
- È stato corretto il bug per cui il passaggio a un altro frammento tramite il pulsante Indietro del sistema non aggiorna la barra inferiore all'elemento selezionato corretto (If559f, b/269044426)
Problemi noti
- Quando utilizzi la navigazione con frammenti, il ciclo di vita di
NavBackStackEntry
non riesce a raggiungereRESUMED
quando vengono utilizzate 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 Navigazione con frammenti, dopo il ripristino dello stato
NavBackStackEntry
Lifecycle
non ottieneDESTROYED
quando il frammento èDESTROYED
. (b/270610768)
Versione 2.6.0-alpha05
8 febbraio 2023
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha05
. La versione 2.6.0-alpha05 contiene questi commit.
Nuove funzionalità
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
eNavController.clearBackStack(route)
ora supportano tutte le route con argomenti compilati parzialmente o completamente. Tieni presente che gli argomenti devono corrispondere esattamente a quelli della voce. (Iebd28, Ic678c, I3b37b, b/257514373)FragmentNavigator
ora utilizza le API di transizione durante la navigazione e la creazione diNavBackStackEntries
. 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 creazione diNavBackStackEntries
. Ciò significa che l'Lifecycle
diNavBackStackEntry
attenderà che l'elementoLifecycle
diDialogFragment
si sposti suDESTROYED
prima di spostarsi suDESTROYED
stesso. (I53ee5, b/261213893)
Modifiche alle API
NavigatorState
ora fornisce l'APIprepareForTransition
per consentire aiNavigator
di spostareNavBackStackEntries
aiLifecycle.State
intermedi. (I42c21, b/238686802)- Ora puoi accedere allo stack precedente associato a
NavGraphNavigator
oComposeNavigator
tramite una proprietàbackstack
. Inoltre,ComposeNavigator
ora mostra anche il callbackonTransitionComplete()
per contrassegnare unNavBackStackEntry
che ha eseguito un'operazione di navigazione opopBackStack
come completata. (I02062, I718db, b/257519195)
Correzioni di bug
- Ora lo stato del navigatore non sarà operativo quando si utilizzano le API
push/popWithTransition
e la voce è già in fase di gestione. (Iadbfa, b/261213893) - Quando utilizzi
launchSingleTop
con unNavGraph
nidificato, tutte le destinazioni che partono dalla destinazione originale al suostartDestination
verranno aggiunte correttamente solo all'inizio del backstack. (Id4bea, b/253256629) - Ora la navigazione sostituirà correttamente l'istanza
DialogFragment
quando si accede alla 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
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha04
. 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 interamente incapsulate nella classeNavType
. OraStringType
esegue l'override di questo metodo per chiamareUri.encode
sul criterioString
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 risolto il problema di arresto anomalo causato dalla navigazione verso l'alto dopo il deep linking a una destinazione con argomenti predefiniti null. (I51c24, b/243183636)
Aggiornamento delle dipendenze
- Il supporto della navigazione per i moduli delle funzionalità dinamiche ora dipende dalla libreria granulare di Play Feature Delivery. (Ib4ddc)
- Navigazione Safe Args ora dipende dal plug-in Android Gradle versione 7.3.0. Ciò significa che ora è compatibile solo con le versioni 7.3.0+. (I47e49)
Versione 2.6.0-alpha03
24 ottobre 2022
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha03
. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.5.3
:NavHost
non causerà più unNoSuchElementException
se non è disponibile una destinazione per la composizione diCrossfade
. Ora salterà solo la composizione. (Ieb46e, b/253299416) - Da Navigazione
2.5.3
: è stato risolto un problema per cui lo stato di Compose salvato (ad esempio l'utilizzo dirememberSaveable
) non veniva dimenticato e veniva rimosso quando una destinazione veniva estratta dallo stack posteriore. (I64949)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Frammento
1.5.4
. (Icd424)
Versione 2.6.0-alpha02
5 ottobre 2022
Viene rilasciato androidx.navigation:navigation-*:2.6.0-alpha02
. La versione 2.6.0-alpha02 contiene questi commit.
Cambiamenti del comportamento
- Quando passi l'ID di un grafico di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione di partenza di quel grafico di navigazione come destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafico come destinazione di primo livello. Il comportamento della trasmissione 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) - La voce di menu selezionata non verrà più aggiornata durante la navigazione verso una destinazione
FloatingWindow
, ad esempio in 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
setupWithNavController
inNavigationUI
per l'utilizzo della barra delle app in alto analizzeranno ora i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei relativi valori stringa, invece di restituire il numero intero della risorsa generato automaticamente. (I5f803, b/167959935) NavDeepLink
ora supporta i valori predefiniti per gli array, in modo da supportare i parametri di query ripetute 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 di attività di un file XML di navigazione, il segnaposto viene compilato automaticamente con ilpackageName
del contesto al momento dell'inflazione. (Iaabde, b/234223561) - Se provi a creare un campo
NavDeepLink
vuoto utilizzando l'DSL KotlinnavDeepLink
, ora verrà visualizzato un avviso di lint che indica che un link diretto richiede un URI, un'azione e/o un tipo MIME per essere valido. (I08d2f, b/154038883)
Modifiche alle API
- È stata aggiunta una nuova funzione di estensione
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)
Cambiamenti del comportamento
arguments
di NavBackStackEntry earguments
passati a unOnDestinationChangedListener
ora sono solo una copia degli argomenti immutabili creati quando hai raggiunto la destinazione. Ciò significa che le modifiche apportate a questi pacchetti non si rifletteranno nei successivi accessi all'istanzaarguments
o ad altre istanze diOnDestinationChangedListener
. (I676f5)
Correzioni di bug
- Da Navigazione
2.5.2
: ora la navigazione dinamica tenta correttamente di installare le destinazioni Attività da altri moduli prima di accedervi. (Ia2c16, b/240292838) - Da Navigazione
2.5.2
: ora la navigazione sostituirà correttamente l'istanza Fragment quando si naviga alla stessa destinazione e si imposta il flaglaunchSingleTop
su true. (I5a2f1, b/237374580) - In Navigazione
2.5.2
: è stato risolto il problemaIllegalStateException
causato dal passaggio a un grafico con doppio nidificato che condivide un elemento padre con una nuova destinazione di inizio attivata. (I9f7cb, b/243778589)
Versione 2.5
Versione 2.5.3
24 ottobre 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.3
. La versione 2.5.3 contiene questi commit.
Correzioni di bug
NavHost
non causerà più unNoSuchElementException
se non è disponibile una destinazione per la scrittura diCrossfade
. Ora salterà solo la composizione. (Ieb46e, b/253299416)- Risolto un problema per cui lo stato di Compose salvato (ad esempio l'utilizzo di
rememberSaveable
) non veniva dimenticato e veniva rimosso quando una destinazione veniva estratta dallo stack precedente. (I64949)
Versione 2.5.2
7 settembre 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.2
. La versione 2.5.2 contiene questi commit.
Correzioni di bug
- La navigazione dinamica ora tenta correttamente di installare le destinazioni attività da altri moduli prima di accedervi. (Ia2c16, b/240292838)
- Ora la navigazione sostituirà correttamente l'istanza Fragment quando accedi alla stessa destinazione e imposti il flag
launchSingleTop
su true. (I5a2f1, b/237374580) - È stato risolto il problema di
IllegalStateException
causato dall'accesso a un grafico con doppio nidificato che condivide un elemento padre con una nuova destinazione di inizio attivata. (I9f7cb, b/243778589)
Aggiornamento delle dipendenze
- La funzionalità
2.5.2
di navigazione ora dipende dal Frammento1.5.2
. (aosp/2178734)
Versione 2.5.1
27 luglio 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.1
. 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 libreria di navigazione ora dipende dal Ciclo di vita
2.5.1
. (Ib4451) - La libreria di navigazione ora dipende dall'Attività
1.5.1
. (I3efe8) - La libreria di navigazione ora dipende da Frammento
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 CreationExtras:
Navigation
ora è in grado di fornire unViewModelProvider.Factory
stateless tramiteCreationExtras
di Lifecycle2.5.0
.
Navigazione SafeArgs
Navigation Safe Args
ha eseguito l'upgrade della dipendenzaAndroid Gradle Plugin
in modo che si basi su7.0.4
, eliminando la compatibilità per le versioni AGP precedenti al giorno7.0
.- Aggiunto il supporto per l'utilizzo dell'attributo build.gradle dello spazio dei nomi 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 all'elementoNavController
.
Versione 2.5.0-rc02
15 giugno 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.0-rc02
. La versione 2.5.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un arresto anomalo causato dal passaggio rapido tra le destinazioni in basso durante l'utilizzo di Scrittura di navigazione
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 include una funzionetoString()
personalizzata per mostrare i valori interni dell'argomento. (I900a8)
Versione 2.5.0-rc01
11 maggio 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.0-rc01
. La versione 2.5.0-rc01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola lint per mettere in guardia contro il posizionamento di elementi
<deeplink>
all'interno di elementi<activity>
nel filenavigation.xml
.(Ic15a5, b/178403185)
Correzioni di bug
- Gli ambiti componibili in
NavHost
eDialogHost
ora vengono eliminati nell'ordine previsto, ovvero gli ambiti componibili interni vengono eliminati prima di quelli esterni componibili. (I157e6) - Navigazione SafeArgs ora utilizza
PathSensitivity.RELATIVE
inArgumentsGenerationTask
per consentire la riposizionabilità della cache. Ciò significa che ora la voce della cache 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
Viene rilasciato androidx.navigation:navigation-*:2.5.0-beta01
. La versione 2.5.0-beta01 contiene questi commit.
Correzioni di bug
DialogNavigator
ora utilizzapopWithTransition
quando esegue una chiamatadismiss()
. Questo corregge una condizione di gara quando si utilizza unViewModel
all'interno della destinazionedialog
che causava unIllegalStateException
quando si chiude la finestra di dialogo utilizzando il sistema indietro o toccando all'esterno della finestra di dialogo per uscire. (Id7376, b/226552301)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal Ciclo di vita
2.5.0-beta01
, correggendo unIllegalStateException
quando unNavHost
viene nidificato all'interno di un altroNavHost
in una scheda di navigazione inferiore non principale quando vengono utilizzati più gruppi arretrati.
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 alle API
visibleEntries
non è più sperimentale. (I4829f, b/225394514)
Correzioni di bug
- NavHost ora dipende da
visibleEntries
daNavController
per determinare quali voci scrivere. Ciò significa che, quando si utilizzano NavHost consente di animare correttamente l'elementoNavHost
interno. (I4ba2b, b/225394514) - L'elemento
visibleEntries
StateFlow
fornito daNavController
ora si basa sullo stato massimo del ciclo di vita della voce anziché sullo stato attuale del ciclo di vita. Ciò significa che anche se il ciclo di vita dell'host dinavController
scende sotto AVVIATO, l'elenco degli elementi visibili rimarrà lo stesso. (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)- Ora
NavDeepLink
può analizzare gli URI con un singolo parametro di query senza valore. (I0efe8, b/148905489) - Le stringhe vuote ora sono considerate come argomenti validi nei link diretti. (I70a0d, b/217399862)
Navigation Safe Args
non avrà più un arresto anomalo quando utilizzi gli spazi dei nomi e non è presenteAndroidManifest.xml
. (I17ccf, b/227229815)
Versione 2.5.0-alpha03
23 febbraio 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.0-alpha03
. La versione 2.5.0-alpha03 contiene questi commit.
Modifiche alle API
- Ora puoi passare da
CreationExtras
aby navGraphViewModels
per creare unViewModel
. (I29217, b/217618359)
Correzioni di bug
NavDeepLinks
ora supporta correttamente i caratteri di nuova riga codificati incorporati in route/URI dei link diretti. (I513d1, b/217815060)- Ora
CreationExtras
funzionerà correttamente se utilizzato conNavBackStackEntries
per creare ViewModels. (I69161, b/217617710) - Navigazione sicura ora supporta l'uso dello spazio dei nomi definito
nel file
build.gradle
al posto del pacchetto nel file AndroidManifest. (I659ef, b/217414933)
Versione 2.5.0-alpha02
9 febbraio 2022
Viene rilasciato androidx.navigation:navigation-*:2.5.0-alpha02
. La versione 2.5.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.4.1
:NavHostFragment
ora imposterà correttamente ilOnBackPressedDispatcher
quando si utilizza l'associazione di viste 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
Viene rilasciato androidx.navigation:navigation-*:2.5.0-alpha01
. La versione 2.5.0-alpha01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora si integra con ViewModel CreationExtras, introdotto come parte di Lifecycle2.5.0-alpha01
. (Ib9fe2, b/207012490)
Correzioni di bug
- Risolto un problema per cui l'accesso a un
ViewModel
veniva creato tramiteby navGraphViewModels()
daonCreate()
di un frammento non riuscirà con unIllegalStateException
. (I8a14d) NavDeepLink
non decodificano più inutilmente gli argomenti due volte, e gli argomenti appropriati vengono trasferiti alla destinazione finale. (I31b0a, b/210711399)
Arg sicuri
- Safe Args ora dipende dal plug-in Android Gradle versione 7.0.4. Ciò significa che Navigazione sicura non sarà più compatibile con con le versioni di Android Studio precedenti alla 7.0, ma ora è compatibile con 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
Viene rilasciato androidx.navigation:navigation-*:2.4.2
. La versione 2.4.2 contiene questi commit.
Correzioni di bug
- Backporting da Navigazione
2.5.0-alpha03
:NavDeepLinks
ora supporta correttamente i caratteri di nuova riga codificati incorporati in URI di route/link diretto. (I513d1, b/217815060) - Backported da Navigazione
2.5.0-alpha03
: Navigazione SafeArgs ora supporta l'utilizzo dello spazio dei nomi definito nel filebuild.gradle
al posto del pacchetto nel file AndroidManifest. (I659ef, b/217414933) - Backup eseguito da Navigazione
2.5.0-alpha04
:Navigation Safe Args
non avrà più un arresto anomalo quando viene utilizzato e non è presenteAndroidManifest.xml
. (I17ccf, b/227229815) - Backported da Navigazione
2.5.0-alpha04
: la stringa vuota ora è considerata come argomento valido nel deep . (I70a0d, b/217399862)
Versione 2.4.1
Versione 2.4.1
9 febbraio 2022
Viene rilasciato androidx.navigation:navigation-*:2.4.1
. La versione 2.4.1 contiene questi commit.
Correzioni di bug
NavHostFragment
ora imposterà correttamente ilOnBackPressedDispatcher
quando si utilizza l'associazione della vista con grafici nidificati. (Ifbb51, b/214577959)- Quando i link diretti attraverso più
NavGraph
nidificati, il back stack ora include correttamente le destinazioni di partenza intermedie. (I504c0, b/214383060) - Con backporting da Navigazione
2.5.0-alpha01
: è stato risolto un problema per cui si creava un accesso a un ViewModel tramiteby navGraphViewModels()
daonCreate()
di un frammento non riuscirà con unIllegalStateException
. (I8a14d) - Backported da Navigazione
2.5.0-alpha01
:NavDeepLink
non decodificano più inutilmente gli argomenti due volte, il che significa che gli argomenti decodificati correttamente vengono passati alla destinazione finale. (I31b0a, b/210711399) - Backporting da Navigazione
2.5.0-alpha01
: Safe Args ora dipende dalla versione 7.0.4 del plug-in Android 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
Viene rilasciato androidx.navigation:navigation-*:2.4.0
. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
- Tutti gli artefatti di navigazione sono stati riscritti in Kotlin. In questo modo è stato migliorato il valore null delle classi che utilizzano valori generici (come 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 sottoclasse) e un riquadro di dettagli, che utilizzaNavHostFragment
come implementazione, come mostrato nell'implementazione di esempio. - Il metodo
currentBackStackEntryAsFlow()
suNavController
fornisce unFlow
che emette ogni volta che il valoreNavBackStackEntry
corrente cambia. Questo flusso può essere utilizzato in alternativa alla gestione manuale di unOnDestinationChangedListener
. - NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntry
visibili comeStateFlow
tramite la proprietà sperimentalevisibleEntries
. - Ora è possibile estendere il corso
NavType
per creare NavType personalizzati. I tipi personalizzati sono supportati solo durante la creazione grafico di navigazione in modo programmatico, ad esempio tramite Navigatore Kotlin DSL. 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 si trova nella gerarchia di un'altra.val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
I metodi
NavigationUI
che hanno utilizzato unBottomNavigationView
sono stati aggiornati in modo da includere la superclasse introdotta in Material1.4.0
,NavigationBarView
. In questo modo è possibile utilizzare questi metodi conNavigationRailView
.Durante il gonfiaggio di un elemento
<action>
tramite XML, gli attributi dell'animazione possono utilizzare attributi estratti dal tuo tema con la sintassiapp:enterAnim="?attr/transitionEnter"
.Ora Safe Args genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (N. 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 Kotlin DSL
Le versioni precedenti di Navigazione facevano affidamento sul fatto che ogni destinazione avesse un ID intero costante che la identificava in modo univoco dalle destinazioni gemelle e ti consentiva di navigate()
per quella destinazione direttamente o tramite un'azione. Sebbene questo continui a essere valido e utile, in particolare nei casi in cui definisci il grafico di navigazione in XML e puoi utilizzare le costanti R.id
generate automaticamente o Safe Args (che utilizza queste costanti per generare il codice in fase di creazione), questo sistema di numeri interi univoci non ha acquisito il significato semantico e l'espressività necessari per supportare grafici completamente dinamici creati in modo programmatico in fase di runtime tramite il Navigator Kotlin DSL.
Questa versione introduce una nuova opzione per identificare in modo univoco una destinazione in un grafico di navigazione in base al suo percorso. Un route è un String
che definisce il percorso univoco di una destinazione. Tutti i metodi DSL Kotlin che utilizzavano un ID destinazione sono ora deprecati e sostituiti con un'API equivalente che utilizza una route.
Ogni percorso deve essere considerato la parte del "percorso" di un Uri
che definisce quella 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 di NavController
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 relative all'API:
- La proprietà Kotlin
popUpTo
sulla rete DSL Kotlin è stata ritirata e sostituitapopUpToId
. - 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 è possibile passare direttamente a qualsiasi destinazione in qualsiasi grafico nidificato, garantendo che questi percorsi siano utilizzabili in progetti multimodulo senza aggiungere esplicitamente un link diretto visibile esternamente a ogni destinazione.
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 dissolvenza incrociata tra destinazioni. Puoi utilizzare l'animazione di navigazione accompagnata per controllare le transizioni di entrata e uscita utilizzando le API Compose sperimentali.
- Determinazione dell'ambito di un
Lifecycle
per ogni destinazione componibile. Ogni destinazione raggiunge lo statoRESUMED
solo al termine delle transizioni in entrata e passa immediatamente aSTARTED
all'inizio di qualsiasi transizione in uscita. In questo modo, puoi evitare tutti i problemi relativi aIllegalStateException
e multi-touch attivando una chiamatanavigate
solo quandoLifecycle
èRESUMED
. - Ambito di
ViewModel
(tramite l'APIviewModel()
di Lifecycle ViewModel Compose2.4.0
ohiltViewModel()
di Hilt Navigation Compose1.0.0
a livello di destinazione, fornendo un ambito che sopravvive alle modifiche di configurazione e allo stato precedente (quando il contenuto componibile viene eliminato in altro modo) e un segnale nelonCleared()
di ViewModel che indica lo smaltimento e la pulizia permanente dello stato associato aNavBackStackEntry
. - Determinazione dell'ambito dello stato
rememberSaveable
a livello di destinazione, per garantire che tutto lo stato componibile venga salvato e ripristinato automaticamente quando torni a una destinazione. - Supporto completo per il salvataggio e il ripristino dello stato del
NavController
e dello stato della sua destinazione dopo la morte e la ricreazione del processo. - Integrazione automatica con il pulsante Indietro del sistema.
Supporto per la trasmissione di argomenti, l'aggiunta di link diretti alle destinazioni e la restituzione di risultati a destinazioni precedenti.
Componi helper specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire lo stato di sollevamento e il collegamento diNavController
a elementi componibili 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 in Scrivi.
Più stack posteriori
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 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 modifiche al codice. Quando utilizzi la navigazione con i frammenti, questo è il metodo consigliato per l'integrazione con più gruppi arretrati.
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 tutte le destinazioni inserite 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.findStartDestination().id) { saveState = true } }
Nella creazione manuale di un oggetto
NavOptions
tramiteNavOptions.Builder
, puoi utilizzaresetRestoreState()
e il nuovo sovraccarico insetPopUpTo()
che richiede 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 ulteriore parametrosaveState
.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
con ambito di 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.
Cambiamenti del comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
perPendingIntent
restituito dacreatePendingIntent()
, garantendo che questa API funziona come previsto per il targeting di Android 12.- La navigazione ora dipende
Ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione al 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
. - Gli argomenti analizzati da
NavDeepLink
ora considerano il simbolo di cancelletto allo stesso modo dei punti interrogativi come separatore tra i segmenti del percorso, impedendo a un argomento di estendersi attraverso il simbolo di cancelletto. - Durante la generazione di azioni, il codice Kotlin generato da Safe Args ora inserisce argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri.
- Durante la generazione di argomenti, ora Safe Args inserisce i parametri senza valori predefiniti prima di quelli con valori predefiniti.
- Safe-Args ora dipende dal plug-in Android Gradle 4.2.0. Questo significa che non dovresti più ricevere l'avviso sull'utilizzo di
applicationIdTextResource
.
Problemi noti
- Risolto in Navigazione
2.5.0-alpha01
: accesso aViewModel
creato tramiteby navGraphViewModels()
daonCreate()
di un frammento avrà esito negativo con unIllegalStateException
. (b/213504272) - Risolto in Navigazione
2.5.0-alpha01
: Safe Args 2.4.0 non è compatibile con il plug-in Android Gradle 7.1.0 e versioni successive. (b/213086135) - I link diretti con più grafici di navigazione nidificati non creano correttamente backstack. (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.
Cambiamenti del 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 correttamente ripristinata nella parte superiore dello schermo dopo le modifiche alla configurazione o l'elaborazione della fine. (I4c0dc, b/207386169)
- È stato risolto un problema per cui il tentativo di recuperare un
ViewModel
dalNavBackStackEntry
di una finestra di dialogo non riusciva se la finestra di dialogo veniva chiusa. (I6b96d, b/206465487) - È stato risolto un problema relativo all'utilizzo di
activity
destinazioni con ilNavHost
di Compose Navigazione che comportava ricomposizioni infinite. (I8f64c) - È stato risolto il problema di una fuga di dati in Navigation Compose che causava il mantenimento di un riferimento della vecchia attività dopo una modifica alla configurazione o la morte di un processo. (I4efcb, b/204905432)
Correzioni di bug relativi agli argomenti sicuri
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 argomenti sicuri che non consente agli array booleani di avere un valore
null
. (I8c396, b/174787525)
Versione 2.4.0-beta02
3 novembre 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-beta02
. La versione 2.4.0-beta02 contiene questi commit.
Modifiche alle API
- La gestione di messaggi impliciti e espliciti
I link diretti ora aggiungono automaticamente il flag
saveState
quando si passa a un altro grafico, assicurandosi che il codice comeNavigationUI.setupWithNavController
e usando più back stack funziona come previsto. (Ic8807)
Cambiamenti del comportamento
- I pattern dei link diretti vengono ora compilati in modo lento in NavDeepLink anziché durante l'inflazione. Questo dovrebbe migliorare i tempi di inflazione dei grafici di navigazione che includono link diretti. (b8d257, b/184149935)
Correzioni di bug
- È stato risolto un problema per cui NavBackStackEntries veniva spostato verso il basso
Lifecycle.State.CREATED
dopo il trasferimento aLifecycle.State.STARTED
quandoNavHost
viene aggiunto direttamente alsetContent()
dell'attività. (Ia5ac1, b/203536683) - Corretto una condizione di gara in cui
aprire una destinazione
DialogFragment
da precedente prima che la finestra di dialogo venisse effettivamente mostrata non ignora effettivamente la finestra di dialogo, generando un arresto anomalo quando la finestra di dialogo errata è stata ignorato dall'utente. (I687e5) - È stato risolto un problema per cui
L'API
onNavDestinationSelected
suNavigationUI
lo userebbe restituiscitrue
anche se non hai in realtànavigate()
il grafico di navigazione. Ora utilizza la stessa logica usato internamente dasetupWithNavController
solo seleziona iMenuItem
associati allo stato attuale utilizzando il valorehierarchy
della destinazione. (I2b053).
Versione 2.4.0-beta01
27 ottobre 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-beta01
. La versione 2.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare
by navGraphViewModel
con un percorso in alternativa all'utilizzo di un ID in modo da migliorare il supporto dell'utilizzo dell'DSL Navigation Kotlin con Fragments. (I901e3, b/201446416)
Modifiche alle API
- L'API
visibleEntries
è ora sperimentale. (I93f6f)
Correzioni di bug
- I ViewModel non verranno più eliminati quando le transizioni vengono interrotta passando da una schermata all'altra (Id52d8, b/200817333)
- Gli argomenti
NavDeepLink
nulli non sono più richiedono un valore predefinito quando si aggiungono link direttiNavDestination
(I5aad4, b/201320030) - NavBackStackEntries ora con cicli di vita diversi non sono considerato uguale. Ciò significa che NavHost ricompone correttamente tutti le destinazioni quando si naviga con singleTop e quando si riselezionano voci di menu in basso. (I1b351, b/196997433)
- È stato risolto un problema relativo a
AbstractListDetailFragment
che ha generato gli attributilayout_width
elayout_weight
nel riquadro elenco restituito daonCreateListPaneView()
a in modo errato o ignorato. (F5fbf3) - Lo stato visivo delle destinazioni delle finestre di dialogo ora
rimane correttamente sincronizzato con
DialogFragmentNavigator
stato. Ciò significa che la chiamata manuale L'APIdismiss()
perDialogFragment
ora cancella correttamente tutti destinazioni delle finestre di dialogo sopra la finestra di dialogo ora ignorata. Questo non influisce sui casi in cui utilizzipopUpTo
opopBackStack()
per chiudere la finestra di dialogo. (I77ba2) AbstractAppBarOnDestinationChangedListener
adesso presenta messaggi di errore più chiari peronDestinationChanged()
. (Ie742d)
Versione 2.4.0-alpha10
29 settembre 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha10
. La versione 2.4.0-alpha10 contiene questi commit.
Nuove funzionalità
- NavController ora offre la possibilità di recuperare un elenco di tutte le
NavBackStackEntry
istanze tramitevisibleEntries
StateFlow (Ia964e) rememberNavController()
ora accetta una domanda facoltativa insieme diNavigator
istanze che verranno aggiunte ha restituitoNavController
per un supporto migliore facoltativo Navigatori come quelli di Materiale di navigazione accompagnatore. (I4619e)
Correzioni di bug
- La navigazione dinamica non avrà più arresti anomali quando l'attività viene viene ricreato. (Ifa6a3, b/197942869)
- È stato risolto un problema relativo al pulsante Indietro del sistema che si verifica solo dopo essere tornati in 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 usare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
. (I80a0f) - Ora puoi inserire un elenco di argomenti e/o link diretti al tuo creatore dei grafici di navigazione nidificati, che verranno aggiunti automaticamente al grafico risultante. (I8a470, b/182545357)
Modifiche alle API
- La funzione DSL di Kotlin
navArgument
ora fa parte dinavigation-common
anzichénavigation-compose
. Richiederà aggiornare le importazioni per continuare a utilizzare questa funzione. (I1d095)
Cambiamenti del comportamento
- Durante la generazione di argomenti, ora Safe Args inserisce i parametri senza valori predefiniti prima di quelli con valori predefiniti. (I89709, b/198493585)
Correzioni di bug
- Quando utilizzi Scrittura navigazione, NavGraphs sarà
DESTROYED
una volta che tutti i suoi figli sonoDESTROYED
. (I86552, b/198741720) - Gli argomenti
NavDeepLink
nulli non sono più richiedono un valore predefinito. (Ia14ef, b/198689811) - Chiamata a
setGraph()
con un nuovo grafico ora verranno cancellati anche eventuali stack salvati al suo precedente comportamento di aprire il back stack. (I97f96) - È stato risolto un problema per cui
OnDestinationChangedListener
di istanze e ilcurrentBackStackEntryFlow
non ha ricevuto una notifica quando utilizzandolaunchSingleTop
. (Aaebc)
Aggiornamenti delle dipendenze
- La Scrittura in Navigazione ora dipende Scrittura attività 1.3.1. (I05829)
- La Scrittura in Navigazione ora dipende
Compositore ViewModel del ciclo di vita
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 il corso
NavType
per creare NavType personalizzati. I tipi personalizzati sono supportati solo durante la creazione grafico di navigazione in modo programmatico, ad esempio tramite Navigatore Kotlin DSL. (I78440, b/196871885)
Cambiamenti del comportamento
- Durante la generazione di azioni, il codice Kotlin generato da Safe Args ora inserisce argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri. (Idb697, b/188855904)
- I link diretti ora verificano che tutti gli argomenti richiesti (senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Correzioni di bug
- In uso all'interno di
getBackStackEntry
epreviousBackStackEntry
composable(), in combinazione conremember()
, non causerà più un un'eccezione perché nessuna destinazione è presente nello stack precedente. (I75138, b/194313238) - Navigazione Compose ora si ricompone correttamente quando si torna alla schermata precedente
gli argomenti dello stack e utilizzando
launchSingleTop=true
. (Iebd69, b/186392337) - Non ci sarà più un
ArrayIndexOutOfBoundsException
quando chiamisetGraph
con un grafico con 13 o 29 destinazioni. (I1a9f1, b/195171984) - Il generatore Java di SafeArgs non dovrebbe più causare lint durante la generazione delle classi Args. (I1a666, b/185843837)
Contributo esterno
- Grazie ospixd per assicurarti che i link diretti verifichi che tutti gli argomenti obbligatori (quelli senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Versione 2.4.0-alpha07
18 agosto 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha07
. La versione 2.4.0-alpha07 contiene questi commit.
Correzioni di bug
- Navigazione Compose ora salva correttamente lo stato dopo modifiche alla configurazione e quando si cambiano i grafici utilizzando funzionalità back stack. (If5a3d, b/195141957)
- Riselezionare la stessa scheda quando si utilizza la modalità di scrittura della navigazione più faccende posteriori non mostreranno più lo schermo vuoto. (I860dc, b/194925622)
NavHost
ora osserva le variazioni inLifecycle.State
diNavBackStackEntry
che ora significa utilizzareNavHost
in un frammento essere ricomposti correttamente in caso di cambiamenti del ciclo di vita anziché di una schermata vuota. (I4eb85, b/195864489)- È stato risolto un problema a causa del quale la chiusura di un
DialogFragment
non aggiorna correttamente il statoNavController
dopo aver ricreato l'attività (ovvero dopo una modifica alla configurazione). (Icd72b) - È stato risolto un problema per cui era necessario aprire un la destinazione della finestra di dialogo non aggiorna la finestra di dialogo della gestione del pulsante Indietro del sistema, causando una potenziale il NavController per intercettare il pulsante Indietro anche se non ha uno stack posteriore da mostrare. (If3b34).
- Safe-args ora genera automaticamente un
toSavedStateHandle
per gli argomenti che possono essere utilizzati 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 alle API
- I metodi
requireSlidingPaneLayout()
erequireDetailPaneNavHostFragment()
suAbstractListDetailFragment
sono stati rinominati rispettivamente ingetSlidingPaneLayout()
egetDetailPaneNavHostFragment()
. (I34a08)
Cambiamenti del comportamento
- Quando navighi con animazioni (come
Crossfade
), ora ilLifecycle
della nuova destinazione raggiungerà ilRESUMED
solo al completamento dell'animazione. (If0543, b/172112072, b/194301889) - Ora la funzionalità
NavHost
di Navigation Compose grafico come parte della prima composizione. (Ieb7be)
Correzioni di bug
- Quando viene visualizzata l'ultima destinazione di un grafico di navigazione, non viene più visualizzato un
ClassCastException
. (If0543, b/172112072, b/194301889) - È stato corretto un
NullPointerException
che si verificava quando si aggiungeva un link diretto senzaUri
e si naviga tramite un percorso o un link diretto. (938a0c, b/193805425) - È stato risolto un problema in Compose Navigazione in cui
un
NavBackStackEntry
con link diretto non raggiungerà StatoRESUMED
. (I192c5) - È stato risolto un problema per cui l'apertura della destinazione di una finestra di dialogo non aggiornava la gestione dei pulsanti Indietro del sistema del NavController, causando potenzialmente l'intercettazione del pulsante Indietro anche se non presentava uno stack arretrato. (aosp/1782668)
Versione 2.4.0-alpha05
21 luglio 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha05
. La versione 2.4.0-alpha05 contiene questi commit.
Cambiamenti del comportamento
- La funzionalità
NavHost
di Navigation Compose ora utilizza sempre la dissolvenza incrociata durante la navigazione attraverso le destinazioni. (I07049, b/172112072) - Ora puoi apportare modifiche al grafico di un NavHost. Grafici
con lo stesso valore di startDestination e destinazioni nel grafico sarà
considerata uguale e non cancellerà il back stack
NavController
. (I0b8db, b/175392262)
Correzioni di bug
- Correzione di un
NoSuchElementException
quando chiamatapopBackStack()
da unLifecycleObserver
collegato aNavBackStackEntry
a causa di di nuovo lo stato del NavController. (I64621) AbstractListDetailFragment
ora consente Eliminazione completa diSlidingPaneLayout
da l'APK quandoAbstractListDetailFragment
non viene usato. (I611ad)NavGraph
eNavDestination
ora eseguono l'override del metodo equals, quindi due oggetti con gli stessi valori saranno considerati uguali. (I166eb, b/175392262)
Versione 2.4.0-alpha04
1 luglio 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha04
. La versione 2.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'artefatto
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza unSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro di dettagli, che utilizzaNavHostFragment
come implementazione, come mostrato nell'implementazione di esempio. (Iac4be, b/191276636) - L'
NavHost
dell'elementonavigation-compose
ora supportadialog
destinazioni oltre acomposable
destinazioni. Queste destinazioni delle finestre di dialogo verranno mostrate all'interno di un elemento componibileDialog
, mobile sopra la destinazionecomposable
corrente. (I011d0)
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Modifiche alle API
- La funzione
add
inNavigatorState
è stata rinominata inpush
. Tutte le chiamate attuali aadd()
dovranno essere modificate in push(). (Ie89fc, b/172112072) - Le istanze
Navigator
personalizzate ora possono utilizzare le APIpushWithTransaction
epopWithTransition
suNavigatorState
per eseguire il push o pop di una destinazione in modo asincrono. Tieni presente che queste API non sono ancora utilizzate da nessuno dei navigatori inclusi. (Ic4d7c, b/172112072)
Cambiamenti del comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
perPendingIntent
restituito dacreatePendingIntent()
, garantendo che questa API funziona come previsto per il targeting di Android 12. (If8c52).
Correzioni di bug
- È stato risolto un problema relativo a
<include-dynamic>
in cui argomenti passati al grafico non verranno passati correttamente al grafico incluso dinamicamente. (I3e115). - È stato corretto un
NullPointerException
durante la navigazione verso una destinazione utilizzando un argomentostring[]
con un valore predefinito di@null
. (I1fbe8) - Aggiungi regole ProGuard per
@Navigator.Name
, risolvendo i problemi se si utilizza la modalità completa R8 3.1. (I2add9, b/191654433) - Ora SafeArgs non comporterà più errori durante la creazione dell'app con
Kotlin
versioni precedenti al giorno1.5.0
. (Icd1ff, b/190739257)
Versione 2.4.0-alpha03
16 giugno 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha03
. 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
dovesetupActionBarWithNavController()
non rimuovere correttamente l'icona Su quando ti trovi su di primo livello. (I5d443, b/189868637) - È stato corretto un
IllegalStateException
quando chiamata al numeropopBackStack()
dopo essere stato visualizzato in precedenza il grafico principale di NavController. (I2a330, b/190265699) - Ora correttamente le regole ProGuard per
by navArgs()
si applicano quando si utilizzanavigation-common
o qualsiasi elemento che dipendono da questo. (I68800, b/190082521) - Un
OnDestinationChangedListener
che ti chiamanavigate()
quando viene richiamato per la prima volta correttamente ricevere un secondo callback con la destinazione raggiunto. (Ie5f9e, b/190228815) - Safe Args non si arresta più in modo anomalo quando viene utilizzato con la funzionalità dinamica e AGP 7.0+. (I69518, b/189966576)
Problema noto
- Safe Args avrà esito negativo 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. Per risolvere il problema, è possibile eseguire l'aggiornamento per utilizzare Gradle 7.0. (b/190739257)
Versione 2.4.0-alpha02
2 giugno 2021
Viene rilasciato androidx.navigation:navigation-*:2.4.0-alpha02
. La versione 2.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- Le route sono ora supportate per le destinazioni Attività, Frammento e Finestra di dialogo, nonché in tutto il Dynamic Browsing Kotlin DSL. (Ib5544, Ia617b, I22f96, b/188914648, b/188901565)
NavigationUI
ha aggiunto temporaneamente API sperimentali per consentire la disattivazione del salvataggio dello stato. Anche se salvare sempre lo stato è il comportamento corretto, esistono comunque utilizzi di librerie deprecate (ovvero frammenti conservati) che non possono essere supportati durante il salvataggio dello stato, quindi le app hanno la possibilità di effettuare lentamente la conversione da qualsiasi API non supportata. (Idf93c)La navigazione ora fornisce API
findDestination()
egetHierarchy()
che possono essere utilizzate per implementare l'UI di navigazione personalizzata.findDestination()
è una funzione di estensione diNavGraph
in grado 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 di navigazione dell'interfaccia utente che utilizzavano un
BottomNavigationView
sono stati aggiornati in modo da introdurre la superclasse in Material1.4.0
,NavigationBarView
. In questo modo è possibile utilizzare questi metodi conNavigationRailView
. (Ib0b36, b/182938895)Quando si gonfia un elemento
<action>
tramite XML, gli attributi dell'animazione possono utilizza gli attributi estratti dal tuo tema utilizzandoapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654)
Modifiche alle API
- I builder DSL Kotlin che utilizzano un ID sono stati deprecati e deve essere sostituito con builder che utilizzano route (I85b42, b/188816479) (I9f58f, b/188816479)
Correzioni di bug
DialogFragmentNavigator
ora utilizza APINavigatorState.pop()
per informareNavController
Quando una finestra di dialogo viene chiusa premendo nuovamente il sistema. pulsante o fare clic all'esterno, accertandoti che lo statoNavController
è sempre sincronizzato con Stato del navigatore. (I2ead9)La navigazione non fornisce più un valore
ConcurrentModificationException
quando utilizzando la manipolazione dell'elenco diOnDestinationChangedListeners
con un callbackonDestinationChanged
. (Ib1707, b/188860458)Safe Args non si arresta più in modo anomalo durante il tentativo di generazione proprietà della direzione di ricerca in Kotlin. (Id2416, b/188564435)
Il metodo setId su NavDestination è ora annotato correttamente con
@IdRes
, quindi accetta solo ID risorsa. (I69b80)Il parametro int di
findNode
ora èresId
anzichéresid
. (I7711d)
Aggiornamento delle dipendenze
- Safe-Args ora dipende dal plug-in Android Gradle 4.2.0. Questo significa che non dovresti più ricevere l'avviso sull'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()
suNavController
fornisce unFlow
che emette ogni volta che il valoreNavBackStackEntry
corrente cambia. Questo flusso può essere utilizzato in alternativa alla gestione manuale di unOnDestinationChangedListener
. (I19c4a, #89, b/163947280)
Più stack posteriori
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>
nel file XML del grafico di navigazione sono state ampliate per supportare il salvataggio e il ripristino dello stack precedente. (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 popolate, consentendo il supporto di più stack arretrati senza modifiche al codice. Quando utilizzi la navigazione con i frammenti, questo è il metodo consigliato per l'integrazione con più gruppi arretrati. (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 tutte le destinazioni inserite 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 insetPopUpTo()
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
con ambito di 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.
I valori ComposeNavigator
utilizzati per composable
destinazioni in Compose Navigator e FragmentNavigator
e DynamicFragmentNavigator
utilizzati per <fragment>
destinazioni in Navigazione con Frammenti sono stati entrambi aggiornati per usare le nuove API Navigator e supportare il salvataggio e il ripristino dello stato.
Percorsi di navigazione
Un route è un String
che identifica in modo univoco una destinazione. Sebbene in precedenza fosse utilizzato solo in Navigazione in Scrittura, questo concetto ora si è sviluppato fino a diventare parte delle API di navigazione principali. 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 relative all'API:
- La proprietà kotlin
popUpTo
sulla rete DSL Kotlin è stata ritirata e sostituitapopUpToId
. (I59c73, b/172823546) - L'API
getStartDestination()
è stata deprecata a favore digetStartDestinationId()
. (I0887f, b/172823546)
Per gli sviluppatori che eseguono l'upgrade dalle versioni precedenti di Navigation Compose a Navigation Compose 2.4.0-alpha01
, le seguenti importazioni sui metodi di estensione non sono più necessarie e devono essere rimosse:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
L'argomento KEY_ROUTE
è stato sostituito con la proprietà route
in NavDestination
, consentendoti di chiamare direttamente navBackStackEntry.destination.route
.
Modifiche alle API
- Tutti gli artefatti di navigazione sono stati riscritti in Kotlin. In questo modo è stato migliorato il valore null delle classi che utilizzano valori generici (come 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 all'output back stack. (I3ee0d, b/147913689)- Aggiungi funzioni di fabbrica per
DynamicNavHostFragment
(Icd515, b/175222619) - L'ID univoco di un
NavBackStackEntry
è ora esposto come parte della sua API pubblica. (Ie033a). - I campi
name
eargument
e le funzioni di destrutturazione diNamedNavArgument
sono ora pubblici. (N. 174, b/181320559) - Introdotta una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisce ilNavBackStackEntry
ai locali composizioni pertinenti. (N. 175, b/187229439)
Arg sicuri
Ora Safe Args genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (N. 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) }
Gli argomenti sicuri sono stati aggiornati in modo che dipendono da KotlinPoet
1.8.0
. (N. 172, b/183990444)
Cambiamenti del comportamento
- La navigazione ora dipende
Ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione al thread principale introdotta nel ciclo di vita2.3.0
. (b/171125856) - L'analisi degli argomenti enum dei link diretti ora non fa distinzione tra maiuscole e minuscole, consentendo a un link diretto come
http://www.example.com/red
di corrispondere a un link direttowww.example.com/{color}
anche se l'enumerazione ha il valore diRED
. (N. 152, b/135857840)
Compatibilità con Compose
androidx.navigation:navigation-compose:2.4.0-alpha01
è compatibile solo con Compose versione1.0.0-beta07
e successive.
Correzioni di bug
- È stato risolto il problema per cui i segnaposto degli argomenti finali avrebbero la precedenza sui link diretti con un suffisso esatto corrispondente. (N. 153, b/184072811)
NavHostFragment
ora supporta le Navigatori che usano lo stesso@Navigator.Name("dialog")
comeDialogFragmentNavigator
predefinito. (Ib1c2c, b/175979140)- È stato migliorato il comportamento di
NavigatorProvider#addNavigator
per garantire che la chiamata ripetuta con la stessa istanza non causi problemi. (N. 176, b/187443146)
Contributi esterni
- Grazie simonschiller per il supporto di Safe Args che genera un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (N. 122, b/136967621) - Grazie Bradleycorn per aver reso l'analisi degli argomenti enum dei link diretti senza distinzione tra maiuscole e minuscole. (N. 152, b/135857840)
- Grazie osipxd per aver risolto un problema per cui i segnaposto degli argomenti finali avrebbero la precedenza sui link diretti con un suffisso esatto corrispondente. (N. 153, b/184072811)
- Grazie tatocaster per aver aggiornato Safe Args in modo che dipenda da KotlinPoet
1.8.0
. (N. 172, b/183990444) - Grazie jossiwolf per aver reso pubblici i campi
name
eargument
e le funzioni distruttive diNamedNavArgument
. (N. 174, b/181320559) - Grazie jossiwolf per aver introdotto una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che offreNavBackStackEntry
alla composizione locale pertinente. (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. (N. 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 alle API
NavHost
ora accetta unModifier
, che viene trasmesso a il container componibile che aggrega i componenti componibili di destinazione. (I85aca, b/175125483)
Correzioni di bug
NavHost
ora funziona anche se non viene trovato unOnBackPressedDispatcherOwner
, come quando visualizzi l'anteprima diNavHost
. (I7d8b4)- Scrittura in Navigazione ora dipende da Navigazione
2.3.5
e risolve un problema quando si utilizzaBackHandler
all'interno di una destinazioneNavHost
. (I7e63b, b/182284739)
Versione 1.0.0-alpha09
10 marzo 2021
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha09
. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner.current
ora restituisce unViewModelStoreOwner
con valori nullo per una migliore determinazione se unViewModelStoreOwner
è disponibile nell'attuale composizione. API che richiedonoViewModelStoreOwner
, come comeviewModel()
eNavHost
, viene comunque generata un'eccezione se non è impostatoViewModelStoreOwner
. (Idf39a)
Correzioni di bug
- Scrittura in Navigazione ora dipende da Navigazione 2.3.4 che include la correzione per tentare di impostare lo stesso 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 compila ilLocalSavedStateRegistryOwner
ComposeLocal con ilNavBackStackEntry
di quella 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
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha07
. La versione 1.0.0-alpha07 contiene questi commit.
Aggiornamenti delle dipendenze
- Navigazione Compose ora dipende da Lifecycle ViewModel Compose 1.0.0-alpha01 per fornire il supporto
viewModel()
per le destinazionicomposable
. (I7a374). NavHost
ora utilizza il nuovoLocalOnBackPressedDispatcherOwner
da Activity-Compose 1.3.0-alpha01 per ottenereOnBackPressedDispatcher
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 alle API
- È stato aggiunto un metodo di estensione
getBackStackEntry(route: String)
suNavController
che restituisce ilNavBackStackEntry
associato. (If8931)
Versione 1.0.0-alpha05
13 gennaio 2021
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha05
. La versione 1.0.0-alpha05 contiene questi commit.
Aggiornamento eseguito in modo da dipendere da Compose 1.0.0-alpha10.
Versione 1.0.0-alpha04
16 dicembre 2020
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha04
. La versione 1.0.0-alpha04 contiene questi commit.
- Aggiornamento per compatibilità con Compose
1.0.0-alpha09
.
Versione 1.0.0-alpha03
2 dicembre 2020
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha03
. 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'elaborazione della morte e della nuova creazione. (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
Viene rilasciato androidx.navigation:navigation-compose:1.0.0-alpha02
. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- La scrittura della navigazione ora supporta NavOptions per l'utilizzo di popUpTo e LaunchSingleTop Operations (If96c3, b/171468994)
- È stata aggiunta una funzione di navigazione che utilizza un percorso anziché una ID che ti consente di costruire grafici nidificati nella Compose Navigazione DSL (I1661d)
- Il campo startDestination ora precede il percorso nell'elenco di una parametri per un NavHost (Ie620e)
- Ora puoi creare un grafico utilizzando il percorso come punto di partenza. destinazione esterna a un componibile NavHost. (Iceb75)
Versione 1.0.0-alpha01
28 ottobre 2020
Viene rilasciato android.navigation:navigation-compose:1.0.0-alpha01
. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
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 iniziale fornisce:
- Un componibile
NavHost
che ti consente di creare il tuo grafico di navigazione tramite una connessione 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 la trasmissione di argomenti, l'aggiunta di link diretti alle destinazioni e la restituzione di risultati a destinazioni precedenti.
- Componi helper specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire lo stato di sollevamento e il collegamento diNavController
a elementi componibili esterni aNavHost
(ad esempio una barra di navigazione in basso).
Per ulteriori informazioni, consulta la guida alla navigazione in Scrivi.
Versione 2.3.5
Versione 2.3.5
7 aprile 2021
Viene rilasciato androidx.navigation:navigation-*:2.3.5
. La versione 2.3.5 contiene questi commit.
Nuove funzionalità
- Ora, durante la navigazione con
NavDeepLinkRequest
oUri
, puoi: accede aUri
, azione e tipo MIME nella destinazione risultante ottenere l'intento dagli argomenti tramiteKEY_DEEP_LINK_INTENT
, rispecchiando la funzionalità già disponibile per i link diretti esterni. (I975c3, b/181521877)
Correzioni di bug
OnBackPressedCallbacks
è stato aggiunto a un supervisore con ilNavBackStackEntry
come LifecycleOwner ora viene intercettato correttamente dopo che il ciclo di vita dell'attività èSTOPPED
, alloraSTARTED
(Iff94f, b/182284739)- L'analisi del dominio dei link diretti ora non fa distinzione tra maiuscole e minuscole, garantendo che
www.example.com
corrisponda awww.example.com
ewww.Example.com
. Tieni presente che i nomi dei parametri di query sono comunque sensibili alle maiuscole. (N. 144, b/153829033) - È stato corretto un
NullPointerException
che poteva verificarsi quando una destinazione aveva più argomenti predefiniti senza valori null e si raggiungeva quella destinazione, eseguendo l'override solo di 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 del dominio dei link diretti. (N. 144, b/153829033)
Versione 2.3.4
Versione 2.3.4
10 marzo 2021
Viene rilasciato androidx.navigation:navigation-*:2.3.4
. 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 del link diretto. Supporta sia il valore intero non elaborato sia i valori esadecimali preceduti da0x
. (N. 127, b/179166693) android:defaultValue
per un argomento conapp:argType="float"
ora supporta valori interi predefiniti, consentendoti di utilizzareandroid:defaultValue="0"
invece di richiedere l'uso di0.0
. (N. 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)
- Chiamata a
setViewModelStore
osetLifecycleOwner
con lo stesso l'oggetto già impostato sarà ora autonomo (Idf491, b/177825470) - Safe-Args ora aggiunge l'opzione di soppressione delle annotazioni sui metodi corretti quando utilizzi Java. (I8fbc5, b/179463137)
Contributi esterni
- Grazie
JvmName
per la richiesta di pull, in modo da garantire che gli argomentiReferenceType
possano ora essere analizzati correttamente quando vengono inviati come parte dell'URI di un link diretto. (N. 127, b/179166693) - Grazie
tatocaster
per la richiesta di pull che consente adefaultValue
per un argomento conapp:argType=”float”
ora supporta valori predefiniti interi. (N. 117, b/173766247)
Versione 2.3.3
Versione 2.3.3
27 gennaio 2021
Viene rilasciato androidx.navigation:navigation-*:2.3.3
. La versione 2.3.3 contiene questi commit.
Correzioni di bug
- Non si verifica più un arresto anomalo quando viene aperta una
NavBackStackEntry
prima che il relativoLifecycle
venga spostato inCREATED
. (Ie3ba3). - È stata corretta la regressione causata da b/171364502 che causava la navigazione verso una
un'attività con un valore di risorsa di animazione
0
ha causato unResourceNotFoundException
. (I7aedb, b/176819931)
Versione 2.3.2
Versione 2.3.2
2 dicembre 2020
Viene rilasciato androidx.navigation:navigation-*:2.3.2
. 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 permetteva 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 il passaggio a un grafico di navigazione nidificato non creava una nuova istanza del grafico nello stack posteriore. (Ifc831).
- È stato risolto un problema per cui l'utilizzo di
navigate()
con unpopUpTo
che rimuoveva l'ultima destinazione in un grafico di navigazione non interrompeva e rimuoveva immediatamente il grafico di navigazione stesso dallo stack posteriore. (I910a3) - Navigazione SafeArgs ora utilizza KotlinPoet versione 1.7.2 che aggiunge il supporto per la modalità API esplicita di Kotlin. (I918b5)
- Ora
NavHostFragment.findNavController(Fragment)
controlla anche la visualizzazione dell'arredamento principale di un DialogFragment, oltre ai controlli esistenti della gerarchia dei frammenti e della gerarchia delle visualizzazioni dei frammenti. In questo modo puoi testare i frammenti di finestre 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'UI di navigazione e sono consigliate rispetto alle risorse di animazione predefinite. (b/167430145)
- NavOptions ora esegue l'override del codice hash e dei metodi 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 aggrega più la riga restituita, anche se il nome della classe dell'argomento generato è più lungo di 100 caratteri. (b/168584987)
Modifiche alle dipendenze
navigation-ui
ora dipende da Layout del riquadro a scomparsa 1.1.1, verificando cheNavigationUI
sia in grado di aprire il riquadro a scomparsa anche quando usiLOCK_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 artefatti
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 in base alle esigenze. Per saperne di più, consulta la sezione Navigare con i moduli delle 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 la sezione Navigazione di prova. - Restituzione di un risultato: il
NavBackStackEntry
associato a ogni destinazione nella pila di navigazione posteriore ora ti consente di accedere a unSavedStateHandle
adatto all'archiviazione di piccole quantità di stati salvati che devono essere associati a una determinata voce dello stack posteriore. Per ulteriori informazioni, consulta la sezione Restituzione di 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 dei tipi di azioni e MIME nei link diretti: i link diretti sono stati ampliati per supportare i criteri
app:action
eapp:mimeType
, oltre aiapp:uri
disponibili in precedenza.NavController
ora supporta la navigazione utilizzando qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. Per ulteriori informazioni, vedi Navigare con NavDeepLinkRequest.
Problemi noti
- Il supporto per le azioni dei link diretti e i tipi MIME non è ancora disponibile nell'unione di file manifest. Finché non avrai completato questa operazione, tutti gli elementi
<intent-filter>
generati dall'elemento<nav-graph>
nel file 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
NullPointerException
durante la sostituzione di un'istanza di una destinazione senza argomenti con un'altra istanza con argomenti consingleTop
. (b/158006669) - Tutte le eccezioni di
destination is unknown
generate daNavController
ora dispongono di informazioni di debug aggiuntive per determinare lo stato diNavController
. (b/157764916)
Versione 2.3.0-beta01
20 maggio 2020
Vengono rilasciate le androidx.navigation:navigation-*:2.3.0-beta01
. La versione 2.3.0-beta01 contiene questi commit.
Correzioni di bug
- È stato risolto un problema per cui
Lifecycle
diNavBackStackEntry
non veniva aggiornato correttamente dopo la morte del processo. (b/155218371) OnDestinationChangedListener
istanza registrata prima di chiamaresetGraph()
viene ora inviata correttamente alla destinazione ripristinata dopo la morte del processo. (b/155218371)- Quando utilizzi
singleTop
, gli argomenti aggiornati perNavBackStackEntry
ora vengono aggiornati correttamente e inviati a tutte le istanzeOnDestinationChangeListener
. (b/156545508)
Aggiornamenti delle dipendenze
- L'artefatto
NavigationUI
ora dipende da CustomView1.1.0-rc01
e DrawerLayout1.1.0-rc01
. (aosp/1309696)
Versione 2.3.0-alpha06
29 aprile 2020
Viene rilasciato androidx.navigation:navigation-*:2.3.0-alpha06
. (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 utilizzando qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. (b/136573074, b/135334841)
Modifiche alle API
- Ha ampliato notevolmente 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
Viene rilasciato androidx.navigation:navigation-*:2.3.0-alpha05
. La versione 2.3.0-alpha05 contiene questi commit.
Nuove funzionalità
- Per le inclusioni di grafici dinamici utilizzando
<include-dynamic>
, non è più necessario specificareapp:graphPackage
e ne verrà utilizzato uno predefinito aggiungendo il suffissomoduleName
aapplicationId
dopo un punto. Se devi personalizzaregraphPackage
, ora è supportato un segnaposto${applicationId}
. (b/152696768) - Il file DSL di Navigation Graph Kotlin ora espone un
Map
defaultArguments
per le azioni, rispecchiando la capacità di impostare valori predefiniti per gli 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à
- Aggiunto il supporto per l'attività dei moduli di funzionalità e le destinazioni di frammenti nella DSL di navigazione Kotlin. (b/148969800)
Modifiche alle API
- La classe
DynamicExtras
non utilizza più un pattern del builder e ora può essere creata direttamente. (aosp/1253671) - Ora
DynamicActivityNavigator
prende 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
Viene rilasciato androidx.navigation:navigation-*:2.3.0-alpha03
. La versione 2.3.0-alpha03 contiene questi commit.
Modifiche alle API
- Invece di affidarti alla classe
DrawerLayout
concreta, OraAppBarConfiguration
utilizza l'interfacciaOpenable
introdotta in CustomView1.1.0-alpha02
(che L'appDrawerLayout
viene implementata a partire da DrawerLayout1.1.0-alpha04
), che ti consente di utilizzare implementazioni personalizzate diOpenable
conNavigationUI
. (b/129030452)
Correzioni di bug
- Le regole di ProGuard
navigation-common-ktx
ora mantengono correttamente solo le classiNavArgs
in uso anziché tutte le istanzeNavArgs
. (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
Viene rilasciato androidx.navigation:navigation-*:2.3.0-alpha02
. La versione 2.3.0-alpha02 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora ti consente di accedere a unaSavedStateHandle
adatta all'archiviazione di piccole quantità di stato salvato che devono essere associati a una particolare voce dello stack posteriore. Consulta Restituire un risultato per un caso d'uso di esempio. (b/79672220)
Modifiche alle API
- Sono stati aggiunti metodi pratici di
getCurrentBackStackEntry()
egetPreviousBackStackEntry()
per semplificare il recupero di unNavBackStackEntry
per le destinazioni attuali e precedenti. (b/79672220)
Correzioni di bug
navigateUp()
ora passa gli argomenti della destinazione corrente eKEY_DEEP_LINK_INTENT
alla destinazione precedente quando avvia l'app sul tuo stack di attività. (b/147456890)
Modifiche alle dipendenze
- La navigazione ora dipende dai
1.2.0
principali.
Versione 2.3.0-alpha01
5 febbraio 2020
Viene rilasciato androidx.navigation:navigation-*:2.3.0-alpha01
. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il nuovo artefatto
navigation-testing
fornisce una classeTestNavHostController
. Questa lezione offre un'alternativa all'utilizzo di unNavController
fittizio durante il test di Navigazione, che consente di impostare la destinazione corrente e verificare lo stack posteriore dopo le operazioni di navigazione. (b/140884273) - Il nuovo
navigation-dynamic-features-fragment
(e la sua dipendenza transitiva,navigation-dynamic-features-runtime
) ti consente di includere destinazioni o interi grafici di navigazione (tramite<include-dynamic>
) dai moduli delle funzionalità, fornendo l'installazione immediata dei moduli delle funzionalità on demand durante la navigazione verso queste destinazioni. Per saperne di più, consulta la sezione Navigare con i moduli delle funzionalità. (b/132170186)
Correzioni di bug
- Da Navigazione
2.2.1
: i link diretti senza parametri di query ora ignorano correttamente tutti i parametri di query anziché aggiungerli agli elementi{argument}
finali o non corrispondono 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 richiesto. (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 Navigazione
2.2.1
: la navigazione2.2.1
ora dipende da Lifecycle ViewModel SavedState2.2.0
e Framment1.2.1
.
Versione 2.2.2
Versione 2.2.2
15 aprile 2020
Vengono rilasciate le androidx.navigation:navigation-*:2.2.2
. La versione 2.2.2 contiene questi commit.
Correzioni di bug
- È stato corretto un
IllegalStateException
durante il collegamento diretto alla destinazione iniziale del grafico quando nella Attività erano 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, questa funzionalità era disponibile in Navigazione 2.3.0-alpha03. (b/150213558
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Frammento
1.2.4
. (aosp/1277325)
Versione 2.2.1
Versione 2.2.1
5 febbraio 2020
Viene rilasciato androidx.navigation:navigation-*:2.2.1
. La versione 2.2.1 contiene questi commit.
Correzioni di bug
- I link diretti senza parametri di query ora ignorano correttamente tutti i parametri di query anziché aggiungerli agli elementi
{argument}
finali o non corrispondono 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) - Ora il modulo
navigation-common-ktx
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 Framment1.2.1
.
Versione 2.2.0
Versione 2.2.0
22 gennaio 2020
Viene rilasciato androidx.navigation:navigation-*:2.2.0
. 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 del grafico di navigazione nello stack posteriore. Il valoreNavBackStackEntry
restituito fornisceLifecycleOwner
,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
basati sulla navigazione, oltre a fornire gli argomenti utilizzati per iniziare quella 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 per i quali è possibile specificare un valore null sono ora facoltativi per la corrispondenza di 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 modificate le animazioni di dissolvenza predefinite utilizzate da
navigation-ui
in modo che corrispondano alle animazioni di dissolvenza modificate in 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 con l'analisi dei link diretti in cui i parametri facoltativi riceverebbero
"@null"
anzichénull
. (b/141613546) - Ora
NavHostFragment
ripristina correttamente il grafico dopo una modifica alla 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
Viene rilasciato androidx.navigation:navigation-*:2.2.0-rc02
. 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
Viene rilasciato androidx.navigation:navigation-*:2.2.0-beta01
. 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)
Cambiamenti del comportamento
- I parametri di query aggiuntivi vengono ora ignorati durante la corrispondenza dei link diretti anziché causare un errore di 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
navArgs()
suActivity
ora presenta 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'istruzione
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
Viene rilasciato androidx.navigation:navigation-*:2.2.0-alpha03
. La versione 2.2.0-alpha03 contiene questi commit.
Cambiamenti del comportamento
- La chiamata a
setViewModelStore()
dopo la chiamata al numerosetGraph
ora comporta la chiamata aIllegalStateException
. Questo valore deve sempre essere impostato daNavHost
come parte della configurazione iniziale per garantire che tutte le istanzeNavBackStackEntry
abbiano uno spazio di archiviazione coerente per le istanzeViewModel
. (aosp/1111821)
Correzioni di bug
- È stato corretto un
ConcurrentModificationException
quando si utilizzavanoViewModel
istanze collegate a più istanzeViewModelStore
con ambito di grafico di navigazione diverso. (aosp/1112257).
Versione 2.2.0-alpha02
5 settembre 2019
Viene rilasciato androidx.navigation:navigation-*:2.2.0-alpha02
. 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 per i quali è possibile specificare un valore null sono ora facoltativi per la corrispondenza di link diretti. (b/133273839)
- Ora puoi chiamare
NavController.getBackStackEntry()
, passando l'ID di una destinazione o di un grafico di navigazione nello stack posteriore. Il valoreNavBackStackEntry
restituito fornisceLifecycleOwner
,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
basati sulla navigazione, oltre a fornire gli argomenti utilizzati per iniziare quella 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) NavInflater
ora evita di chiamaregetResourceName()
inutilmente, accelerando i tempi di inflazione fino al 40%. (b/139213740)
Versione 2.2.0-alpha01
7 agosto 2019
Viene rilasciato androidx.navigation:navigation-*:2.2.0-alpha01
. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
SavedStateViewModelFactory
è ora il valore di fabbrica predefinito utilizzato quando si utilizzaby navGraphViewModels()
o il costruttoreViewModelProvider
con un valoreViewModelStoreOwner
restituito daNavController.getViewModelStoreOwner()
. (b/135716331)
Modifiche alle API
- Da Navigazione
2.1.0-rc01
: l'APIgetViewModelStore()
ritirata suNavController
e introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Correzioni di bug
NavHostFragment
ora utilizzaFragmentContainerView
, per risolvere i problemi di ordinamento Z delle animazioni e l'invio di riquadri di finestre a Frammenti. (b/137310379)
Versione 2.1.0
Versione 2.1.0
5 settembre 2019
Viene rilasciato androidx.navigation:navigation-*:2.1.0
. I commit inclusi in questa versione sono disponibili qui.
Modifiche importanti dalla versione 2.0.0
- Definizione dell'ambito ViewModels in un grafico di navigazione: ora puoi creare ViewModel con ambito a livello di grafico di navigazione utilizzando il delegato della proprietà
by navGraphViewModels()
per gli utenti Kotlin utilizzando le librerie-ktx
o utilizzando l'APIgetViewModelStoreOwner()
aggiunta aNavController
. Per ulteriori informazioni, consulta l'articolo Condividere i dati relativi all'interfaccia utente tra destinazioni. - Destinazioni di dialogo: ora puoi creare
<dialog>
destinazioni che mostreranno unDialogFragment
quandonavigate
.NavHostFragment
supporta le destinazioni delle finestre di dialogo per impostazione predefinita. Per ulteriori informazioni, consulta 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 raggiungere la destinazione. Per saperne di più, consulta Navigare utilizzando l'URI. - NavHostController: le API utilizzate specificatamente per la creazione di un
NavHost
personalizzato sono state spostate inNavHostController
, consentendo alle implementazioni di collegare il proprioNavController
agli hostLifecycleOwner
,OnBackPressedDispatcher
eViewModelStore
.
Versione 2.1.0-rc01
7 agosto 2019
Viene rilasciato androidx.navigation:navigation-*:2.1.0-rc01
. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- L'API
getViewModelStore()
deprecata il giornoNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Versione 2.1.0-beta02
19 luglio 2019
Viene rilasciato androidx.navigation:*:2.1.0-beta02
. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- È stata rimossa la dipendenza da jacoco involontaria, 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 utilizzisetupWithNavController()
con unToolbar
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 dell'editor di navigazione. (b/133880955)
Modifiche alle API
- L'API
getViewModelStore()
suNavController
è stata deprecata a favore del nuovo metodogetViewModelStoreOwner()
che restituisce unViewModelStoreOwner
. (aosp/987010) - L'implementazione di destinazioni di finestre mobili, come le destinazioni
<dialog>
, è stata generalizzata in un'interfaccia con indicatori,FloatingWindow
, che ora sono implementate in 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)
Cambiamenti del comportamento
- Ora la navigazione mantiene correttamente sincronizzato il proprio stato con ciò che viene visualizzato sullo schermo quando utilizzi una destinazione
<dialog>
. Di conseguenza, la navigazione ora apre automaticamente le destinazioni<dialog>
quando apri una destinazione senza finestra di dialogo e senza attività, come una destinazione<fragment>
. (b/134089818)
Correzioni di bug
- Ora la navigazione elimina l'animazione che si verifica quando si ricrea l'attività durante la gestione di un link diretto, correggendo il flash visivo. (b/130362979)
- È stato corretto un bug per cui la pila di navigazione posteriore non sarebbe sincronizzata quando si apriva un frammento durante l'aggiunta del frammento iniziale. (b/133832218)
Versione 2.1.0-alpha05
5 giugno 2019
Viene rilasciato androidx.navigation:*:2.1.0-alpha05
. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- Le API relative 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 lo stack posteriore non era corretto dopo la navigazione per 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
Viene rilasciato androidx.navigation:*:2.1.0-alpha03
. I commit inclusi in questa versione sono disponibili qui.
Problemi noti
- NavHostFragment continua a intercettare il pulsante Indietro del sistema nonostante l'utilizzo di
app:defaultNavHost="false"
b/132077777
Nuove funzionalità
- Ora puoi creare destinazioni
<dialog>
che mostreranno unDialogFragment
quandonavigate
per raggiungerle.NavHostFragment
supporta le destinazioni delle finestre di dialogo per impostazione predefinita. b/80267254 - Oltre a chiamare
navigate
con un ID risorsa o un'istanzaNavDirections
, ora puoi navigare tramite unUri
, che utilizza il<deepLink>
che hai aggiunto a una destinazione per raggiungere la destinazione corretta. b/110412864
Cambiamenti del 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 rendere più chiaro che questo è il punto di ingresso corretto per l'aggiunta di navigatori personalizzati durante la creazione di sottoclassi diNavHostFragment
. B/122802849 - Un metodo
hasDeepLink()
è stato aggiunto aNavDestination
per consentirti di verificare se una determinataUri
può essere gestita da quella destinazione o, nel caso di unaNavGraph
, da qualsiasi destinazione nel grafico di navigazione. b/117437718
Correzioni di bug
- Gli argomenti predefiniti vengono ora passati correttamente alle istanze
OnDestinationChangedListener
. b/130630686 NavHostFragment
ora intercetta gli eventi Indietro di sistema utilizzandoOnBackPressedDispatcher
, risolvendo un problema che si verificava durante la navigazione condizionale nei metodi del ciclo di vita di un frammento quando si torna a un frammento. B/111598096- Per Safe Args, un
android:defaultValue=”@null”
con un valoreapp:argType
non specificato ora viene dedotto correttamente come argomentostring
. b/129629192
Versione 2.1.0-alpha02
3 aprile 2019
Viene rilasciato androidx.navigation:*:2.1.0-alpha02
. 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 alle API
- Ora puoi aggiungere
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
- Le destinazioni
android:name
per<activity>
non vengono più analizzate in una classe al momento dell'inflazione, impedendo 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
. In questa release viene rimosso anche della dipendenza daandroidx.legacy:legacy-support-core-utils:1.0.0
. B/128632612
Modifiche alle API
- Un nuovo metodo
Navigation.createNavigateOnClickListener(NavDirections)
è stata aggiunta in alternativa alla creazione di un listener di clic con un l'ID risorsa e il bundle. b/127631752 FragmentNavigator.instantiateFragment
è deprecato. Il valore predefinito ora utilizzaFragmentFactory
per creare un'istanza Frammenti. b/119054429
Correzioni di bug
- La navigazione non invia più un
Bundle
nullo quando sono collegati argomenti per arrivare a una destinazione, risolvendo un problema durante l'utilizzo diandroid:defaultValue="@null"
. B/128531879 - Safe Args ora dipende da KotlinPoet 1.1.0, risolvendo un problema con con nomi di pacchetti molto lunghi. B/123654948
Versione 2.0.0
Versione 2.0.0
14 marzo 2019
La navigazione 2.0.0
viene rilasciata senza modifiche da 2.0.0-rc02
.
Versione 2.0.0-rc02
6 marzo 2019
Navigazione 2.0.0-rc02 fornisce nuovi artefatti con androidx.navigation
ID gruppo e cambia le sue dipendenze negli equivalenti AndroidX.
Il comportamento di 2.0.0-rc02 è identico a quello di Navigazione 1.0.0-rc02 e non dovrebbero essere necessarie modifiche al codice per l'aggiornamento dalla versione 1.0.0-rc02 oltre ad aggiornare le dipendenze in modo che corrispondano nuove dipendenze.
Il progetto deve avere ha eseguito la migrazione ad AndroidX per utilizzare le release 2.X di Navigazione. La versione stabile di Navigazione 1.0 sarà l'ultima release che utilizza il supporto le dipendenze della libreria; tutto lo sviluppo futuro oltre la versione 1.0 si baserà AndroidX e basati sulla release stabile 2.0.
Dipendenze precedenti ad AndroidX
Per le versioni precedenti ad AndroidX di Navigatore, 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 gli argomenti sicuri, aggiungi il parametro
seguire 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 da 1.0.0-rc02
.
Versione 1.0.0-rc02
26 febbraio 2019
Questa è la seconda release candidata per la release stabile 1.0.0 di Navigation. Questa release contiene una serie di correzioni di bug.
Correzioni di bug
- Risolto un problema per cui
popBackStack()
veniva ignorato se il grafico principale non aveva un ID b/126251695 - Ora
navigateUp()
gestisce correttamente il ritorno all'attività dell'app quando viene chiamato dopo aver gestito un link diretto senzaFLAG_ACTIVITY_NEW_TASK
B/126082008 - È stato risolto un problema relativo a
ActivityNavigator.applyPopAnimationsToPendingTransition
non viene applicata l'animazione di uscita pop corretta b/126237567 - Il codice Kotlin generato da Safe Args ora inserisce correttamente le parole chiave Kotlin
come
in
efun
nel nome del pacchetto associato alla classeR
. b/126020455
Versione 1.0.0-rc01
21 febbraio 2019
Questa è una release candidata per la release stabile 1.0.0 di Navigazione. Questo contiene una correzione di bug.
Correzioni di bug
- Risolto un problema relativo all'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
Cambiamenti del comportamento
- Le corrispondenze esatte dei link diretti hanno ora la priorità sui link diretti con
.*
o corrispondenze tra gli argomenti. b/123969518
Correzioni di bug
popBackStack()
enavigateUp
ora restituiscono correttamentefalse
durante lo scoppio sull'ultima destinazione sul back stack, introduce la correzione di una regressione tra1.0.0-beta01
. B/123933201- La navigazione ora imposta correttamente
ClassLoader
durante il ripristino di stato salvato dell'istanza, per evitare problemi durante l'utilizzo di classi personalizzateNavigator
stato salvato o in argomenti inviati aNavDestination
. B/123893858 - Le classi NavArgs generate da Safe Args non si arrestano più in modo anomalo durante il ripristino di un
Parcelable[]
argomento dallo stato dell'istanza salvata. b/123963545 - Ora Safe Args ripulisce correttamente le classi Kotlin generate non necessarie. B/124120883
Versione 1.0.0-beta01
4 febbraio 2019
Questa è la prima versione beta di Navigatore. in futuro, la barra di navigazione L'API dovrebbe rimanere stabile fino alla prossima versione, a meno che non sia presente un un problema critico. Questa release contiene alcune correzioni di bug e modifiche al comportamento.
Cambiamenti del comportamento
- La navigazione ora assicura che i valori predefiniti dell'argomento vengano trattati in modo identico
in fase di runtime e tramite Safe Args. Di conseguenza, solo gli argomenti con un
app:argType="reference"
può avere un valore predefinito che punta a un'altra risorsa (ad es.@color/colorPrimary
). Tentativo di utilizzare un riferimento predefinito con unapp:argType
diverso comporterà un'eccezione quando per analizzare il file XML di navigazione. b/123551990 - Safe Args ora dipende dal plug-in Android 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 nelle librerie e nei moduli delle funzionalità su tutte le versioni del plug-in Android Gradle. B/121304903
- È stata corretta una regressione che causava la mancata attivazione di una singola operazione
popBackStack()
rimuovi tutte le copie di una destinazione dalla parte superiore dello stack posteriore, da una singola destinazione alla volta. b/123552990 - Risolto un problema per cui lo stato
FragmentNavigator
veniva desincronizzato con lo stato diNavController
, causando unIllegalStateException
quando di ripristinare lo stack esistente. b/123803044 - È stato risolto un problema per cui la freccia Indietro gestita da
NavigationUI
non consentiva vengono visualizzati quando si utilizza ProGuard con l'offuscamento. b/123449431 - Il codice generato da Safe Args ora gestisce correttamente tramite 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 molto nidificate. B/123347762
Versione 1.0.0-alpha11
23 gennaio 2019
Questa è una release di aggiornamento rapido di 1.0.0-alpha10
che corregge un problema di Safe Args.
Correzioni di bug
- Correzione di un problema per cui Safe Args non riusciva a importare la classe Directions associati ad 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 un errore: consulta la sezione Modifiche che interrompono di seguito.
Nuove funzionalità
- Gli utenti Kotlin ora possono utilizzare il delegato della proprietà
by navArgs()
per rallentare ottieni un riferimento a una classeNavArgs
generata da Safe Args in unActivity
oFragment
. B/122603367 - Safe Args ora ti consente di generare il codice Kotlin applicando il metodo
Plug-in
androidx.navigation.safeargs.kotlin
. Il codice Kotlin è stato creato in particolare per i moduli solo Kotlin, usando argomenti predefiniti immutabili rispetto al pattern del builder ancora disponibile il plug-inandroidx.navigation.safeargs
precedente. b/110263087
Cambiamenti del comportamento
- I link diretti corrispondenti ora sono orientati al link diretto che ha gli argomenti più corrispondenti. B/118393029
- La chiamata di
setGraph()
su unNavController
ora reimposta lo stack precedente. 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 l'interruzione
- Il metodo
NavOptions.applyPopAnimationsToPendingTransition()
per l'applicazione di animazioni pop a un'attività è stata spostata inActivityNavigator
. B/122413117 - Safe Args ora evita la duplicazione di classi identiche per azioni senza
argomenti. Il tipo restituito per nessun metodo di argomento nelle NavDirections generate
corsi è ora
NavDirections
. B/123233147 - Le classi Directions generate da Safe Args non hanno più un costruttore pubblico - dovresti interagire solo con i metodi statici generati. B/123031660
- Safe Args ha generato
NavDirections
di corsi non più pubblici devono essere generati solo tramite i metodi statici in le classi Directions generate. b/122963206 - Il valore di
Bundle
restituito daNavDirections
'getArguments()
è ora contrassegnato come@NonNull
anziché@Nullable
. B/123243957
Correzioni di bug
- Ora
NavDeepLinkBuilder
gestisce correttamente più account simultaneiPendingIntent
per la stessa destinazione utilizzando gli argomenti che passi per determinare l'unicità. B/120042732 - Ora
NavController
gestisce correttamente le operazioni dipopBackStack()
quando utilizzando unNavHostFragment
o altri Frammenti secondari nidificati con una pila posteriore. b/122770335 - Ora
NavigationUI
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
NavDirections
di classi generate da Safe Args ora sono correttamente ugualihashCode()
quandoequals()
restituisce true. b/123043662FragmentNavigator
ora genera un messaggio di errore migliore se tenti di creaFragmentTransactions
personalizzate nelNavHostFragment
FragmentManager
. Dovresti usare sempregetChildFragmentManager()
. B/112927148
Versione 1.0.0-alpha09
18 dicembre 2018
Questa release contiene modifiche all'API che provocano un errore: consulta la sezione Modifiche che interrompono di seguito.
Abbiamo scelto di non continuare a sviluppare il
android.arch.navigation:navigation-testing
artefatto. Sebbene si sia dimostrato
utile per i test interni di NavController
, consigliamo vivamente
strategie di test alternative, ad esempio la simulazione dell'istanza NavController
per verificare che vengano effettuate le chiamate navigate()
corrette. Questo
è discusso in dettaglio nel
Discussione su un'attività singola ad AndroidDevSummit 2018
e lavoreremo alla creazione di ulteriore documentazione, specificamente sui test
con il navigatore.
Nuove funzionalità
- I
MenuItem
conmenuCategory="secondary"
non torneranno più indietro stack quando utilizzato con i metodiNavigationUI
. b/120104424 AppBarConfiguration
ora ti consente di impostare una proprietà di riservaOnNavigateUpListener
che verrà chiamata quandonavController.navigateUp()
restituiràfalse
, B/79993862 B/120690961
Modifiche che provocano l'interruzione
- Quando utilizzi un
<argument>
con unargType="reference"
, la navigazione non è più analizza il riferimento, fornendo invece l'ID risorsa non elaborato. B/111736515 onNavDestinationSelected()
ora torna alla destinazione di partenza del grafico di navigazione per impostazione predefinita rendendole coerenti con i metodisetup
. AggiungimenuCategory="secondary"
aMenuItem
per evitare di rompere il gruppo posteriore. aosp/852869- I metodi
fromBundle()
delle classiArgs
generate ora hanno un valore diverso da nullBundle
anzichéBundle
con valori null. aosp/845616
Correzioni di bug
- Ora gli argomenti vengono analizzati correttamente dai link diretti come
argType
corretto invece che sempre come stringhe b/110273284 - La navigazione ora esporta correttamente le proprie risorse pubbliche B/121059552
- Safe Args è ora compatibile con Android Gradle Plugin 3.4 Canary 4 e versioni successive B/119662045
Versione 1.0.0-alpha08
6 dicembre 2018
Questa release contiene modifiche all'API che provocano un errore: consulta la sezione Modifiche che interrompono di seguito.
Nuove funzionalità
- Le etichette di destinazione, se utilizzate con i metodi
NavigationUI
, ora verranno automaticamente sostituisci{argName}
istanze inandroid:label
con l'argomento corretto b/80267266 - La navigazione ora dipende dalla libreria di supporto 28.0.0 B/120293333
Modifiche che provocano l'interruzione
OnNavigatedListener
è stato rinominato inOnDestinationChangedListener
B/118670572- Ora
OnDestinationChangedListener
passa anche ilBundle
degli argomenti aosp/837142 - Attributi
app:clearTask
eapp:launchDocument
e relativi attributi associati sono stati rimossi. Usaapp:popUpTo
con la radice del grafico per rimuovi tutte le destinazioni dal tuo back Stack. b/119628354 ActivityNavigator.Extras
ora utilizza un patternBuilder
e aggiunge la possibilità di imposta qualsiasi flagIntent.FLAG_ACTIVITY_
aosp/828140NavController.onHandleDeepLink
è stato rinominato inhandleDeepLink
aosp/836063- Molti metodi e classi non pensati per la creazione di sottoclassi, come
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, è stata effettuatafinal
aosp/835681 - Il metodo
NavHostFragment.setGraph()
deprecato è stato rimosso aosp/835684 - Il metodo
NavigationUI.navigateUp(DrawerLayout, NavController)
deprecato è stato rimosso. aosp/835684 - La creazione dei frammenti è stata spostata in
FragmentNavigator
, così è più facile delega la creazione di frammenti a unFragmentFactory
. B/119054429 - Il costruttore per
NavGraphNavigator
non richiede più unContext
aosp/835340 - NavigatorProvider è ora
una classe, piuttosto che un'interfaccia.
NavigatorProvider
restituito dagetNavigatorProvider()
non ha modificato la sua funzionalità. aosp/830660 - L'utente
NavDestination.navigate()
è stato rimosso. Chiamanavigate()
suNavigator
. aosp/830663 - Refactoring significativo di
Navigator
, che elimina la necessità diOnNavigatorNavigatedListener
e invecenavigate
restituisce ilNavDestination
a cui è stato raggiunto. Navigator
istanze non possono più inviare eventi pop aNavController
. Prendi in considerazione utilizzando unOnBackPressedCallback
per intercetta le pressioni del pulsante Indietro e richiamanavController.popBackStack()
. aosp/833716
Correzioni di bug
- Ora
popUpTo
funziona in modo coerente quando la destinazione è un elemento<navigation>
B/116831650 - Sono stati corretti una serie di bug che hanno generato un
IllegalArgumentException
quando si utilizzano grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - Ora l'attributo
dataPattern
di<activity>
destinazioni verrà compilato da argomenti non stringa richiamandotoString()
b/120161365
Arg sicuri
- Safe Args supporta gli oggetti Serializable, inclusi i valori Enum. Tipi di enum
puoi impostare un valore predefinito utilizzando il valore letterale enum senza il nome della classe
(ad es.
app:defaultValue="READ"
) b/111316353 - Safe Args supporta array di tutti i tipi supportati B/111487504
- Safe Args ora ignora le sottocartelle delle directory delle risorse B/117893516
- Safe Args aggiunge le annotazioni
@Override
quando opportuno b/117145301
Versione 1.0.0-alpha07
29 ottobre 2018
Nuove funzionalità
- Una nuova risorsa AppBarConfiguration consente di personalizzare le destinazioni da considerare di primo livello. destinazioni. Consulta la documentazione aggiornata per maggiori dettagli. B/117333663
- Ora puoi passare argomenti alla destinazione iniziale del grafico B/110300470
- I link diretti ora supportano gli schemi personalizzati contenenti punti, trattini e segni più. B/112806402
Modifiche che provocano l'interruzione
- Il modulo
navigation-testing-ktx
è stato piegatonavigation-testing artifact
e non sarà più pubblicata. - L'artefatto
navigation-testing
ora ha una dipendenza dallo standard Kotlin libreria. L'API è stata modificata per essere più coerente con Kotlin , ma puoi continuare a utilizzarla per test scritti in Java. - I grafici di navigazione registrati con manifest dei metadati non sono più supportati. B/118355937
- Le azioni non possono più essere associate a <activity> destinazioni. 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
- Correzione dell'arresto anomalo che si verifica dopo le modifiche alla configurazione durante l'utilizzo di un Navigatori. B/110763345
Arg sicuri
- Gli argomenti sicuri ora hanno una dipendenza fissa dal plug-in Android 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 in un elemento <include> grafico. B/116542123
Versione 1.0.0-alpha06
20 settembre 2018
Nuove funzionalità
- Le transizioni di elementi condivisi per le destinazioni Frammento 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 alle API
- Modifica di interruzione: il metodo
navigate()
di navigazione ora richiede 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
- Ora i corsi Directions di destinazione di navigazione estendono la classe Directions del genitore, 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 del backstack. B/111907708
- È stato corretto un bug in
equals()
di classi di Args generati. b/111450897 - Correggi un errore di build in Safe Args. B/109409713
- Correggi una conversione da identificatori di risorsa a nomi Java b/111602491
- Risolvere i problemi segnalati dai messaggi di errore relativi ai valori null nel plug-in Safe Args.
- Aggiungi annotazioni con valore nullo mancanti.
Versione 1.0.0-alpha04
19 luglio 2018
Navigazione 1.0.0-alpha04
e il plug-in Gradle di Safe Args associato contengono una serie di modifiche dell'API, modifiche del 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 figlio vengano sbloccati prima che venga sbloccato il NavController esterno b/111345778
Arg sicuri
- Modifica che provoca un errore: il valore di
app:type
è stato modificato inapp:argType
per evitare conflitti con altre librerie come ConstraintLayout 2.0.0-alpha1 b/111110548 - Ora è possibile fare clic sui messaggi di errore di Safe Args b/111534438
- Le classi Args ora confermano che gli attributi
NonNull
in realtà non sono nulli b/111451769 - Sono state aggiunte altre annotazioni
NonNull
ai corsi generati da NavDirections e Args b/111455455 b/111455456
Correzioni di bug
- È stato risolto un problema relativo al pulsante Indietro del sistema dopo aver creato link diretti a una destinazione di frammento b/111515685
Versione 1.0.0-alpha03
12 luglio 2018
Navigazione 1.0.0-alpha03
e il plug-in Gradle di Safe Args associato contengono una serie di modifiche dell'API, modifiche del comportamento e correzioni di bug.
Modifiche al comportamento / API
- È stato aggiunto un metodo NavigationUI.setupWithNavController per Google Toolbar b/109868820
- È stato aggiunto un metodo NavigationUI.setupWithNavController per CollapsingToolbarLayout b/110887183
- popBackStack() ora restituisce false quando lo stack posteriore è vuoto o quando l'ID destinazione specificato non è nello stack posteriore 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
Arg sicuri
- Breaking Change: i caratteri non alfanumerici nei nomi di azione e argomento verranno sostituiti da caratteri maiuscoli e minuscoli nei rispettivi nomi dei metodi NavDirections
- .
- Ad es.
DemoController.index
diventeràsetDemoControllerIndex
b/79995048 - Ad es.
action_show_settings
diventeràactionShowSettings
b/79642240
- Ad es.
- Modifica di interruzione: gli argomenti ora sono considerati non nulli per impostazione predefinita. Per consentire valori nulli negli argomenti stringa e separabili, aggiungi
app:nullable="true"
b/79642307 - Ora puoi utilizzare
app:type="long"
con defaultValues nel formato "123L" b/79563966 - Gli argomenti assegnabili ora sono supportati, utilizzando un nome completo di classe per
app:type
. L'unico valore predefinito supportato è"@null"
b/79563966 - Le classi Args ora implementano
equals()
ehashCode()
b/79642246 - Il plug-in Safe Args ora può essere applicato ai progetti di libreria b/80036553
- Il plug-in Safe Args ora può essere applicato ai progetti di funzionalità b/110011752
Correzioni di bug
- Sono stati risolti i problemi durante la navigazione durante i metodi del ciclo di vita dei frammenti b/109916080
- Sono stati risolti i problemi che si verificavano più volte durante la navigazione tra grafici nidificati b/110178671
- Sono stati risolti i problemi relativi all'utilizzo di
setPopUpTo
con la prima destinazione nel grafico b/109909461 - È stato risolto il problema per cui tutti i valori
app:defaultValue
venivano trasmessi 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
Cambiamenti del comportamento
FragmentNavigator
ora utilizzasetReorderingAllowed(true)
. B/109826220La navigazione ora Decodifica gli argomenti analizzati dagli URL dei link diretti. B/79982454
Correzioni di bug
È stato corretto un
IllegalStateException
durante la chiamata per navigare dai metodi del ciclo di vita Fragment. b/79632233La navigazione ora dipende dalla libreria di supporto 27.1.1 per correggere lo sfarfallio durante l'uso delle animazioni. B/80160903
È stato corretto un
IllegalArgumentException
quando si utilizzava defaultNavHost="true" come frammento figlio. 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 di sovrapposizione dei frammenti durante l'utilizzo di
launchSingleTop
. B/79407969La navigazione ora crea il back stack sintetico corretto per i grafici nidificati. B/79734195
NavigazioneUI ora evidenzierà l'elemento corretto quando utilizzi un grafico nidificato come
MenuItem
. B/109675998
Modifiche alle API
L'attributo
clearTask
per le azioni e l'API associata inNavOptions
è stato deprecato. B/80338878L'attributo
launchDocument
per le azioni e l'API associata inNavOptions
è stato deprecato. B/109806636
Versione 1.0.0-alpha01
8 maggio 2018
La navigazione fornisce un framework per lo sviluppo di creatività in-app.
per la navigazione. Questa release iniziale è 1.0.0-alpha01
.