Navigazione
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
17 aprile 2024 | 2.7.7 | - | - | 2.8.0-alpha07 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza alla navigazione, devi aggiungere il Repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il Repository Maven di Google.
Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle
per
l'app o il modulo:
trendy
dependencies { def nav_version = "2.7.7" // Java language implementation implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Kotlin implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version" // Feature module Support implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" }
Kotlin
dependencies { val nav_version = "2.7.7" // Java language implementation implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Kotlin implementation("androidx.navigation:navigation-fragment-ktx:$nav_version") implementation("androidx.navigation:navigation-ui-ktx:$nav_version") // Feature module Support implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // Jetpack Compose Integration implementation("androidx.navigation:navigation-compose:$nav_version") }
Safe Args
Per aggiungere Args sicuri
al tuo progetto, includi i seguenti classpath
nel file build.gradle
di primo livello:
trendy
buildscript { repositories { google() } dependencies { def nav_version = "2.7.7" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" } }
Kotlin
buildscript { repositories { google() } dependencies { val nav_version = "2.7.7" classpath("androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version") } }
Devi anche applicare uno dei due plug-in disponibili.
Per generare un codice in linguaggio Java adatto a moduli Java o Java e Kotlin misti, aggiungi
questa riga al file build.gradle
della tua app o modulo:
trendy
plugins { id 'androidx.navigation.safeargs' }
Kotlin
plugins { id("androidx.navigation.safeargs") }
In alternativa, per generare codice Kotlin adatto ai moduli solo Kotlin aggiungi:
trendy
plugins { id 'androidx.navigation.safeargs.kotlin' }
Kotlin
plugins { id("androidx.navigation.safeargs.kotlin") }
Devi avere android.useAndroidX=true
nel
file gradle.properties
, in base alla
migrazione ad AndroidX.
Per informazioni sull'utilizzo delle estensioni Kotlin, consulta la documentazione ktx.
Per ulteriori informazioni sulle dipendenze, consulta Aggiungere dipendenze build.
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
Versione 2.8
Versione 2.8.0-alpha07
17 aprile 2024
androidx.navigation:navigation-*:2.8.0-alpha07
viene rilasciato. La versione 2.8.0-alpha07 contiene questi commit.
Nuove funzionalità
- Aggiunge un nuovo elemento
navigation-fragment-compose
che include un'alternativaComposableNavHostFragment
aNavHostFragment
che consente di aggiungerecomposable
destinazioni 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. (I0ef2e, b/265480755).
Modifiche alle API
- È continuato il supporto per Args sicuri in Navigation Compose utilizzando un approccio basato sulla serializzazione Kotlin. Queste API non sono complete e sono contrassegnate con l'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa al completamento dell'intera piattaforma API in una release futura. (Iefd95, I409c8, I5b5ac, I7e753, I960f8, I3eabd, I8ed5a, Ied2c9, 17db6,19b7c19b{/236,19b7b{/236{/360{/236,19b73
Versione 2.8.0-alpha06
3 aprile 2024
androidx.navigation:navigation-*:2.8.0-alpha06
viene rilasciato. La versione 2.8.0-alpha06 contiene questi commit.
Modifiche alle API
- È iniziato il supporto per Args sicuri in Navigation Compose utilizzando un approccio basato sulla serializzazione Kotlin. Queste API non sono complete e sono contrassegnate con l'annotazione
ExperimentalSafeArgsApi
. Questa annotazione verrà rimossa al completamento dell'intera piattaforma API in una release futura. (I644e7, I98896, I2a1c5, I43a51, I836a1, Ic5eec, I39407, I24e41, If9e
Correzioni di bug
NavHost
ora usaAlignment.TopStart
come argomento contentAllineament predefinito. Questo lo allinea al valore predefinito diAnimatedContent
e corregge alcune istanze di una scala imprevista dal centro della transizione. (I09e72, b/330111602).- Quando scorri il gesto Indietro predittivo mentre usi Scrittura navigazione,
NavHost
ora completerà correttamente la transizione personalizzata invece di completarla immediatamente. (I99017, b/327292110)
Versione 2.8.0-alpha05
20 marzo 2024
androidx.navigation:navigation-*:2.8.0-alpha05
viene rilasciato. La versione 2.8.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora puoi passare argomenti a
startDestination
diNavGraph
direttamente nella routestartDestination
senza fare affidamento sudefaultValue
. Questo vale anche per la nidificazioneNavGraph
startDestinations
. (I0e0b5, b/109505019, b/188693139).
Modifiche alle API
- È stata aggiunta la nuova classe
CollectionNavType<T>
astratta, una sottoclasseNavType<T>
per argomenti basati su raccolte come elenco, array e mappe. (Ic6d63, b/188693139). - Tutti gli array
NavType
predefiniti (IntArrayType
,LongArrayType
,FloatArrayType
,BoolArrayType
eStringArrayType
) ora sono di tipoCollectionNavType
(Idcf79, b/188693139) NavType
ora fornisce una nuova APIvalueEquals
aperta che determina se due valori dello stesso tipo sono uguali. (I6cb97, b/327229511).
Correzioni di bug
- I parametri di query nei link diretti ora consentono valori sotto forma di parentesi graffe attorno al nome dell'argomento (ad es.
{argName}
) come valori validi per il tipoNavTypes
basato su stringhe. Questo risolve il problema per cui un valore di questo tipo viene considerato non valido (o l'assenza di valore) per tutti i tipi. (I18302, b/327274038) - Le funzioni
NavController
che supportano route comenavigate
opopBackStack
ora possono associare correttamente le route riempite con gli argomenti dell'arrayNavTypes
. (Iea805, b/327229511).
Versione 2.8.0-alpha04
6 marzo 2024
androidx.navigation:navigation-*:2.8.0-alpha04
viene rilasciato. La versione 2.8.0-alpha04 contiene questi commit.
Nuove funzionalità
- Ora puoi specificare il
SizeTranform
per le transizioni in Scrittura navigazione definendole come parte dell'inizializzazione delle funzionicomposable
e/onavigation
. (I91062, b/296912651)
Correzioni di bug
- Risolto il problema per cui
NavHost
nella navigazione di Scrivi non mostrava correttamente la transizione quando si utilizzava Indietro di sistema senza gesto. (Iceeae, b/325998468).
Versione 2.8.0-alpha03
21 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha03
viene rilasciato. La versione 2.8.0-alpha03 contiene questi commit.
Modifiche alle API
NavBackStackEntry.savedStateHandle
ora è contrassegnato come@MainThread
perché utilizza il codice che deve comunque essere presente nel thread principale. (Ibb988, b/299523245).
Correzioni di bug
- Risolto un problema in Navigazione che causava lo spostamento di
NavGraph
ViewModels inDESTROYED
troppo presto perché ilViewModel
della voce associata non faceva parte dello stato salvato. (Ib6bb7, b/317581849).
Aggiornamento delle dipendenze
- Navigazione Compose ora dipende da Compose 1.7.0-alpha03.
Versione 2.8.0-alpha02
7 febbraio 2024
androidx.navigation:navigation-*:2.8.0-alpha02
viene rilasciato. La versione 2.8.0-alpha02 contiene questi commit.
Nuove funzionalità
- Navigazione Compose ora fornisce il supporto per il sistema predittivo in-app tramite le nuove API
SeekableTransitionState
di Composer-animation. In questo modo puoi utilizzare il gesto Indietro per visualizzare la destinazione precedente con la Transizione personalizzata prima di decidere se eseguire il commit della transazione tramite il gesto completato o annullarla. (I8b8e9).
Versione 2.8.0-alpha01
24 gennaio 2024
androidx.navigation:navigation-*:2.8.0-alpha01
viene rilasciato. La versione 2.8.0-alpha01 contiene questi commit.
Correzioni di bug
- Risolto il problema di fuga di
BackStackState
in cui più chiamatesaveState
su una destinazione avrebbero comportato il salvataggio di più stati, ma è stato possibile ripristinare solo il primo. (I598b0, b/309559751) - Risolto il problema per cui gli argomenti non di tipo Stringa non venivano visualizzati correttamente quando si utilizzavano gli helper
NavigationUI
per compilare il titolo delle barre delle app. (#636, b/316676794)
Aggiornamento delle dipendenze
- Ora Scrittura per la navigazione dipende dalla risoluzione di un problema che potrebbe causare un'animazione con scalabilità imprevista di Scrivi
1.7.0-alpha01
. (b/297258205)
Contributi esterni
- Grazie a SimonMarquis per aver risolto il problema di visualizzazione per gli argomenti non stringa quando utilizzi gli helper
NavigationUI
per completare il titolo delle barre delle app.
Versione 2.7.7
Versione 2.7.7
7 febbraio 2024
androidx.navigation:navigation-*:2.7.7
viene rilasciato. La versione 2.7.7 contiene questi commit.
Correzioni di bug
- Backup eseguito da Navigazione
2.8.0-alpha01
: risoluzione del problema diBackStackState
fuga di dati in cui più chiamatesaveState()
su un singoloNavBackStackEntry
avrebbero comportato il salvataggio di più stati, ma è stato possibile ripristinare solo il primo stato salvato. (I598b0, b/309559751) - Backport eseguito da Navigazione
2.8.0-alpha01
: è stato risolto un problema per cui gli argomenti non-String non venivano visualizzati correttamente quando si utilizzavano gli helperNavigationUI
per completare il titolo delle barre dell'app. (#636, b/316676794)
Contributi esterni
- Grazie a SimonMarquis per aver risolto il problema di visualizzazione per gli argomenti non stringa quando utilizzi gli helper
NavigationUI
per completare il titolo delle barre delle app.
Versione 2.7.6
Versione 2.7.6
13 dicembre 2023
androidx.navigation:navigation-*:2.7.6
viene rilasciato. La versione 2.7.6 contiene questi commit.
Correzioni di bug
- La funzione
equals()
NavGraph
ora considera correttamente i nodi dell'altro grafico anziché solo quello chiamante. In questo modo i grafici che hanno nodi con ID diversi non saranno più considerati uguali (I401cb, b/311414915)
Versione 2.7.5
Versione 2.7.5
1° novembre 2023
androidx.navigation:navigation-*:2.7.5
viene rilasciato. La versione 2.7.5 contiene questi commit.
Miglioramenti del rendimento
- Il confronto di due grafici ha notevolmente migliorato le prestazioni (in termini di tempo e numero di allocazioni) Ciò significa che chiamate come
setGraph
, che confrontano internamente il nuovo grafico con quello esistente, sono molto più veloci e comportano meno frame ignorati. Grazie a Michał Z per l'analisi approfondita che ha contribuito a questo miglioramento. (I6ad62). NavHost
ora eseguirà il rendering della destinazione iniziale sul primo passaggio della composizione invece di dover attendere il secondo passaggio per leggere lo stato aggiornato. (I439a7, b/304852206).
Correzioni di bug
- Risolto il problema per cui lo stack precedente veniva visualizzato se si chiamava
setGraph
più di una volta con lo stesso grafico solo se nel grafico era presente una destinazione che conteneva un'azione che collegava due destinazioni. (Ieaed7) - Le finestre di dialogo che sono state esplorate e ignorate in rapida successione non faranno più parte dell'elenco di
NavController.visibleEntries
. (I67586, b/287969970) - Quando una voce appare come popup seguita da una modifica alla configurazione, il valore
ViewModel
della voce verrà cancellato correttamente sesaveState
è falso. (Idf242, b/298164648). - Risolto il 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 della 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 e viene risolto un problema per cui le istanze
ViewModel
dei frammenti nidificati non venivano cancellate durante la chiamata aclearBackStack
.
Versione 2.7.4
Versione 2.7.4
4 ottobre 2023
androidx.navigation:navigation-*:2.7.4
viene rilasciato. La versione 2.7.4 contiene questi commit.
Nuove funzionalità
- È stato aggiunto il supporto per
popUpTo
dell'uso di route con argomenti per consentire di tornare a una voce specifica che utilizza quegli argomenti esatti, corrispondente al supporto trovato inpopBackStack
. (I731f4, b/299255572)
Correzioni di bug
- Risolvi il problema per cui l'interruzione della navigazione con un'altra navigazione con
popUpTo
provocherà l'arresto anomalo diFragmentNavigator
. (I3c848, b/301887045) - È stato risolto il problema per cui la pressione prolungata del sistema causava l'aggiornamento non corretto di
currentDestination
in modo che corrisponda al frammento visualizzato. (Id0d6c, b/289877514) - Ora il ciclo di vita di
DialogFragment
verrà spostato correttamente nello statoRESUMED
quando la finestra di dialogo in alto verrà ignorata. (I88f0d, b/301811387).
Versione 2.7.3
Versione 2.7.3
20 settembre 2023
androidx.navigation:navigation-*:2.7.3
viene rilasciato. La versione 2.7.3 contiene questi commit.
Correzioni di bug
- Risolto il problema di 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
androidx.navigation:navigation-*:2.7.2
viene rilasciato. La versione 2.7.2 contiene questi commit.
Correzioni di bug
- La navigazione ora dipende dal ciclo di vita
2.6.2
; la correzione di un'interazione trarememberSaveable
eNavHost
di Scrittura Navigazione potrebbe causare il ripristino corretto dello statorememberSaveable
delle destinazioni e di qualsiasi istanzaSavedStateHandle
di proprietà diViewModel
dopo l'interruzione del processo e la ricreazione. (b/298059596, b/289436035) - Risolto il problema durante la visualizzazione simultanea di più finestre di dialogo in Scrittura navigazione, in cui quelle parzialmente oscurate (ad es. non la finestra più in alto) erano nello stato Ciclo di vita
CREATED
anzichéSTARTED
. (aosp/2728520, b/289257213) - Risolto il problema che causava la visualizzazione di più finestre di dialogo in Scrittura navigazione contemporaneamente, per cui, se chiudi la finestra di dialogo più in alto, questa veniva bloccata nello stato Ciclo di vita
STARTED
anziché essere spostata correttamente inRESUMED
. (aosp/2629401, b/286371387) - Navigazione sicura Args non crea più un'istanza della sua attività con impazienza 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
androidx.navigation:navigation-*:2.7.1
viene rilasciato. La versione 2.7.1 contiene questi commit.
Correzioni di bug
- È stato risolto un problema di navigazione con Compose per cui, quando si utilizzava un
Scaffold
, era possibile ricevere un errore per il tentativo di accesso a unLifecycle.State.DESTROYED
ViewModel
. (I1dc11, b/268422136)
Versione 2.7.0
Versione 2.7.0
9 agosto 2023
androidx.navigation:navigation-*:2.7.0
viene rilasciato. La versione 2.7.0 contiene questi commit.
Modifiche importanti dalla versione 2.6.0
Animazioni da accompagnatore
Ora che AnimatedContent
è stabile, siamo riusciti a spostare il codice da Accompanist Navigation Animation direttamente a Navigation Compose.
Ciò significa che tutto il supporto per la configurazione delle transizioni personalizzate esistente in AnimatedNavHost
è supportato direttamente in NavHost
.
Non verranno apportate ulteriori modifiche ad Accompanist Navigation Animation e la ritireremo formalmente a breve, insieme alle indicazioni su come eseguire la migrazione stessa 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 di Accompanist alpha (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 INTERROTTA e RIPRESA. (Icb6de, b/279118447)
Aggiornamenti delle dipendenze
- La navigazione ora dipende da Scrivi
1.5.0
a partire da1.1.0
.
Versione 2.7.0-rc01
26 luglio 2023
androidx.navigation:navigation-*:2.7.0-rc01
viene rilasciato. La versione 2.7.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui i lambda
EnterTransition
eExitTransition
creati come parte diNavHost
potevano potenzialmente rimanere in memoria anche dopo la rimozione diNavHost
dalla composizione. (I893d0)
Problemi noti
- Si è verificato un problema in Navigation 2.6.x che quando si naviga con popUpTo è possibile che si verifichi un
IllegalArgumentException
. È possibile che questa eccezione possa essere evitata ristrutturando il grafico, come suggerito qui. (b/287133013)
Versione 2.7.0-beta02
28 giugno 2023
androidx.navigation:navigation-*:2.7.0-beta02
viene rilasciato. La versione 2.7.0-beta02 contiene questi commit.
Correzioni di bug
- Scrittura per la navigazione ora ha l'ordine Z corretto per le transizioni personalizzate che utilizzano la navigazione con l'opzione
popUpTo
.(/Ib1c3a, b/285153947)
Versione 2.7.0-beta01
7 giugno 2023
androidx.navigation:navigation-*:2.7.0-beta01
viene rilasciato. La versione 2.7.0-beta01 contiene questi commit.
Correzioni di bug
NavHost
in Scrittura Navigazione ora intercetta correttamente le chiamate a ritroso di sistema anche dopo cheActivity
è statoSTOPPED
eRESUMED
. (Icb6de, b/279118447)
Versione 2.7.0-alpha01
24 maggio 2023
androidx.navigation:navigation-*:2.7.0-alpha01
viene rilasciato. La versione 2.7.0-alpha01 contiene questi commit.
Animazioni da accompagnatore
Ora che AnimatedContent
è stabile, siamo riusciti a spostare il codice da Accompanist Navigation Animation direttamente a Navigation Compose.
Ciò significa che tutto il supporto per la configurazione delle transizioni personalizzate esistente in AnimatedNavHost
è supportato direttamente in NavHost
.
Non verranno apportate ulteriori modifiche ad Accompanist Navigation Animation e la ritireremo formalmente a breve, insieme alle indicazioni su come eseguire la migrazione stessa 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 di Accompanist alpha (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 l'esplorazione conpopUpTo
e l'estrazione di un frammento dallo stack posteriore senza ricreare la 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
androidx.navigation:navigation-*:2.6.0
viene rilasciato. La versione 2.6.0 contiene questi commit.
Modifiche importanti alla navigazione rispetto alla versione 2.5.0
- Gli
arguments
diNavBackStackEntry
e iarguments
passati a unOnDestinationChangedListener
ora sono solo una copia degli argomenti immutabili creati quando hai raggiunto la destinazione. Ciò significa che eventuali modifiche apportate a questi bundle non verranno applicate agli accessi successivi aarguments
o ad altre istanzeOnDestinationChangedListener
. NavDeepLink
ora supporta i valori predefiniti per gli array, il che consente il supporto per 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 sostituireserializeAsValue
per serializzare un valore in una stringa, consentendo l'incapsulamento completo sia della serializzazione che della deserializzazione (tramiteparseValue
) nella classeNavType
.StringType
ora sostituisce questo metodo per chiamareUri.encode
sulString
specificato.
Modifiche importanti a Navigation Compose dalla versione 2.5.0
- Durante l'anteprima di un componibile con
NavHost
, per impostazione predefinita verrà visualizzato il valorestartDestination
di NavGraph. - Ora
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
supportano tutte le route con argomenti parzialmente o completamente compilati. Tieni presente che gli argomenti devono essere una corrispondenza esatta con gli argomenti della voce. - Se si tenta di creare un
NavDeepLink
vuoto utilizzando il Kotlin DSLnavDeepLink
, verrà visualizzato un avviso 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 frammenti dalla versione 2.5.0
NavHostFragment
non intercetta più il pulsante Indietro del sistema. In questo modo l'oggettoFragmentManager
sottostante può gestire il sistema. In questo modo Fragment1.7.0-alpha01
e versioni successive possono fornire un'animazione Indietro predittiva in-app sui dispositivi Android U.- Quando utilizzi Navigazione con frammenti, il tentativo di eseguire manualmente un'operazione
FragmentTransaction
che aggiunge un frammento allo stack precedente diFragmentManager
genererà unIllegalArgumentException
. Dovresti sempre aggiungere frammenti tramite l'APInavigate()
. - Quando utilizzi la stringa esatta
${applicationId}
come segnaposto negli attributiapp:data
eapp:dataPattern
nell'elemento attività di un file XML di navigazione, il segnaposto verrà compilato automaticamente con il valorepackageName
del contesto al momento dell'inflazione. FragmentNavigator
ora utilizza le API di transizione durante la navigazione e l'apertura diNavBackStackEntries
. Questo significa che ilLifecycle
diNavBackStackEntry
attenderà il completamento degli effetti speciali del frammento di entrata e di uscita prima di spostare gli effetti specialiLifecycle.State
.DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e l'apertura diNavBackStackEntries
. Ciò significa che ilLifecycle
diNavBackStackEntry
attenderà che ilLifecycle
diDialogFragment
passi aDESTROYED
prima di passare aDESTROYED
stesso.NavHostFragment
ora 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 pubblicazione delle caratteristiche di Google Play.
- La 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 e successive.
Modifiche importanti a NavigationUI dalla versione 2.5.0
- Quando passi l'ID di un grafico di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione iniziale di quel grafico di navigazione come una destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafico come destinazione di primo livello. Il comportamento di trasmissione dell'ID di una singola destinazione rimane invariato. Questa stessa funzionalità è disponibile per il tuo codice tramite la nuova funzioneisTopLevelDestination
suAppBarConfiguration
. - Le integrazioni
setupWithNavController
inNavigationUI
per l'utilizzo della barra dell'app in alto ora analizzeranno i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei valori stringa anziché generare 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
androidx.navigation:navigation-*:2.6.0-rc02
viene rilasciato. La versione 2.6.0-rc02 contiene questi commit.
Correzioni di bug
- Risolto il problema di navigazione nei frammenti per cui l'esplorazione con
popUpTo
e l'estrazione di un frammento dallo stack posteriore senza ricreare la visualizzazione causava l'interruzione del funzionamento del sistema. (Ieb8d4, b/281726455).
Versione 2.6.0-rc01
10 maggio 2023
androidx.navigation:navigation-*:2.6.0-rc01
viene rilasciato. La versione 2.6.0-rc01 contiene questi commit.
Correzioni di bug
- Risolto un problema nella navigazione con frammenti per cui la rimozione di un frammento tramite navigazione con
popUpTo
nel callback del ciclo di vitaonResume()
causava unIllegalStateException
. (I21884, b/279644470)
Versione 2.6.0-beta01
19 aprile 2023
androidx.navigation:navigation-*:2.6.0-beta01
viene rilasciato. La versione 2.6.0-beta01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora fornisce un'implementazionetoString
personalizzata. (Iff00b)
Correzioni di bug
- Quando utilizzi Navigazione con frammenti, il tentativo di eseguire manualmente un'operazione
FragmentTransaction
che aggiunge un frammento allo stack precedente diFragmentManager
genererà unIllegalArgumentException
. Dovresti sempre aggiungere frammenti tramite l'APInavigate()
. (I6d38e). - Se
navigate
aggiunge una voce epopBackStack
che la rimuove nello stesso frame, la voce principale risultante nello stack precedente ora riporta regolarmente l'elementoLifecycle.State
diRESUMED
. (Id8067, b/276495952)
Versione 2.6.0-alpha09
5 aprile 2023
androidx.navigation:navigation-*:2.6.0-alpha09
viene rilasciato. La versione 2.6.0-alpha09 contiene questi commit.
Correzioni di bug
- Sono stati corretti i controlli della route non valida, in modo che, se un
NavDestination
contieneNavArgument
non null, la route di questa destinazione deve contenere segnaposto per gli argomenti con lo stesso nome delNavArgument
non null. (Ic62bf, b/274697949) - Le navigazioni dei link diretti basate su
Action/MimeType
non riusciranno se nell'operazione di navigazione manca un valoreNavArgument
non nullo richiesto dalNavDestination
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 dei grafici attuali e le destinazioni dello stack posteriore con nuove istanze. È stato corretto un arresto anomalo durante l'utilizzo dionLaunchSingleTop
senza salvare lo stato in Navigation Compose. Questo errore causa anche l'errore di navigazione verso destinazioni associate alle build del grafico principale e allo stack precedente errato. (I5bc58, b/275258161, b/275407804).
Versione 2.6.0-alpha08
22 marzo 2023
androidx.navigation:navigation-*:2.6.0-alpha08
viene rilasciato. La versione 2.6.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHostFragment
ora consente di recuperareNavController
non appenaNavHostFragment
viene collegato aFragmentManager
, anziché solo dopoonCreate()
. (Ic6382, b/220186282).
Correzioni di bug
- È stato corretto un
NullPointerException
durante l'apertura di un grafico nidificato che include un argomento che non supporta valori null. (6b3581, b/249988437) - Quando si utilizza il sistema dopo aver effettuato una navigazione con
popUpTo
, lo stato diNavController
tornerà alla voce corretta. (I3a8ec, b/270447657) FragmentNavigator
ora inserirà correttamente le voci quando lo stack posteriore verrà richiamato tramite il system back opopBackStack()
e se la transazione utilizza o meno gli effetti per il frammento. (I81bdf)- L'aggiunta di frammenti al
FragmentManager
diFragmentNavigator
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 saveState
1.2.1
. (078e4e). - La navigazione ora dipende da ProfileInstaller
1.3.0
. (512f0c).
Versione 2.6.0-alpha07
8 marzo 2023
androidx.navigation:navigation-*:2.6.0-alpha07
viene rilasciato. La versione 2.6.0-alpha07 contiene questi commit.
Correzioni di bug
- Le varianti dell'API
getBackStackEntry
,popBackStack
eclearBackStack
che prendono route ora utilizzano pattern di route con argomenti con valori null e parametri di query con valori null (I22294, b/269302500) - Risolto il problema per cui la chiamata di
clearBackStack()
daNavController
non cancellava lo stato salvato nel gestore di frammenti associato allo stack di backup cancellato. (Ic1cce, b/271190202). - È stata corretta una regressione in 2.6.0-alpha06 che causava l'evidenziazione dell'elemento
MenuItem
errato inBottomNavigationView
quando si utilizzava Sistema indietro tra le schede. (I634f6, b/270447657) - È stata corretta la regressione in 2.6.0-alpha06 che impediva lo spostamento di
NavBackStackEntry
nello stato RIPRENDITO quando si utilizzavanoAnimation
. (Ib3589, b/269646882).
Versione 2.6.0-alpha06
22 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha06
viene rilasciato. La versione 2.6.0-alpha06 contiene questi commit.
Nuove funzionalità
- Durante l'anteprima di un componibile con
NavHost
, per impostazione predefinita verrà visualizzato il valorestartDestination
di NavGraph. (I2b89f)
Modifiche alle API
- Tutti gli sovraccarichi di
NavController
navigate
ora sono annotati con@MainThread
per assicurare che vengano chiamati nel thread principale. (I2c0b0, b/263427111).
Correzioni di bug
- È stato risolto il problema di arresto anomalo durante il tentativo di navigazione durante l'utilizzo della navigazione a frammenti dinamici. (I3ee29, b/268360479)
- Risolto 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
- Se utilizzi la navigazione con frammenti, il ciclo di vita di
NavBackStackEntry
non riesce a raggiungereRESUMED
quando vengono utilizzate le APIAnimation
. (b/269646882) - Quando utilizzi Navigazione con frammenti e navighi con
BottomNavigation
, se tenti di ripristinare uno stack posteriore con più voci,BottomMenuItem
non viene aggiornato correttamente. (b/270447657) - Quando utilizzi la navigazione con frammenti, dopo il ripristino dello stato
NavBackStackEntry
Lifecycle
non ottieneDESTROYED
se il suo frammento èDESTROYED
. (b/270610768)
Versione 2.6.0-alpha05
8 febbraio 2023
androidx.navigation:navigation-*:2.6.0-alpha05
viene rilasciato. La versione 2.6.0-alpha05 contiene questi commit.
Nuove funzionalità
- Ora
NavController.popBackStack(route)
,NavController.getBackStackEntry(route)
,NavController.clearBackStack(route)
supportano tutte le route con argomenti parzialmente o completamente compilati. Tieni presente che gli argomenti devono essere una corrispondenza esatta con gli argomenti della voce. (Iebd28, Ic678c, I3b37b, b/257514373) FragmentNavigator
ora utilizza le API di transizione durante la navigazione e l'apertura diNavBackStackEntries
. Questo significa che ilLifecycle
diNavBackStackEntry
attenderà il completamento degli effetti speciali del frammento di entrata e di uscita prima di spostare gli effetti specialiLifecycle.State
. (I3cb19, b/238686802).DialogFragmentNavigator
ora utilizza le API di transizione durante la navigazione e l'apertura diNavBackStackEntries
. Ciò significa che ilLifecycle
diNavBackStackEntry
attenderà che ilLifecycle
diDialogFragment
passi aDESTROYED
prima di passare aDESTROYED
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
.ComposeNavigator
ora mostra anche il callbackonTransitionComplete()
per contrassegnare come completata un'operazioneNavBackStackEntry
che ha eseguito un'operazione di navigazione opopBackStack
. (I02062, I718db, b/257519195)
Correzioni di bug
- Ora lo stato del navigatore è no-op 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, a partire dalla destinazione originale fino al relativostartDestination
, verranno aggiunte correttamente solo all'inizio dell'stack di backstack. (Id4bea, b/253256629). - Ora la navigazione sostituirà correttamente l'istanza
DialogFragment
quando si naviga verso la stessa destinazione con il flaglaunchSingleTop
impostato su true. (I45b5a, b/149572817). - Navigazione SafeArgs non causa più un errore di compilazione quando si utilizzano argomenti che contengono esattamente 19 caratteri. (Id60bc, b/257110095)
Versione 2.6.0-alpha04
9 novembre 2022
androidx.navigation:navigation-*:2.6.0-alpha04
viene rilasciato. La versione 2.6.0-alpha04 contiene questi commit.
Nuove funzionalità
- Le sottoclassi personalizzate di
NavType
ora possono sostituireserializeAsValue
per serializzare un valore in una stringa, consentendo l'incapsulamento completo sia della serializzazione che della deserializzazione (tramiteparseValue
) nella classeNavType
.StringType
ora sostituisce questo metodo per chiamareUri.encode
sulString
specificato. (Ie5213, b/247637434) NavigationUI
ora fornisce i log quando non riesce a navigare tramite unMenuItem
selezionato. (I2af5a, b/247730357).
Correzioni di bug
- I link diretti di navigazione vengono ora analizzati lentamente anziché all'inizializzazione dei grafici, il che potrebbe migliorare le prestazioni dell'app all'avvio. (Iab0ab).
- È stato risolto l'arresto anomalo causato dall'esplorazione dopo il collegamento diretto a una destinazione con argomenti predefiniti nulli. (I51c24, b/243183636).
Aggiornamento delle dipendenze
- Il supporto della navigazione per i moduli delle funzionalità dinamiche ora dipende dalla libreria granulare di pubblicazione delle caratteristiche di Google Play. (Ib4ddc)
- La 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 e successive. (I47e49)
Versione 2.6.0-alpha03
24 ottobre 2022
androidx.navigation:navigation-*:2.6.0-alpha03
viene rilasciato. La versione 2.6.0-alpha03 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.5.3
:NavHost
non causerà più unNoSuchElementException
se non è disponibile una destinazione per la scrittura diCrossfade
. Ora salterà solo la composizione. (Ieb46e, b/253299416). - Da Navigazione
2.5.3
: è stato risolto un problema per cui lo stato della Scrittura salvato (ad esempio, gli utilizzi dirememberSaveable
) non veniva dimenticato e rimosso quando una destinazione veniva scollegata dallo stack posteriore. (I64949)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal frammento
1.5.4
. (Icd424)
Versione 2.6.0-alpha02
5 ottobre 2022
androidx.navigation:navigation-*:2.6.0-alpha02
viene rilasciato. La versione 2.6.0-alpha02 contiene questi commit.
Modifiche del comportamento
- Quando passi l'ID di un grafico di navigazione a
AppBarConfiguration
(ad esempio tramite unMenu
),NavigationUI
ora considera solo la destinazione iniziale di quel grafico di navigazione come una destinazione di primo livello, anziché contrassegnare erroneamente ogni destinazione all'interno del grafico come destinazione di primo livello. Il comportamento di trasmissione dell'ID di una singola destinazione 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 quando ti sposti verso una destinazione
FloatingWindow
, ad esempio una finestra di dialogo. (I4cde8, b/240308330).
Versione 2.6.0-alpha01
7 settembre 2022
androidx.navigation:navigation-*:2.6.0-alpha01
viene rilasciato. La versione 2.6.0-alpha01 contiene questi commit.
Nuove funzionalità
- Le integrazioni
setupWithNavController
inNavigationUI
per l'utilizzo della barra dell'app in alto ora analizzeranno i valoriR.string
per gli argomentiReferenceType
trovati inandroid:label
nei valori stringa anziché generare il numero intero della risorsa generato automaticamente. (I5f803, b/167959935) NavDeepLink
ora supporta i valori predefiniti per gli array, il che consente il supporto per 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 attività di un file XML di navigazione, il segnaposto verrà compilato automaticamente con il valorepackageName
del contesto al momento dell'inflazione. (Iaabde, b/234223561). - Se si tenta di creare un
NavDeepLink
vuoto utilizzando il Kotlin DSLnavDeepLink
, verrà visualizzato un avviso 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 nel formatoandroid:label="{arg}"
in una stringa. Supporta gli argomentiReferenceType
mediante l'analisi dei valoriR.string
nei relativi valori Stringa. (I07d89, b/236269380).
Modifiche del comportamento
- I
arguments
di NavBackStackEntry e iarguments
passati a unOnDestinationChangedListener
sono ora solo una copia degli argomenti immutabili creati quando hai raggiunto la destinazione. Ciò significa che eventuali modifiche apportate a questi bundle non verranno applicate agli accessi successivi aarguments
o ad altre istanzeOnDestinationChangedListener
. (I676f5).
Correzioni di bug
- Da Navigazione
2.5.2
: la navigazione dinamica ora tenta di installare correttamente le destinazioni delle 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 verso la stessa destinazione e impostare il flaglaunchSingleTop
su true. (I5a2f1, b/237374580). - Da Navigazione
2.5.2
: è stato risolto il problemaIllegalStateException
a causa dell'accesso a un grafico nidificato doppio che condivide un elemento principale con una nuova destinazione iniziale aperta. (I9f7cb, b/243778589).
Versione 2.5
Versione 2.5.3
24 ottobre 2022
androidx.navigation:navigation-*:2.5.3
viene rilasciato. La versione 2.5.3 contiene questi commit.
Correzioni di bug
NavHost
non causerà più unaNoSuchElementException
quando non sarà disponibile una destinazione per la scrittura diCrossfade
. Ora salterà solo la composizione. (Ieb46e, b/253299416).- Risolto il problema per cui lo stato salvato della Scrittura (ad es. gli utilizzi di
rememberSaveable
) non veniva dimenticato e rimosso quando una destinazione veniva scollegata dallo stack precedente. (I64949)
Versione 2.5.2
7 settembre 2022
androidx.navigation:navigation-*:2.5.2
viene rilasciato. La versione 2.5.2 contiene questi commit.
Correzioni di bug
- La navigazione dinamica ora tenta correttamente di installare le destinazioni delle attività da altri moduli prima di accedervi. (Ia2c16, b/240292838).
- Ora la navigazione sostituirà correttamente l'istanza di Fragment quando si naviga verso la stessa destinazione e si imposta il flag
launchSingleTop
su true. (I5a2f1, b/237374580). - Risolto il problema di
IllegalStateException
causato dall'accesso a un grafico nidificato doppio che condivide un elemento principale con una nuova destinazione iniziale aperta. (I9f7cb, b/243778589).
Aggiornamento delle dipendenze
- La navigazione
2.5.2
ora dipende dal frammento1.5.2
. (aosp/2178734)
Versione 2.5.1
27 luglio 2022
androidx.navigation:navigation-*:2.5.1
viene rilasciato. La versione 2.5.1 contiene questi commit.
Correzioni di bug
Navigation Safe Args
non causerà più avvisi di ritiro nelle classi generate quando si utilizzano 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 dal frammento
1.5.1
. (I56177)
Versione 2.5.0
29 giugno 2022
androidx.navigation:navigation-*:2.5.0
viene rilasciato. La versione 2.5.0 contiene questi commit.
Modifiche importanti dalla versione 2.4.0
- Integrazione di CreationExtras.
Navigation
ora è in grado di fornire unViewModelProvider.Factory
stateless tramiteCreationExtras
del ciclo di vita2.5.0
.
Navigazione SafeArgs
Navigation Safe Args
ha eseguito l'upgrade della dipendenzaAndroid Gradle Plugin
in modo che utilizzi7.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'NavController
.
Versione 2.5.0-rc02
15 giugno 2022
androidx.navigation:navigation-*:2.5.0-rc02
viene rilasciato. La versione 2.5.0-rc02 contiene questi commit.
Correzioni di bug
- È stato risolto un arresto anomalo causato dal passaggio rapido tra le destinazioni in basso quando si utilizzava Scrittura per la navigazione
NavHost
. (I3979a, b/234054916) Navigation SafeArgs
non si arresta più in modo anomalo quando utilizzi unoapplicationIdSuffix
e uno spazio dei nomi senzaapplicationId
presente o quandoapplicationId
e lo spazio dei nomi differiscono. (I754b1, b/233119646)NavArgument
ora dispone di una funzionetoString()
personalizzata per mostrare i valori interni dell'argomento. (I900a8)
Versione 2.5.0-rc01
11 maggio 2022
androidx.navigation:navigation-*:2.5.0-rc01
viene rilasciato. La versione 2.5.0-rc01 contiene questi commit.
Nuove funzionalità
- È stata aggiunta una nuova regola lint per evitare il posizionamento di elementi
<deeplink>
all'interno degli elementi<activity>
nel filenavigation.xml
.(Ic15a5, b/178403185)
Correzioni di bug
- Gli ambiti componibili in
NavHost
eDialogHost
ora vengono smaltiti nell'ordine previsto, ovvero gli ambiti componibili interni vengono smaltiti prima dei componenti componibili esterni. (I157e6). - Il file Navigazione in SafeArgs ora utilizza
PathSensitivity.RELATIVE
inArgumentsGenerationTask
per consentire la rilocazione della cache. Ciò significa che la voce della cache può ora essere riutilizzata da una build CI a una build locale. (I5f67c, b/173420454). - La regola lint
UnrememberedGetBackStackEntryDetector
è stata aggiornata per garantire che la chiamataremember
che circonda la chiamata agetBackStackEntry()
passi anche in un oggettoNavBackStackEntry
come chiave.(Ib7081, b/227382831)
Versione 2.5.0-beta01
20 aprile 2022
androidx.navigation:navigation-*:2.5.0-beta01
viene rilasciato. La versione 2.5.0-beta01 contiene questi commit.
Correzioni di bug
DialogNavigator
ora utilizzapopWithTransition
durante l'esecuzione di una chiamatadismiss()
. Questa operazione corregge una condizione di gara quando si utilizza un elementoViewModel
all'interno di una destinazionedialog
, che causava unIllegalStateException
quando si chiudeva la finestra di dialogo utilizzando indietro del sistema 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
; viene corretto unIllegalStateException
quando si nidifica unaNavHost
all'interno di un'altraNavHost
in una scheda di navigazione inferiore non principale quando si utilizzano più stack precedenti.
Versione 2.5.0-alpha04
6 aprile 2022
androidx.navigation:navigation-*:2.5.0-alpha04
viene rilasciato. 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 utilizzi NavHost nidificato, il campoNavHost
interno ora dovrebbe animarsi correttamente. (I4ba2b, b/225394514). - L'
StateFlow
visibleEntries
fornito daNavController
ora si basa sullo stato del ciclo di vita massimo della voce anziché sullo stato del ciclo di vita attuale. Ciò significa che, anche se il ciclo di vita dell'host dinavController
è inferiore a AVVIATO, l'elenco degli interi visibili rimarrà invariato. (I9e2a8, b/225394514). SavedStateViewFactory
ora supporta l'uso diCreationExtras
anche quando è stato inizializzato con unSavedStateRegistryOwner
. Se vengono forniti extra, gli argomenti inizializzati vengono ignorati. (I6c43b, b/224844583).NavDeepLink
ora può analizzare l'URI con un singolo parametro di query senza valore. (I0efe8, b/148905489).- La stringa vuota ora è considerata come argomenti validi nei link diretti. (I70a0d, b/217399862)
Navigation Safe Args
non si arresta in modo anomalo quando vengono utilizzati gli spazi dei nomi e non è presenteAndroidManifest.xml
. (I17ccf, b/227229815).
Versione 2.5.0-alpha03
23 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha03
viene rilasciato. La versione 2.5.0-alpha03 contiene questi commit.
Modifiche alle API
- Ora puoi passare in
CreationExtras
aby navGraphViewModels
per creare unViewModel
. (I29217, b/217618359)
Correzioni di bug
- Ora
NavDeepLinks
supporta correttamente i caratteri di nuova riga codificati incorporati in URI di route/link diretti. (I513d1, b/217815060). - Ora
CreationExtras
funzionerà correttamente se utilizzato conNavBackStackEntries
per creare ViewModel. (I69161, b/217617710) - Navigazione sicura di Args ora supporta l'utilizzo dello spazio dei nomi definito in
build.gradle
al posto del pacchetto nel file AndroidManifest. (I659ef, b/217414933)
Versione 2.5.0-alpha02
9 febbraio 2022
androidx.navigation:navigation-*:2.5.0-alpha02
viene rilasciato. La versione 2.5.0-alpha02 contiene questi commit.
Correzioni di bug
- Da Navigazione
2.4.1
: oraNavHostFragment
imposterà correttamenteOnBackPressedDispatcher
quando utilizzi l'associazione di visualizzazioni con grafici nidificati. (Ifbb51, b/214577959) - Da Navigazione
2.4.1
: quando inserisci link diretti tramite piùNavGraph
nidificati, lo stack posteriore ora includerà correttamente le destinazioni di partenza intermedie. (I504c0, b/214383060).
Versione 2.5.0-alpha01
26 gennaio 2022
androidx.navigation:navigation-*:2.5.0-alpha01
viene rilasciato. La versione 2.5.0-alpha01 contiene questi commit.
Nuove funzionalità
NavBackStackEntry
ora si integra con gli extra ViewModel Creation, introdotti nell'ambito del ciclo di vita2.5.0-alpha01
. (Ib9fe2, b/207012490).
Correzioni di bug
- Risolto il problema per cui l'accesso a un
ViewModel
creato tramiteby navGraphViewModels()
daonCreate()
di un frammento non riusciva con unIllegalStateException
. (I8a14d). - Gli argomenti
NavDeepLink
non decodificano più inutilmente due argomenti, il che significa che gli argomenti corretti vengono ora passati alla destinazione finale. (I31b0a, b/210711399).
Argomenti sicuri
- Safe Args ora dipende dal plug-in Android Gradle versione 7.0.4. Ciò significa che Navigation Safe Args non sarà più compatibile con le versioni di Android Studio precedenti alla 7.0, ma ora è compatibile con il plug-in Android per Gradle 7.1.0 e versioni successive. (I41c88, b/213086135, b/207670704).
Versione 2.4.2
Versione 2.4.2
6 aprile 2022
androidx.navigation:navigation-*:2.4.2
viene rilasciato. La versione 2.4.2 contiene questi commit.
Correzioni di bug
- Backported da Navigazione
2.5.0-alpha03
: oraNavDeepLinks
supporta correttamente i caratteri di nuova riga codificati incorporati in route/URI dei link diretti. (I513d1, b/217815060). - Backup eseguito da Navigazione
2.5.0-alpha03
: Navigazione SafeArgs ora supporta l'uso dello spazio dei nomi definito inbuild.gradle
al posto del pacchetto nel file AndroidManifest. (I659ef, b/217414933) - È stato eseguito il backporting da Navigazione
2.5.0-alpha04
:Navigation Safe Args
non si arresta in modo anomalo quando utilizzi gli spazi dei nomi e non è presenteAndroidManifest.xml
. (I17ccf, b/227229815). - Eseguito il backporting da Navigazione
2.5.0-alpha04
: la stringa vuota ora è considerata come argomenti validi nei link diretti. (I70a0d, b/217399862)
Versione 2.4.1
Versione 2.4.1
9 febbraio 2022
androidx.navigation:navigation-*:2.4.1
viene rilasciato. La versione 2.4.1 contiene questi commit.
Correzioni di bug
- Ora
NavHostFragment
imposterà correttamenteOnBackPressedDispatcher
quando utilizzi l'associazione di visualizzazioni con grafici nidificati. (Ifbb51, b/214577959) - Quando crei link diretti tramite più
NavGraph
nidificati, lo stack posteriore adesso includerà correttamente le destinazioni iniziali intermedie. (I504c0, b/214383060). - Backport eseguito da Navigazione
2.5.0-alpha01
: risolto un problema per cui l'accesso a un ViewModel creato tramiteby navGraphViewModels()
daonCreate()
di un frammento non riusciva 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 ora passati alla destinazione finale. (I31b0a, b/210711399). - Backup eseguito da Navigazione
2.5.0-alpha01
: l'app Args sicuri ora dipende dal plug-in per Android per Gradle versione 7.0.4. Ciò significa che Navigazione sicura Args non sarà più compatibile con le versioni di Android Studio precedenti alla 7.0, ma ora è compatibile con il plug-in Android Gradle 7.1.0 e versioni successive. (I41c88, b/213086135, b/207670704).
Versione 2.4.0
Versione 2.4.0
26 gennaio 2022
androidx.navigation:navigation-*:2.4.0
viene rilasciato. La versione 2.4.0 contiene questi commit.
Modifiche importanti dalla versione 2.3.0
- Tutti gli artefatti di navigazione sono stati riscritti in Kotlin. In questo modo è stata migliorata la nullabilità delle classi che utilizzano valori generici (come le sottoclassi
NavType
). Tutte le funzioni dell'estensione Kotlin che facevano parte degli artefatti-ktx
sono state spostate nei rispettivi elementi principali. Gli artefatti-ktx
continueranno a essere pubblicati, ma sono completamente vuoti. - L'elemento
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza un elementoSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli che utilizza unNavHostFragment
come implementazione, come mostrato nella nostra implementazione di esempio. - Il metodo
currentBackStackEntryAsFlow()
suNavController
fornisce unFlow
che emette ogni volta che cambiaNavBackStackEntry
corrente. Questo flusso può essere utilizzato come alternativa alla gestione manuale di unOnDestinationChangedListener
. - NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntry
visibili comeStateFlow
tramite la proprietà sperimentalevisibleEntries
. - Ora è possibile estendere la classe
NavType
per creare NavTypes personalizzati. I tipi personalizzati sono supportati solo quando si crea il grafico di navigazione in modo programmatico, ad esempio tramite Kotlin DSL del grafico di navigazione. La navigazione ora fornisce le API
findStartDestination()
egetHierarchy()
che possono essere utilizzate per implementare l'UI di navigazione personalizzata.findStartDestination()
è una funzione di estensione diNavGraph
che individuerà la destinazione di partenza effettiva che verrà visualizzata quando aprirai il grafico, anche sestartDestination
è a sua volta unNavGraph
nidificato.getHierarchy()
è una funzione inNavDestination
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 richiesto unBottomNavigationView
sono stati aggiornati per prendere la superclasse introdotta in Material1.4.0
,NavigationBarView
. In questo modo puoi utilizzare questi metodi conNavigationRailView
.Quando aggiungi un elemento
<action>
tramite XML, gli attributi dell'animazione possono utilizzare attributi estratti dal tuo tema utilizzando la sintassiapp:enterAnim="?attr/transitionEnter"
.Args sicuri ora 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 utilizzavano ogni destinazione con un ID intero costante che la identificava in modo univoco dalle destinazioni gemelle e permetteva di raggiungere quella destinazione con navigate()
direttamente o tramite un'azione. Sebbene questo metodo continui a essere valido e utile, in particolare nei casi in cui definisci il grafico di navigazione in XML e sia possibile utilizzare 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 Navigator Kotlin DSL.
Questa release introduce una nuova opzione per identificare in modo univoco una destinazione in un grafico di navigazione tramite il relativo percorso. Un percorso è un String
che definisce il percorso univoco di una destinazione. Tutti i metodi Kotlin DSL che utilizzavano un ID destinazione ora sono deprecati e sostituiti con un'API equivalente che prende una route.
Ogni percorso deve essere trattato come la parte di un "percorso" di un Uri
che definisce la destinazione, ad esempio home
, profile/{userId}
, profile/{userId}/friends
e così via. Quando l'identità di una destinazione è associata a un contenuto specifico, questi argomenti dinamici dovrebbero far parte della route, seguendo le stesse regole dei link diretti impliciti.
Tutte le API NavController
che prima richiedevano solo un ID ora hanno un sovraccarico che prende una route String
. Sono inclusi navigate()
, popBackStack()
, popUpTo()
e getBackStackEntry()
.
Ciò ha avuto alcune implicazioni relative all'API:
- La proprietà Kotlin
popUpTo
su Kotlin DSL è stata ritirata a favore dipopUpToId
. - L'API
getStartDestination()
è stata ritirata a favore digetStartDestinationId()
.
A differenza di quando si naviga per ID, la navigazione per route segue le stesse regole dei link diretti impliciti in quanto consente di raggiungere direttamente qualsiasi destinazione in qualsiasi grafico nidificato, garantendo che queste route siano utilizzabili in progetti con più moduli senza aggiungere esplicitamente un link diretto visibile all'esterno a ogni destinazione.
Scrittura per la navigazione
L'elemento navigation-compose
fornisce l'integrazione tra il componente di navigazione e Jetpack Compose. Utilizza le funzioni @Composable
come destinazioni dell'applicazione.
Questa release fornisce:
- Un componibile
NavHost
che ti permette di creare il tuo grafico di navigazione tramite un Kotlin DSL, utilizzando le destinazionicomposable
edialog
, oltre al supporto per i navigatori facoltativi come quelli del materiale di navigazione accompagnato. - Supporto obbligatorio per la dissolvenza incrociata tra le destinazioni. Puoi utilizzare l'animazione di navigazione accompagnata da per controllare le transizioni di entrata e uscita utilizzando le API sperimentali Compose.
- Limitazione dell'ambito di un
Lifecycle
a ogni destinazione componibile. Ogni destinazione raggiunge lo statoRESUMED
solo al termine di qualsiasi transizione in entrata e passa immediatamente aSTARTED
quando iniziano eventuali transizioni in uscita. In questo modo, puoi evitare tutti i problemi relativi aIllegalStateException
e multi-touch attivando una chiamatanavigate
soltanto 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 resisti alle modifiche alla configurazione e che sia in back stack (quando i contenuti componibili sono altrimenti smaltiti) e un indicatore nelonCleared()
di ViewModel che indica lo smaltimento permanente e la pulizia dello stato associato aNavBackStackEntry
. - Definizione 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 della
NavController
e della sua destinazione dopo decesso e ricreazione dei processi. - Integrazione automatica con il pulsante Indietro del sistema.
Supporto per il passaggio di argomenti, il collegamento di link diretti alle destinazioni e la restituzione di un risultato alle destinazioni precedenti.
Scrivi aiutanti specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire lo stato di sollevamento e collegareNavController
agli elementi componibili all'esterno diNavHost
(ad esempio una barra di navigazione in basso).
val navController = rememberNavController()
Scaffold { innerPadding ->
NavHost(navController, "home", Modifier.padding(innerPadding)) {
composable("home") {
// This content fills the area provided to the NavHost
HomeScreen()
}
dialog("detail_dialog") {
// This content will be automatically added to a Dialog() composable
// and appear above the HomeScreen or other composable destinations
DetailDialogContent()
}
}
}
Per ulteriori informazioni, consulta la Guida di navigazione a Compose.
Più back stack
Il NavController è responsabile della gestione dello stack precedente delle destinazioni, dell'aggiunta delle destinazioni allo stack di destinazione quando navigate()
ti raggiunge e della loro rimozione quando chiami popBackStack()
o attivi il pulsante Indietro del sistema. La classe NavOptions
esistente e l'integrazione negli elementi <action>
del file XML del grafico di navigazione sono state ampliate per supportare il salvataggio e il ripristino dello stack precedente.
Nell'ambito di questa modifica, i metodi NavigationUI
di onNavDestinationSelected()
, BottomNavigationView.setupWithNavController()
e NavigationView.setupWithNavController()
ora salvano e ripristinano automaticamente lo stato delle destinazioni tramite popup, consentendo il supporto di più back stack senza alcuna modifica al codice. Quando utilizzi Navigazione con frammenti, questo è il modo consigliato per l'integrazione con più back stack.
Le API sottostanti per il salvataggio e il ripristino dello stato sono esposte tramite una serie di piattaforme:
Nel file XML di navigazione, l'elemento
<action>
può ora utilizzare gli attributi booleani diapp:popUpToSaveState
eapp:restoreState
per salvare lo stato di qualsiasi destinazione visualizzata tramiteapp:popUpTo
e ripristinare lo stato associato alla destinazione trasmessa 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” />
In
navOptions
Kotlin DSL, puoi aggiungere la proprietà booleanarestoreState
e la proprietà booleanasaveState
nello strumento per la creazione dipopUpTo
:// 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 persetPopUpTo()
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 parametrosaveState
aggiuntivo.Puoi utilizzare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
.
In tutti i casi, NavController
salverà e ripristinerà lo stato di ogni NavBackStackEntry
, incluse le istanze ViewModel
con ambito di navigazione. Le API di Navigator
sono state aggiornate in modo da consentire a ogni Navigator
di supportare il salvataggio e il ripristino del proprio stato.
Modifiche del comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
agliPendingIntent
restituiti dacreatePendingIntent()
, garantendo che questa API funzioni come previsto quando scegli come target Android 12.- La navigazione ora dipende da Ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i metodi che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione con l'applicazione forzata del thread principale introdotta nel ciclo di vita2.3.0
. - I link diretti ora verificano che tutti gli argomenti obbligatori (senza valori predefiniti) siano presenti in
Uri
. - Gli argomenti analizzati di
NavDeepLink
ora considerano il simbolo del cancelletto allo stesso modo dei punti interrogativi come separatori tra i segmenti del percorso, impedendo a un argomento di estendersi attraverso il simbolo del cancelletto. - Durante la generazione di azioni, il codice Kotlin generato da Args sicuri ora aggiunge gli argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri.
- Durante la generazione di argomenti, Args sicuri ora antepone i parametri senza valori predefiniti.
- Safe-Args ora dipende dal plug-in Android Gradle 4.2.0. Ciò significa che non dovresti più ricevere l'avviso sull'utilizzo di
applicationIdTextResource
.
Problemi noti
- Risolto in Navigazione
2.5.0-alpha01
: l'accesso aViewModel
creato tramiteby navGraphViewModels()
daonCreate()
di frammento non riuscirà con unIllegalStateException
. (b/213504272) - Risolto in Navigazione
2.5.0-alpha01
: Safe Args 2.4.0 non è compatibile con il plug-in Android Gradle 7.1.0 e versioni successive. (b/213086135) - I link diretti con più grafici di navigazione nidificati non creano correttamente l'elenco di backstack completo. (b/214383060)
Versione 2.4.0-rc01
15 dicembre 2021
androidx.navigation:navigation-*:2.4.0-rc01
viene rilasciato. La versione 2.4.0-rc01 contiene questi commit.
Modifiche del comportamento
NavDeepLink
argomenti analizzati ora considerano i segni di cancelletto allo stesso modo dei punti interrogativi come separatori tra argomenti. (I21309, b/180042703)
Correzioni di bug
- I link diretti non ignorano più gli argomenti con valori uguali al nome del segnaposto. (If8017, b/207389470)
NavController
non si arresta in modo anomalo quando si apre una destinazione nidificata utilizzando le transizioni dopo il ripristino diNavController
. (I0f7c9, b/205021623).- Il messaggio di errore quando viene utilizzato un
startDestination
non valido ora utilizzerà per impostazione predefinita la route della destinazione di partenza, se disponibile. (I86b9d, b/208041894)
Correzioni di bug di Navigazione su Compose
- Risolto il potenziale arresto anomalo causato dal passaggio veloce tra la destinazione di partenza e un'altra destinazione utilizzando le voci del menu di navigazione nella parte inferiore. (Ic8976, b/208887901)
- Le destinazioni delle finestre di dialogo ora vengono ripristinate correttamente nella parte superiore dello schermo dopo le modifiche alla configurazione o l'interruzione del processo. (I4c0dc, b/207386169)
- Risolto il problema per cui il tentativo di recuperare un
ViewModel
dalNavBackStackEntry
di una finestra di dialogo non riusciva se la finestra veniva chiusa. (I6b96d, b/206465487). - Risolto il problema durante l'utilizzo delle destinazioni
activity
conNavHost
di Scrittura di navigazione, che causava ricomposizioni infinite. (I8f64c). - Risolto il problema di fuga di dati in Scrittura Navigazione, in cui veniva mantenuto attivo un riferimento all'attività precedente dopo una modifica della configurazione o l'interruzione del processo. (I4efcb, b/204905432).
Correzioni di bug relative ad Args sicuri
SafeArgs
non si arresta più in modo anomalo quando si tenta di ripristinare array parcelable personalizzati dopo il termine del processo. (I618e8, b/207315994)- Risolto il bug negli argomenti sicuri che non consentivano agli array booleani di avere un valore
null
. (I8c396, b/174787525)
Versione 2.4.0-beta02
3 novembre 2021
androidx.navigation:navigation-*:2.4.0-beta02
viene rilasciato. La versione 2.4.0-beta02 contiene questi commit.
Modifiche alle API
- La gestione dei link diretti espliciti e impliciti ora aggiunge automaticamente il flag
saveState
quando si passa a un altro grafico, garantendo che codice comeNavigationUI.setupWithNavController
e codice che utilizza più back stack funzioni come previsto. (Ic8807)
Modifiche del comportamento
- I pattern di link diretti vengono ora compilati lentamente in NavDeepLink anziché durante l'inflazione. Ciò dovrebbe migliorare il tempo di inflazione dei grafici di navigazione che includono link diretti. (b8d257, b/184149935)
Correzioni di bug
- Risolto il problema per cui NavBackStackEntries venivano spinti giù a
Lifecycle.State.CREATED
dopo lo spostamento aLifecycle.State.STARTED
quandoNavHost
viene aggiunto direttamente alsetContent()
dell'attività. (Ia5ac1, b/203536683). - È stata corretta una condizione di gara per cui
separare una destinazione
DialogFragment
dallo stack precedente prima della visualizzazione effettiva della finestra di dialogo non lo chiudeva effettivamente, con conseguente arresto anomalo quando la finestra di dialogo errata veniva chiusa manualmente dall'utente. (I687e5). - Risolto il problema per cui
l'API
onNavDestinationSelected
suNavigationUI
restituivatrue
anche se in realtà nonnavigate()
al grafico di navigazione. Ora utilizza la stessa logica utilizzata internamente dasetupWithNavController
per selezionare solo iMenuItem
associati alla destinazione attuale utilizzando il valorehierarchy
della destinazione. (I2b053)
Versione 2.4.0-beta01
27 ottobre 2021
androidx.navigation:navigation-*:2.4.0-beta01
viene rilasciato. La versione 2.4.0-beta01 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare
by navGraphViewModel
con un percorso in alternativa all'utilizzo di un ID, in modo da supportare meglio l'utilizzo di Navigation Kotlin DSL con frammenti. (I901e3, b/201446416).
Modifiche alle API
- L'API
visibleEntries
è ora sperimentale. (I93f6f)
Correzioni di bug
- I modelli ViewModel non verranno più eliminati quando le transizioni vengono interrotte spostandosi avanti e indietro tra le stesse schermate (Id52d8, b/200817333)
- Gli argomenti
NavDeepLink
nulli non richiedono più un valore predefinito quando si aggiungono link diretti aNavDestination
. (I5aad4, b/201320030). - I NavBackStackEntries ora con cicli di vita diversi non sono più considerati uguali. Ciò significa che NavHost ricompone correttamente tutte le destinazioni quando si esegue la navigazione con singleTop e quando si riselezionano le voci di menu in basso. (I1b351, b/196997433)
- Risolto il problema di
AbstractListDetailFragment
per cui gli attributilayout_width
elayout_weight
nel riquadro dell'elenco restituito daonCreateListPaneView()
venivano gestiti o ignorati. (f5fbf3). - Lo stato visivo delle destinazioni delle finestre di dialogo ora rimane correttamente sincronizzato con lo stato di
DialogFragmentNavigator
. Ciò significa che ora la chiamata manuale all'APIdismiss()
asincrona perDialogFragment
cancella correttamente tutte le destinazioni delle finestre di dialogo sopra la finestra di dialogo ora ignorata. Ciò non influisce sui casi in cui utilizzipopUpTo
opopBackStack()
per chiudere la finestra di dialogo. (I77ba2) - Ora
AbstractAppBarOnDestinationChangedListener
ha un messaggio di errore più chiaro peronDestinationChanged()
. (Ie742d)
Versione 2.4.0-alpha10
29 settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha10
viene rilasciato. La versione 2.4.0-alpha10 contiene questi commit.
Nuove funzionalità
- NavController ora offre la possibilità di recuperare un elenco di tutte le istanze
NavBackStackEntry
visibili tramitevisibleEntries
StateFlow (Ia964e) rememberNavController()
ora utilizza un insieme facoltativo di istanzeNavigator
che verrà aggiunto alleNavController
restituite per supportare meglio i navigatori facoltativi come quelli del materiale di navigazione accompagnato. (I4619e).
Correzioni di bug
- La navigazione dinamica non si arresta in modo anomalo quando l'attività viene ricreata. (Ifa6a3, b/197942869).
- Risolto il problema con il pulsante Indietro di sistema che si verificava solo dopo il ritorno a una destinazione componibile contenente un
NavHost
. (3ed148, b/195668143) - SafeArgs ora genera gli argomenti per
fromBundle()
efromSavedStateHandle()
nell'ordine dei parametri corretto. (I824a8, b/200059831)
Versione 2.4.0-alpha09
15 settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha09
viene rilasciato. La versione 2.4.0-alpha09 contiene questi commit.
Nuove funzionalità
- Ora puoi utilizzare il metodo
clearBackStack()
per cancellare qualsiasi stato salvato conpopBackStack()
opopUpToSaveState
. (I80a0f) - Ora puoi passare un elenco di argomenti e/o link diretti al generatore di grafici di navigazione nidificati, che verranno aggiunti automaticamente al grafico risultante. (I8a470, b/182545357)
Modifiche alle API
- La funzione DSL Kotlin
navArgument
ora fa parte dinavigation-common
anziché dinavigation-compose
. Questa operazione richiederà l'aggiornamento delle importazioni per continuare a utilizzare questa funzione. (I1d095)
Modifiche del comportamento
- Durante la generazione di argomenti, Args sicuri ora antepone i parametri senza valori predefiniti. (I89709, b/198493585)
Correzioni di bug
- Quando utilizzi Scrittura di navigazione, i grafici NavGraph saranno
DESTROYED
solo quando tutti i loro figli sarannoDESTROYED
. (I86552, b/198741720) - Gli argomenti
NavDeepLink
nulli non richiedono più un valore predefinito. (Ia14ef, b/198689811). - La chiamata a
setGraph()
con un nuovo grafico ora comporta anche la cancellazione di eventuali stack di backup salvati, oltre al comportamento precedente di popolamento dello stack precedente. (I97f96) - Risolto il problema per cui
le istanze
OnDestinationChangedListener
ecurrentBackStackEntryFlow
non ricevevano notifiche quando si utilizzavalaunchSingleTop
. (Iaaebc).
Aggiornamenti delle dipendenze
- Navigazione Compose ora dipende da Activity Compose 1.3.1. (I05829)
- Scrittura navigazione ora dipende da
Scrittura ViewModel Ciclo di vita
2.4.0-beta01
. (Ib86a3)
Versione 2.4.0-alpha08
1° settembre 2021
androidx.navigation:navigation-*:2.4.0-alpha08
viene rilasciato. La versione 2.4.0-alpha08 contiene questi commit.
Nuove funzionalità
- Ora è possibile estendere la classe
NavType
per creare NavTypes personalizzati. I tipi personalizzati sono supportati solo quando si crea il grafico di navigazione in modo programmatico, ad esempio tramite Kotlin DSL del grafico di navigazione. (I78440, b/196871885)
Modifiche del comportamento
- Durante la generazione di azioni, il codice Kotlin generato da Args sicuri ora aggiunge gli argomenti senza valori predefiniti prima di quelli con valori predefiniti come parametri. (Idb697, b/188855904)
- I link diretti ora verificano che tutti gli argomenti obbligatori (senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Correzioni di bug
- L'utilizzo di
getBackStackEntry
epreviousBackStackEntry
all'interno di composable(), in combinazione conremember()
, non causerà più un'eccezione per l'assenza di destinazione nello stack precedente. (I75138, b/194313238) - Ora Compose di navigazione si ricompone correttamente quando si modificano
gli argomenti dello stack precedente e si utilizza
launchSingleTop=true
. (Iebd69, b/186392337). - Non ci sarà più un
ArrayIndexOutOfBoundsException
quando chiamisetGraph
con un grafico con 13 o 29 destinazioni. (I1a9f1, b/195171984). - Il generatore Java di SafeArgs non deve più causare avvisi lint durante la generazione delle classi Args. (I1a666, b/185843837).
Contributi esterni
- Grazie ospixd per aver verificato che i link diretti verificano che tutti gli argomenti obbligatori (senza valori predefiniti) siano presenti in
Uri
. (#204, b/185527157)
Versione 2.4.0-alpha07
18 agosto 2021
androidx.navigation:navigation-*:2.4.0-alpha07
viene rilasciato. La versione 2.4.0-alpha07 contiene questi commit.
Correzioni di bug
- Navigazione Compose ora salva correttamente lo stato dopo le modifiche alla configurazione e quando cambiano i grafici utilizzando la funzionalità multiback stack. (If5a3d, b/195141957).
- Se selezioni di nuovo la stessa scheda quando utilizzi la funzionalità di composizione della navigazione con più back stack, non verrà più visualizzata una schermata vuota. (I860dc, b/194925622)
NavHost
ora osserva le modifiche inLifecycle.State
diNavBackStackEntry
, il che significa che l'utilizzo diNavHost
in un frammento verrà correttamente ricomposto come modifiche del ciclo di vita, invece di generare una schermata vuota. (I4eb85, b/195864489).- Risolto il problema per cui ignorare un elemento
DialogFragment
non aggiornava correttamente lo statoNavController
dopo aver ricreato la tua attività (ad esempio dopo una modifica alla configurazione). (Icd72b) - Risolto il problema per cui l'apertura di una destinazione di dialogo non aggiornava la gestione del pulsante Indietro di sistema del NavController, causando potenzialmente l'intercettazione del pulsante Indietro da parte di NavController, anche se non presenta stack di ritorno. (If3b34)
- Safe-args ora genera automaticamente un metodo
toSavedStateHandle
per gli argomenti che può essere usato per testare il codiceViewModel
. (If1e2d, b/193353880).
Versione 2.4.0-alpha06
4 agosto 2021
androidx.navigation:navigation-*:2.4.0-alpha06
viene rilasciato. La versione 2.4.0-alpha06 contiene questi commit.
Modifiche alle API
- I metodi
requireSlidingPaneLayout()
erequireDetailPaneNavHostFragment()
suAbstractListDetailFragment
sono stati rinominati rispettivamentegetSlidingPaneLayout()
egetDetailPaneNavHostFragment()
. (I34a08).
Modifiche del comportamento
- Quando navighi con animazioni (come
Crossfade
), il valoreLifecycle
della nuova destinazione ora raggiungeràRESUMED
solo al termine dell'animazione. (If0543, b/172112072, b/194301889). - Il
NavHost
di Navigazione di Compose ora imposta il grafico come parte della prima composizione. (Ieb7be).
Correzioni di bug
- Quando si apre 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 veniva aggiunto un link diretto senzaUri
e si navigava tramite un percorso o un link diretto. (938a0c, b/193805425). - Risolto il problema di Scrittura navigazione per cui
un elemento
NavBackStackEntry
con link diretto non raggiungeva lo statoRESUMED
. (I192c5). - Risolto il problema per cui l'apertura di una destinazione di finestra di dialogo non aggiornava la gestione dei pulsanti Indietro di sistema di NavController, causando potenzialmente l'intercettazione del pulsante Indietro da parte del NavController, anche se non presenta stack di backup. (aosp/1782668)
Versione 2.4.0-alpha05
21 luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha05
viene rilasciato. La versione 2.4.0-alpha05 contiene questi commit.
Modifiche del comportamento
- Ora
NavHost
di Navigazione di Compose utilizza sempre la dissolvenza incrociata quando si naviga tra le destinazioni. (I07049, b/172112072) - Ora puoi apportare modifiche al grafico di un NavHost. I grafici con lo stesso valore startDestination e le stesse destinazioni nel grafico verranno considerati uguali e non cancelleranno il back stack
NavController
. (I0b8db, b/175392262).
Correzioni di bug
- È stato risolto un problema
NoSuchElementException
durante la chiamata apopBackStack()
dall'interno di unLifecycleObserver
associato a unNavBackStackEntry
causato da aggiornamenti entranti nello stato del NavController. (I64621) AbstractListDetailFragment
ora consente di eliminare completamenteSlidingPaneLayout
dall'APK quando non viene utilizzatoAbstractListDetailFragment
. (I611ad)NavGraph
eNavDestination
ora eseguono l'override del metodo uguale in modo che due oggetti con gli stessi valori vengano considerati uguali. (I166eb, b/175392262).
Versione 2.4.0-alpha04
1° luglio 2021
androidx.navigation:navigation-*:2.4.0-alpha04
viene rilasciato. La versione 2.4.0-alpha04 contiene questi commit.
Nuove funzionalità
- L'elemento
navigation-fragment
ora contiene un'implementazione predefinita di un layout a due riquadri tramite il nuovoAbstractListDetailFragment
. Questo frammento utilizza un elementoSlidingPaneLayout
per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli che utilizza unNavHostFragment
come implementazione, come mostrato nella nostra implementazione di esempio. (Iac4be, b/191276636). NavHost
dell'elementonavigation-compose
ora supportadialog
destinazioni oltre acomposable
. Ciascuna destinazione delle finestre di dialogo verrà mostrata 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 correnti aadd()
dovranno essere modificate in push(). (Ie89fc, b/172112072) - Ora le istanze
Navigator
personalizzate possono utilizzare le APIpushWithTransaction
epopWithTransition
suNavigatorState
per eseguire il push o il pop di una destinazione in modo asincrono. Tieni presente che queste API non sono ancora utilizzate da nessuno dei navigatori inclusi. (Ic4d7c, b/172112072).
Modifiche del comportamento
NavDeepLinkBuilder
ora aggiungePendingIntent.FLAG_IMMUTABLE
agliPendingIntent
restituiti dacreatePendingIntent()
, garantendo che questa API funzioni come previsto quando scegli come target Android 12. (If8c52)
Correzioni di bug
- Risolto il problema con
<include-dynamic>
per cui gli argomenti passati al grafico non venivano passati correttamente al grafico incluso dinamicamente. (I3e115). - È stato corretto un
NullPointerException
durante l'accesso a una destinazione utilizzando un argomentostring[]
con un valore predefinito di@null
. (I1fbe8). - Aggiungi regole ProGuard per
@Navigator.Name
per risolvere i problemi quando utilizzi la modalità completa di R8 3.1. (I2add9, b/191654433). - SafeArgs non avrà più errori quando crei la tua app con
versioni
Kotlin
prima del giorno1.5.0
. (Icd1ff, b/190739257).
Versione 2.4.0-alpha03
16 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha03
viene rilasciato. La versione 2.4.0-alpha03 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui erano necessarie due chiamate
navigate()
per accedere a un grafico dinamico incluso. (I7785c, b/188859835) - È stata corretta una regressione introdotta in Navigazione
2.4.0-alpha01
in cuisetupActionBarWithNavController()
non rimuoveva correttamente l'icona Su quando ti trovi in una destinazione di primo livello. (I5d443, b/189868637). - È stato corretto un
IllegalStateException
durante la chiamata apopBackStack()
dopo aver precedentemente popolato il grafico radice di NavController. (I2a330, b/190265699). - Le regole di ProGuard per
by navArgs()
ora vengono applicate correttamente quando utilizzinavigation-common
o qualsiasi elemento che dipende da questo elemento. (I68800, b/190082521) - Un
OnDestinationChangedListener
che chiamanavigate()
la prima volta che riceve un callback ora riceve correttamente un secondo callback con la destinazione a cui ha raggiunto. (Ie5f9e, b/190228815). - Args sicuri non si arrestano più in modo anomalo quando lo si utilizza con moduli di funzionalità dinamiche e AGP 7.0 e versioni successive. (I69518, b/189966576)
Problema noto
- Gli Args sicuri avranno esito negativo con un errore
Unable to find method ‘’java.lang.String kotlin.text.CarsKt.titleCase(char, java.util.Locale)’’
quando si utilizza Gradle6.7.0
a causa di una dipendenza su una versione precedente di Kotlin. Per risolvere il problema, è possibile eseguire l'aggiornamento in modo da utilizzare Gradle 7.0. (b/190739257)
Versione 2.4.0-alpha02
2 giugno 2021
androidx.navigation:navigation-*:2.4.0-alpha02
viene rilasciato. La versione 2.4.0-alpha02 contiene questi commit.
Nuove funzionalità
- Le route sono ora supportate per le destinazioni Attività, Fragment e Finestra di dialogo, nonché in tutto il DynamicNavigator 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 il salvataggio dello stato è sempre il comportamento corretto, esistono comunque utilizzi di librerie deprecate (ovvero frammenti conservati), che non possono essere supportate durante il salvataggio dello stato. In questo modo le app hanno la possibilità di ritirarsi lentamente da eventuali API non supportate. (Idf93c)La navigazione ora fornisce le API
findDestination()
egetHierarchy()
che possono essere utilizzate per implementare l'UI di navigazione personalizzata.findDestination()
è una funzione di estensione diNavGraph
che individuerà una destinazione all'interno del grafico.getHierarchy()
è una funzione suNavDestination
che può essere utilizzata per verificare se una determinata destinazione si trova all'interno della gerarchia di un'altra.(I2932f, b/188183365)val matchingRoute: Boolean = destination.hierarchy.any { it.route == routeToFind }
I metodi dell'UI di navigazione che hanno richiesto un
BottomNavigationView
sono stati aggiornati per prendere la superclasse introdotta in Material1.4.0
,NavigationBarView
. In questo modo puoi utilizzare questi metodi conNavigationRailView
. (Ib0b36, b/182938895).Quando aggiungi un elemento
<action>
tramite XML, gli attributi dell'animazione possono utilizzare attributi estratti dal tuo tema utilizzando la sintassiapp:enterAnim="?attr/transitionEnter"
. (I07bc1, b/178291654).
Modifiche alle API
- I builder DSL Kotlin che utilizzano un ID sono stati deprecati e dovrebbero essere sostituiti con quelli che utilizzano route (I85b42, b/188816479) (I9f58f, b/188816479)
Correzioni di bug
DialogFragmentNavigator
ora utilizza l'APINavigatorState.pop()
per informareNavController
quando una finestra di dialogo viene chiusa premendo il pulsante Indietro del sistema o facendo clic all'esterno, assicurando che lo statoNavController
sia sempre sincronizzato con lo stato del navigatore. (I2ead9).La navigazione non restituisce più un
ConcurrentModificationException
quando utilizzi la manipolazione dell'elenco diOnDestinationChangedListeners
da un callbackonDestinationChanged
. (Ib1707, b/188860458)Args sicuri non si arrestano più in modo anomalo quando tenta di generare proprietà di direzione in Kotlin. (Id2416, b/188564435)
Il metodo setId su NavDestination ora è annotato correttamente con
@IdRes
, quindi accetta solo ID risorsa. (I69b80)Il parametro int di
findNode
ora èresId
anzichéresid
. (I7711d)
Aggiornamento delle dipendenze
- Safe-Args ora dipende dal plug-in Android Gradle 4.2.0. Ciò significa che non dovresti più ricevere l'avviso sull'utilizzo di
applicationIdTextResource
. (I6d67b, b/172824579).
Versione 2.4.0-alpha01
18 maggio 2021
androidx.navigation:navigation-*:2.4.0-alpha01
viene rilasciato. La versione 2.4.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il metodo
currentBackStackEntryAsFlow()
suNavController
fornisce unFlow
che emette ogni volta che cambiaNavBackStackEntry
corrente. Questo flusso può essere utilizzato come alternativa alla gestione manuale di unOnDestinationChangedListener
. (I19c4a, #89, b/163947280).
Più back stack
Il NavController è responsabile della gestione dello stack precedente delle destinazioni, dell'aggiunta delle destinazioni allo stack di destinazione quando navigate()
ti raggiunge e della loro rimozione quando chiami popBackStack()
o attivi il pulsante Indietro del sistema. La classe NavOptions
esistente e l'integrazione nelle voci <action>
nel file XML del grafico di navigazione sono state ampliate per supportare il salvataggio e il ripristino dello stack 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 tramite popup, consentendo il supporto di più back stack senza alcuna modifica al codice. Quando utilizzi Navigazione con frammenti, questo è il modo consigliato per l'integrazione con più back stack. (Ie07ca)
Le API sottostanti per il salvataggio e il ripristino dello stato sono esposte tramite una serie di piattaforme:
Nel file XML di navigazione, l'elemento
<action>
può ora utilizzare gli attributi booleani diapp:popUpToSaveState
eapp:restoreState
per salvare lo stato di qualsiasi destinazione visualizzata tramiteapp:popUpTo
e ripristinare lo stato associato alla destinazione trasmessa 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” />
In
navOptions
Kotlin DSL, puoi aggiungere la proprietà booleanarestoreState
e la proprietà booleanasaveState
nello strumento per la creazione dipopUpTo
:// Use the navigate() method that takes a navOptions DSL Builder navController.navigate(selectedBottomNavRoute) { launchSingleTop = true restoreState = true popUpTo(navController.graph.startDestinationId) { saveState = true } }
Nella creazione manuale di un oggetto
NavOptions
tramiteNavOptions.Builder
, puoi utilizzaresetRestoreState()
e il nuovo sovraccarico persetPopUpTo()
che richiede un parametrosaveState
aggiuntivo.NavOptions navOptions = new NavOptions.Builder() .setLaunchSingleTop(true) .setRestoreState(true) .setPopUpTo(navController.getGraph().getStartDestinationId(), false, // inclusive true) // saveState .build(); navController.navigate(selectedBottomNavId, null, navOptions);
Le chiamate programmatiche a
popBackStack()
ora possono includere un parametrosaveState
aggiuntivo.
In tutti i casi, NavController
salverà e ripristinerà lo stato di ogni NavBackStackEntry
, incluse le istanze ViewModel
con ambito di navigazione. Le API di Navigator
sono state aggiornate in modo da consentire a ogni Navigator
di supportare il salvataggio e il ripristino del proprio stato.
I ComposeNavigator
utilizzati per composable
destinazioni in Scrittura Navigazione, nonché i FragmentNavigator
e DynamicFragmentNavigator
utilizzati per le destinazioni <fragment>
in Navigazione con frammenti sono stati entrambi aggiornati in modo da utilizzare le nuove API Navigator e supportano lo stato di salvataggio e ripristino.
Percorsi di navigazione
Un percorso è un String
che identifica in modo univoco una destinazione. Sebbene in precedenza venisse utilizzato solo in Navigator Compose, questo concetto è ora diventato parte delle API di navigazione principali. In questo modo viene fornita un'alternativa all'utilizzo di ID numeri interi durante la creazione del grafico tramite DSL di navigazione Kotlin. (b/172823546)
Tutte le API che prima richiedevano solo un ID ora hanno un sovraccarico che prende una route String
. Sono inclusi navigate()
, popBackStack()
, popUpTo()
e getBackStackEntry()
.
Ciò ha avuto alcune implicazioni relative all'API:
- La proprietà kotlin
popUpTo
su Kotlin DSL è stata ritirata a favore dipopUpToId
. (I59c73, b/172823546). - L'API
getStartDestination()
è stata ritirata a favore digetStartDestinationId()
. (I0887f, b/172823546).
Per gli sviluppatori che eseguono l'upgrade dalle versioni precedenti di Scrittura navigazione a 2.4.0-alpha01
, ciò significa che le seguenti importazioni nei metodi di estensione non sono più necessarie e devono essere rimosse:
import androidx.navigation.compose.navigation
import androidx.navigation.compose.createGraph
import androidx.navigation.compose.getBackStackEntry
import androidx.navigation.compose.navigate
import androidx.navigation.compose.popUpTo
L'argomento KEY_ROUTE
è stato sostituito con la proprietà route
in NavDestination
, in modo da poter chiamare direttamente navBackStackEntry.destination.route
.
Modifiche alle API
- Tutti gli artefatti di navigazione sono stati riscritti in Kotlin. In questo modo è stata migliorata la nullabilità delle classi che utilizzano valori generici (come le sottoclassi
NavType
). Tutte le funzioni dell'estensione Kotlin che facevano parte degli artefatti-ktx
sono state spostate nei rispettivi elementi principali. Gli artefatti-ktx
continueranno a essere pubblicati, ma sono completamente vuoti. (b/184292145) NavDeepLinkBuilder
ora supporta l'aggiunta di più destinazioni distinte allo stack di backup generato. (I3ee0d, b/147913689)- Aggiungi le funzioni di fabbrica per
DynamicNavHostFragment
(Icd515, b/175222619) - L'ID univoco di un elemento
NavBackStackEntry
è ora esposto come parte della sua API pubblica. (Ie033a) - I campi
name
eargument
e le funzioni di distruzione diNamedNavArgument
sono ora pubblici. (#174, b/181320559) - È stata introdotta una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisce il valoreNavBackStackEntry
alle persone locali della composizione interessata. (n. 175, b/187229439)
Argomenti sicuri
Args sicuri ora 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) }
Args sicuri aggiornati in modo che dipendono da KotlinPoet
1.8.0
. (n. 172, b/183990444)
Modifiche del comportamento
- La navigazione ora dipende da Ciclo di vita
2.3.1
e ora contrassegnasetGraph()
,popBackStack()
,navigateUp()
enavigate()
, i metodi che aggiornanoNavBackStackEntry
Lifecycle
, come@MainThread
, allineando la navigazione con l'applicazione forzata del 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 quando l'enum ha il valoreRED
. (n. 152, b/135857840)
Compatibilità di Scrivi
androidx.navigation:navigation-compose:2.4.0-alpha01
è compatibile solo con Compose1.0.0-beta07
e versioni successive.
Correzioni di bug
- Risolto il problema per cui i segnaposto degli argomenti finali avevano la precedenza sui link diretti con un suffisso esatto corrispondente. (n. 153, b/184072811)
NavHostFragment
ora supporta i navigatori personalizzati che usano lo stesso@Navigator.Name("dialog")
delDialogFragmentNavigator
predefinito. (Ib1c2c, b/175979140).- È stato migliorato il comportamento di
NavigatorProvider#addNavigator
per garantire che la ripetizione di una chiamata con la stessa istanza non causi problemi. (n. 176, b/187443146)
Contributi esterni
- Grazie a simonschiller per la creazione del supporto per Args sicuri che generano un metodo
fromSavedStateHandle()
per ogni classeNavArgs
. (n. 122, b/136967621) - Grazie a Bradleycorn per aver reso l'analisi degli argomenti Enum provenienti dai link diretti senza distinzione tra maiuscole e minuscole. (n. 152, b/135857840)
- Grazie a osipxd per aver risolto un problema per cui i segnaposto degli argomenti finali hanno la precedenza sui link diretti con un suffisso esatto corrispondente. (n. 153, b/184072811)
- Grazie tatocaster per aver aggiornato Args sicuri in modo che dipendono da KotlinPoet
1.8.0
. (n. 172, b/183990444) - Grazie a jossiwolf per aver reso pubblici i campi
name
eargument
e le funzioni distruttive diNamedNavArgument
. (#174, b/181320559) - Grazie a jossiwolf per aver introdotto una nuova estensione
NavBackStackEntry#provideToCompositionLocals
che fornisceNavBackStackEntry
alle composizioni pertinenti. (n. 175, b/187229439) - Grazie a jossiwolf per aver migliorato il comportamento di
NavigatorProvider#addNavigator
e assicurarti che la ripetizione dell'operazione 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
androidx.navigation:navigation-compose:1.0.0-alpha10
viene rilasciato. La versione 1.0.0-alpha10 contiene questi commit.
Modifiche alle API
NavHost
ora accetta unModifier
, che viene trasmesso al container componibile che inserisce i componenti componibili di destinazione. (I85aca, b/175125483).
Correzioni di bug
- Ora
NavHost
funziona anche quando non viene trovato unOnBackPressedDispatcherOwner
, come nel caso dell'anteprima diNavHost
. (I7d8b4). - Scrittura per la navigazione ora dipende da Navigazione
2.3.5
e viene risolto un problema quando si utilizzaBackHandler
all'interno di una destinazioneNavHost
. (I7e63b, b/182284739).
Versione 1.0.0-alpha09
10 marzo 2021
androidx.navigation:navigation-compose:1.0.0-alpha09
viene rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Modifiche alle API
LocalViewModelStoreOwner.current
ora restituisce un valoreViewModelStoreOwner
nullo per determinare meglio se un elementoViewModelStoreOwner
è disponibile nella composizione attuale. Le API che richiedono unViewModelStoreOwner
, comeviewModel()
eNavHost
, generano comunque un'eccezione se non viene impostato unViewModelStoreOwner
. (Idf39a)
Correzioni di bug
- Navigazione Compose ora dipende da Navigatore 2.3.4, che include la correzione per il tentativo di impostare lo stesso oggetto ViewModelStore dopo l'impostazione del grafico. (I65c24, b/177825470)
Versione 1.0.0-alpha08
24 febbraio 2021
androidx.navigation:navigation-compose:1.0.0-alpha08
viene rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Nuove funzionalità
NavHost
ora compila il campoLocalSavedStateRegistryOwner
ComposeLocal con il valoreNavBackStackEntry
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
androidx.navigation:navigation-compose:1.0.0-alpha07
viene rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Aggiornamenti delle dipendenze
- Navigazione ora dipende da Lifecycle ViewModel Compose 1.0.0-alpha01 per fornire il supporto
viewModel()
alle destinazionicomposable
. (I7a374) NavHost
ora utilizza il nuovoLocalOnBackPressedDispatcherOwner
di Activity-Compose 1.3.0-alpha01 per ottenere ilOnBackPressedDispatcher
impostato suNavController
. (I65b12)
Versione 1.0.0-alpha06
28 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha06
viene rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Modifiche alle API
- È stato aggiunto un metodo di estensione
getBackStackEntry(route: String)
suNavController
che restituisce ilNavBackStackEntry
associato. (If8931)
Versione 1.0.0-alpha05
13 gennaio 2021
androidx.navigation:navigation-compose:1.0.0-alpha05
viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Aggiornato in modo da dipendere da Compose 1.0.0-alpha10.
Versione 1.0.0-alpha04
16 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha04
viene rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
- Aggiornato per compatibilità con Compose
1.0.0-alpha09
.
Versione 1.0.0-alpha03
2 dicembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha03
viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
popBackStack()
enavigateUp()
non funzionavano dopo una modifica della configurazione o dopo l'eliminazione e la ricreazione. (Icea47, b/173281473). - La navigazione a un grafico nidificato all'interno di NavHost ora funziona correttamente. (I0948d, b/173647694)
Versione 1.0.0-alpha02
11 novembre 2020
androidx.navigation:navigation-compose:1.0.0-alpha02
viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Modifiche alle API
- La scrittura di navigazione supporta ora NavOptions per l'utilizzo di popUpTo e di lancioSingleTop (If96c3, b/171468994)
- È stata aggiunta una funzione di navigazione che prende una route anziché un ID che ti consente di creare grafici nidificati nella DSL di Scrittura navigazione. (I1661d)
- startDestination ora prima della route nell'elenco dei parametri per NavHost (Ie620e)
- Ora puoi creare un grafico utilizzando la route come destinazione di partenza al di fuori di un componibile NavHost. (Iceb75).
Versione 1.0.0-alpha01
28 ottobre 2020
android.navigation:navigation-compose:1.0.0-alpha01
viene rilasciato. La versione 1.0.0-alpha01 contiene questi commit.
Nuove funzionalità
L'elemento navigation-compose
fornisce l'integrazione tra il componente di navigazione e Jetpack Compose. Utilizza le funzioni @Composable
come destinazioni dell'applicazione.
Questa release iniziale fornisce:
- Un componibile
NavHost
che ti consente di creare il tuo grafico di navigazione tramite un Kotlin DSL. - Determinazione dell'ambito del ciclo di vita,
ViewModel
e stato memorizzato a livello di destinazione. - Integrazione automatica con il pulsante Indietro del sistema.
- Supporto per il passaggio di argomenti, il collegamento di link diretti alle destinazioni e la restituzione di un risultato alle destinazioni precedenti.
- Scrivi aiutanti specifici in
rememberNavController()
ecurrentBackStackEntryAsState()
per consentire lo stato di sollevamento e collegareNavController
agli elementi componibili all'esterno diNavHost
(ad esempio una barra di navigazione in basso).
Per ulteriori informazioni, consulta la Guida di navigazione a Compose.
Versione 2.3.5
Versione 2.3.5
7 aprile 2021
androidx.navigation:navigation-*:2.3.5
viene rilasciato. La versione 2.3.5 contiene questi commit.
Nuove funzionalità
- Quando navighi con
NavDeepLinkRequest
oUri
, ora puoi accedere al tipoUri
, all'azione e al tipo MIME nella destinazione risultante recuperando l'intent dagli argomenti tramiteKEY_DEEP_LINK_INTENT
, eseguendo il mirroring della funzionalità già disponibile per i link diretti esterni. (I975c3, b/181521877)
Correzioni di bug
OnBackPressedCallbacks
aggiunto a un supervisore conNavBackStackEntry
come LifecycleOwner ora l'intercettazione corretta dopo che il ciclo di vita dell'attività èSTOPPED
, quindiSTARTED
(Iff94f, b/182284739)- L'analisi del dominio dei link diretti ora non fa distinzione tra maiuscole e minuscole, garantendo che
www.example.com
corrisponda sia awww.example.com
sia awww.Example.com
. Tieni presente che i nomi dei parametri di query sono ancora sensibili alle maiuscole. (n. 144, b/153829033) - Risolto il problema di
NullPointerException
che poteva verificarsi quando una destinazione ha più argomenti predefiniti non nulli e ci si portava a quella destinazione, sostituendo soltanto un sottoinsieme di questi argomenti. (aosp/1644827)
Aggiornamenti delle dipendenze
- Il plug-in Navigation Safe Args Gradle ora dipende dal plug-in Kotlin Gradle 1.4.31. (aosp/1661058, b/181156413)
Contributi esterni
- Grazie
bentrengrove
per la richiesta pull che ha reso l'analisi del dominio dei link diretti senza distinzione tra maiuscole e minuscole. (n. 144, b/153829033)
Versione 2.3.4
Versione 2.3.4
10 marzo 2021
androidx.navigation:navigation-*:2.3.4
viene rilasciato. La versione 2.3.4 contiene questi commit.
Nuove funzionalità
- Ora gli argomenti
ReferenceType
possono essere analizzati correttamente quando vengono inviati come parte di un URI 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 predefiniti interi, che ti consentono di utilizzareandroid:defaultValue="0"
anziché richiedere l'uso di0.0
. (n. 117, b/173766247)
Correzioni di bug
- È stato risolto il problema di avanzamento dell'installazione bloccato quando si utilizzava il supporto di Navigazione per le funzionalità dinamiche. (Ib27a7, b/169636207).
- La chiamata a
setViewModelStore
osetLifecycleOwner
con lo stesso oggetto già impostato sarà una chiamata no-op (Idf491, b/177825470) - Safe-Args ora aggiunge annotazioni soppresse nei metodi corretti quando si utilizza Java. (I8fbc5, b/179463137).
Contributi esterni
- Grazie
JvmName
per la richiesta di pull, che ci aiuta a garantire che gli argomentiReferenceType
possano ora essere analizzati correttamente quando vengono inviati come parte di un URI del link diretto. (n. 127, b/179166693) - Grazie
tatocaster
per la richiesta di pull che ha consentito adefaultValue
per un argomento conapp:argType=”float”
ora di supportare valori predefiniti interi. (n. 117, b/173766247)
Versione 2.3.3
Versione 2.3.3
27 gennaio 2021
androidx.navigation:navigation-*:2.3.3
viene rilasciato. La versione 2.3.3 contiene questi commit.
Correzioni di bug
- Non si verifica più un arresto anomalo quando si apre un
NavBackStackEntry
prima che il suoLifecycle
venga spostato inCREATED
. (Ie3ba3) - È stata corretta la regressione causata da b/171364502 per cui l'accesso a
un'attività con un valore di risorsa di animazione di
0
ha causato unResourceNotFoundException
. (I7aedb, b/176819931).
Versione 2.3.2
Versione 2.3.2
2 dicembre 2020
androidx.navigation:navigation-*:2.3.2
viene rilasciato. La versione 2.3.2 contiene questi commit.
Correzioni di bug
- È stata corretta una regressione in
NavigationUI
in cui l'utilizzo di una destinazione<activity>
cononNavDestinationSelected
non riusciva ad accedere all'attività. (I22e34, b/171364502). - Risolto il problema per cui
navigation-dynamic-features-fragment
causava più volte l'accesso alla destinazione appena installata. (aosp/1486056, b/169636207) - Risolto il problema per cui gli argomenti predefiniti non venivano inviati a
OnDestinationChangedListener
istanze quando si utilizzavalaunchSingleTop
. (I2c5cb) - Risolto il problema per cui l'accesso a un grafico di navigazione nidificato non creava una nuova istanza di grafico nello stack posteriore. (Ifc831)
- Risolto il problema per cui l'utilizzo di
navigate()
con unpopUpTo
che rimuoveva l'ultima destinazione in un grafico di navigazione non causava immediatamente l'eliminazione e la rimozione del grafico di navigazione stesso dallo stack precedente. (I910a3) - Navigazione SafeArgs ora utilizza KotlinPoet versione 1.7.2 che aggiunge il supporto per la modalità API esplicita di Kotlin. (I918b5)
NavHostFragment.findNavController(Fragment)
ora verifica anche la vista della decorazione principale di un DialogFragment oltre ai controlli esistenti della gerarchia dei Fragment e della gerarchia delle visualizzazioni di Fragment. In questo modo puoi testare i frammenti della finestra di dialogo che utilizzano la navigazione conFragmentScenario
eNavigation.setViewNavController()
. (I69e0d).
Versione 2.3.1
Versione 2.3.1
14 ottobre 2020
androidx.navigation:navigation-*:2.3.1
viene rilasciato. La versione 2.3.1 contiene questi commit.
Nuove funzionalità
- Le risorse Animator predefinite sono state aggiunte all'interfaccia utente di navigazione e sono consigliate rispetto alle risorse di animazione predefinite. (b/167430145)
- NavOptions ora esegue l'override del codice hash e dei metodi uguale (b/161586466)
- La navigazione ora include la destinazione corrente nell'eccezione "Nessuna destinazione con ID" LegalArgumentException, che dovrebbe migliorare l'esperienza di debug degli sviluppatori. (b/168311416)
Correzioni di bug
- Args sicuri non andranno più a capo nella riga di ritorno, anche se il nome della classe di argomento generato supera i 100 caratteri. (b/168584987)
Modifiche delle dipendenze
navigation-ui
ora dipende da DrawerLayout 1.1.1, per garantire cheNavigationUI
sia in grado di aprire il riquadro a scomparsa anche quando utilizziLOCK_MODE_LOCKED_CLOSED
oLOCK_MODE_LOCKED_OPEN
. (b/162253907)- L'app Args sicuri ora dipende da KotlinPoet 1.6.0 (aosp/1435911)
- L'app Args sicuri ora dipende da AGP 4.0.1 (aosp/1442337)
Versione 2.3.0
Versione 2.3.0
24 giugno 2020
androidx.navigation:navigation-*:2.3.0
viene rilasciato. La versione 2.3.0 contiene questi commit.
Importanti modifiche dalla versione 2.2.0
- Integrazione dei moduli delle funzionalità: gli artefatti
navigation-dynamic-features-runtime
enavigation-dynamic-features-fragment
consentono di accedere alle destinazioni definite nei moduli delle funzionalità, gestendo automaticamente l'installazione dei moduli delle funzionalità secondo necessità. Per ulteriori informazioni, consulta Navigare con i moduli delle funzionalità. - Test di navigazione: l'artefatto
navigation-testing
fornisce unTestNavHostController
che ti consente di impostare la destinazione corrente e verificare lo stack posteriore dopo le operazioni di navigazione. Per ulteriori informazioni, consulta Testare la navigazione. - Restituzione di un risultato: l'elemento
NavBackStackEntry
associato a ciascuna destinazione nello stack posteriore di navigazione ora consente di accedere a un elementoSavedStateHandle
adatto all'archiviazione di piccole quantità di stato salvato da associare a una determinata voce di back stack. Per ulteriori informazioni, consulta Restituzione di un risultato alla destinazione precedente. - Supporto di
NavigationUI
perOpenable
: tutti gli utilizzi diDrawerLayout
inNavigationUI
sono stati sostituiti con l'interfaccia più generica diOpenable
aggiunta in CustomView1.1.0
e implementata daDrawerLayout
in DrawerLayout1.1.0
. - Supporto del tipo Mime e azione nei link diretti: i link diretti sono stati ampliati per supportare
app:action
eapp:mimeType
, oltre aiapp:uri
precedentemente disponibili.NavController
ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. Per ulteriori informazioni, vedi Navigare utilizzando NavDeepLinkRequest.
Problemi noti
- Il supporto per le azioni dei link diretti e i tipi MIME non è ancora disponibile nell'Unione manifest. Finché questa operazione non sarà completata, tutti gli elementi
<intent-filter>
generati dall'elemento<nav-graph>
nel tuo manifest non includeranno il tuo tipo MIME nel relativo elemento<data>
o nel tuo<action>
personalizzato. Devi aggiungere manualmente un elemento<intent-filter>
appropriato al file manifest.
Versione 2.3.0-rc01
10 giugno 2020
androidx.navigation:navigation-*:2.3.0-rc01
viene rilasciato. La versione 2.3.0-rc01 contiene questi commit.
Correzioni di bug
- È stato corretto un
NullPointerException
durante la sostituzione di un'istanza di una destinazione senza argomenti con un'altra istanza con argomenti consingleTop
. (b/158006669) - Tutte le eccezioni
destination is unknown
generate daNavController
ora includono informazioni di debug aggiuntive che consentono di determinare lo stato diNavController
. (b/157764916)
Versione 2.3.0-beta01
20 maggio 2020
androidx.navigation:navigation-*:2.3.0-beta01
vengono rilasciati. La versione 2.3.0-beta01 contiene questi commit.
Correzioni di bug
- Risolto il problema per cui
Lifecycle
dell'NavBackStackEntry
non veniva aggiornato correttamente dopo il decesso del processo. (b/155218371) OnDestinationChangedListener
istanze registrate prima della chiamata del numerosetGraph()
vengono ora inviate correttamente alla destinazione ripristinata dopo un arresto del processo. (b/155218371)- Quando utilizzi
singleTop
, ora gli argomenti diNavBackStackEntry
vengono aggiornati correttamente e quelli aggiornati vengono inviati a tutte le istanzeOnDestinationChangeListener
. (b/156545508)
Aggiornamenti delle dipendenze
- L'elemento
NavigationUI
ora dipende da CustomView1.1.0-rc01
e DrawerLayout1.1.0-rc01
. (aosp/1309696)
Versione 2.3.0-alpha06
29 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha06
viene rilasciato. (La versione 2.3.0-alpha06 contiene questi commit.)
Nuove funzionalità
- I link diretti sono stati ampliati per supportare
app:action
eapp:mimeType
oltre aiapp:uri
precedentemente disponibili. NavController ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classeNavDeepLinkRequest
. (b/136573074, b/135334841)
Modifiche alle API
- Ampliamento notevole del supporto di Kotlin DSL per le destinazioni della navigazione dinamica. (b/148969800)
Correzioni di bug
- Risolto il problema per cui gli intent dei link diretti venivano ignorati quando si utilizza una destinazione iniziale nidificata. (b/154532067)
Versione 2.3.0-alpha05
15 aprile 2020
androidx.navigation:navigation-*:2.3.0-alpha05
viene rilasciato. La versione 2.3.0-alpha05 contiene questi commit.
Nuove funzionalità
- Per il grafico dinamico include l'uso di
<include-dynamic>
, non è più necessario specificareapp:graphPackage
e ne verrà utilizzato uno predefinito aggiungendo il suffissomoduleName
al suffissoapplicationId
dopo un punto. Se devi personalizzaregraphPackage
, ora è supportato un segnaposto${applicationId}
. (b/152696768) - Il Navigation Graph Kotlin DSL ora espone un
defaultArguments
Map
per le azioni, rispecchiando la possibilità di impostare valori predefiniti sugli elementi<action>
nei file XML di navigazione. (b/150345605)
Correzioni di bug
- Da Navigazione 2.2.2: è stato corretto un
IllegalStateException
durante il collegamento diretto alla destinazione iniziale del grafico quando nella tua attività sono presenti più istanzeNavHostFragment
. (b/147378752)
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal 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
androidx.navigation:navigation-*:2.3.0-alpha04
viene rilasciato. La versione 2.3.0-alpha04 contiene questi commit.
Nuove funzionalità
- Aggiunto il supporto per le attività dei moduli delle funzionalità e le destinazioni dei frammenti in DSL di navigazione Kotlin. (b/148969800)
Modifiche alle API
- La classe
DynamicExtras
non utilizza più un pattern del generatore e ora può essere creata direttamente. (aosp/1253671) DynamicActivityNavigator
ora richiede unContext
nel suo costruttore anziché unActivity
. (aosp/1250252)
Correzioni di bug
NavigationUI
non ignora più le etichette vuote (ovvero una destinazione conandroid:label=””
) e ora imposta correttamente una stringa vuota per il titolo. (b/148679860)
Aggiornamenti delle dipendenze
- Gli elementi delle funzionalità dinamiche di navigazione ora dipendono da
1.6.5
di Play principali. (b/149556401)
Versione 2.3.0-alpha03
4 marzo 2020
androidx.navigation:navigation-*:2.3.0-alpha03
viene rilasciato. La versione 2.3.0-alpha03 contiene questi commit.
Modifiche alle API
- Anziché affidarsi alla classe
DrawerLayout
concreta,AppBarConfiguration
ora utilizza l'interfacciaOpenable
introdotta in CustomView1.1.0-alpha02
(cheDrawerLayout
implementa a partire da DrawerLayout1.1.0-alpha04
), che ti consente di utilizzare implementazioni personalizzate diOpenable
conNavigationUI
. (b/129030452)
Correzioni di bug
- Ora le regole ProGuard
navigation-common-ktx
mantengono correttamente solo le classiNavArgs
utilizzate anziché tutte le istanzeNavArgs
. (b/150213558)
Modifiche delle dipendenze
- La navigazione ha ripristinato la sua 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 la navigazione non dipende da nuove API nel core1.2.0
.
Versione 2.3.0-alpha02
19 febbraio 2020
androidx.navigation:navigation-*:2.3.0-alpha02
viene rilasciato. La versione 2.3.0-alpha02 contiene questi commit.
Nuove funzionalità
- L'
NavBackStackEntry
ora consente di accedere a unaSavedStateHandle
adatta per l'archiviazione di piccole quantità di stato salvato da associare a una determinata voce di back stack. Consulta Restituzione di un risultato per un esempio di caso d'uso. (b/79672220)
Modifiche alle API
- Sono stati aggiunti pratici metodi di
getCurrentBackStackEntry()
egetPreviousBackStackEntry()
per semplificare il recupero di unNavBackStackEntry
per le destinazioni attuali e precedenti. (b/79672220)
Correzioni di bug
- Ora
navigateUp()
passa gli argomenti della destinazione corrente eKEY_DEEP_LINK_INTENT
alla destinazione precedente quando avvii l'app sul tuo stack di attività. (b/147456890)
Modifiche delle dipendenze
- La navigazione ora dipende dall'app Core
1.2.0
.
Versione 2.3.0-alpha01
5 febbraio 2020
androidx.navigation:navigation-*:2.3.0-alpha01
viene rilasciato. La versione 2.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Il nuovo elemento
navigation-testing
fornisce una classeTestNavHostController
. Questa classe fornisce un'alternativa all'utilizzo di unaNavController
fittizia durante il test della 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
) consente di includere destinazioni o interi grafici di navigazione (tramite<include-dynamic>
) dai moduli delle funzionalità, consentendo un'installazione immediata dei moduli delle funzionalità on demand durante la navigazione verso queste destinazioni. Per ulteriori informazioni, consulta Navigare con i moduli delle funzionalità. (b/132170186)
Correzioni di bug
- Da Navigazione
2.2.1
: i link diretti senza parametri di query ora ignorano correttamente i parametri di query anziché aggiungerli agli elementi{argument}
finali o non corrispondenti al link diretto. (b/147447512) - Da Navigazione
2.2.1
: lenavigation-ui
regole ProGuard perDrawerArrowDrawable
sono state aggiornate per garantire cheandroid.enableJetifier=true
non sia richiesto. (b/147610424) - Da Navigazione
2.2.1
: il modulonavigation-common-ktx
ora ha un nome di pacchetto manifest univoco anziché condividere lo stesso nome di pacchetto manifest dinavigation-runtime-ktx
. (aosp/1141947)
Aggiornamenti delle dipendenze
- Da Navigazione
2.2.1
: la navigazione2.2.1
ora dipende da Lifecycle ViewModel SavingState2.2.0
e Frammento1.2.1
.
Versione 2.2.2
Versione 2.2.2
15 aprile 2020
androidx.navigation:navigation-*:2.2.2
vengono rilasciati. La versione 2.2.2 contiene questi commit.
Correzioni di bug
- È stato corretto un
IllegalStateException
durante il collegamento diretto alla destinazione iniziale del grafico quando nella tua Attività sono presenti più istanzeNavHostFragment
. (b/147378752) NavigationUI
non ignora più le etichette vuote (ovvero una destinazione conandroid:label=””
) e ora imposta correttamente una stringa vuota per il titolo. Questa versione era stata rilasciata in precedenza in Navigatore 2.3.0-alpha04. (b/148679860)- Ora le regole ProGuard
navigation-common-ktx
mantengono correttamente solo le classiNavArgs
utilizzate anziché tutte le istanzeNavArgs
. Questa versione era stata rilasciata in precedenza in Navigatore 2.3.0-alpha03. (b/150213558
Aggiornamenti delle dipendenze
- La navigazione ora dipende dal frammento
1.2.4
. (aosp/1277325)
Versione 2.2.1
Versione 2.2.1
5 febbraio 2020
androidx.navigation:navigation-*:2.2.1
viene rilasciato. La versione 2.2.1 contiene questi commit.
Correzioni di bug
- Ora i link diretti senza parametri di query ignorano correttamente i parametri di query anziché aggiungerli agli elementi
{argument}
finali o non corrispondenti al link diretto. (b/147447512) - Le
navigation-ui
regole ProGuard perDrawerArrowDrawable
sono state aggiornate per garantire cheandroid.enableJetifier=true
non sia richiesto. (b/147610424) - Il modulo
navigation-common-ktx
ora ha un nome di pacchetto manifest univoco anziché condividere lo stesso nome del pacchetto manifest dinavigation-runtime-ktx
. (aosp/1141947)
Aggiornamenti delle dipendenze
- La navigazione
2.2.1
ora dipende da Lifecycle ViewModel SavingState2.2.0
e Frammento1.2.1
.
Versione 2.2.0
Versione 2.2.0
22 gennaio 2020
androidx.navigation:navigation-*:2.2.0
viene rilasciato. La versione 2.2.0 contiene questi commit.
Modifiche importanti dalla versione 2.1.0
- NavBackStackEntry: ora puoi chiamare
NavController.getBackStackEntry()
, passando l'ID di una destinazione o di un grafico di navigazione sullo stack back stack. L'elementoNavBackStackEntry
restituito fornisce un elementoLifecycleOwner
basato sulla navigazione,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
, oltre a fornire gli argomenti utilizzati per avviare quella destinazione. - Integrazione di ViewModel SavingState del ciclo di vita:
SavedStateViewModelFactory
è ora la fabbrica predefinita utilizzata quando si utilizzaby navGraphViewModels()
o il costruttoreViewModelProvider
con un valoreViewModelStoreOwner
restituito daNavController.getBackStackEntry()
oNavController.getViewModelStoreOwner()
. - Supporto dei parametri di query per i link diretti: i link diretti con parametri di query ora supportano parametri di query riordinati. Gli argomenti che hanno un valore predefinito o che sono nulli sono ora facoltativi quando vengono corrispondenti i link diretti.
- Supporto dell'animazione migliorato:
NavHostFragment
ora utilizzaFragmentContainerView
rispetto a Fragment 1.2.0 per risolvere i problemi di ordinamento Z delle animazioni e l'invio di riquadri di finestre a Fragments.
Versione 2.2.0-rc04
18 dicembre 2019
androidx.navigation:navigation-*:2.2.0-rc04
viene rilasciato. 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 regolate in Frammento1.2.0-rc04
. (b/145769814)
Versione 2.2.0-rc03
4 dicembre 2019
androidx.navigation:navigation-*:2.2.0-rc03
viene rilasciato. La versione 2.2.0-rc03 contiene questi commit.
Correzioni di bug
- Risolto il problema con l'analisi dei link diretti quando si utilizzavano parametri di query e un argomento come ultima parte del percorso che impediva l'analisi di più di un carattere dell'argomento del percorso finale. (b/144554689)
- Risolto un problema con l'analisi dei link diretti per cui i parametri facoltativi ricevono
"@null"
anzichénull
. (b/141613546) - Ora
NavHostFragment
ripristina correttamente il grafico dopo una modifica alla configurazione se utilizzato conFragmentContainerView
. (b/143752103)
Modifiche delle dipendenze
- La navigazione ora dipende da Ciclo di vita
2.2.0-rc03
, Lifecycle ViewModel SavingState1.0.0-rc03
, Attività1.1.0-rc03
e Fragment1.2.0-rc03
dove appropriato.
Versione 2.2.0-rc02
7 novembre 2019
androidx.navigation:navigation-*:2.2.0-rc02
viene rilasciato. La versione 2.2.0-rc02 contiene questi commit.
Modifiche delle dipendenze
- La navigazione ora dipende da androidx.lifecycle
2.2.0-rc02
.
Versione 2.2.0-rc01
23 ottobre 2019
androidx.navigation:navigation-*:2.2.0-rc01
viene rilasciato senza modifiche dal giorno 2.2.0-beta01
. La versione 2.2.0-rc01 contiene questi commit.
Versione 2.2.0-beta01
9 ottobre 2019
androidx.navigation:navigation-*:2.2.0-beta01
viene rilasciato. La versione 2.2.0-beta01 contiene questi commit.
Nuove funzionalità
NavDestination
e le relative sottoclassi ora sostituisconotoString()
per fornire informazioni più utili durante il debug. (b/141264986)
Modifiche del comportamento
- Ora i parametri di query aggiuntivi vengono ignorati quando vengono corrispondenti dei link diretti, anziché causare la mancata riuscita della corrispondenza. (b/141482822)
Correzioni di bug
- Risolto il problema per cui gli argomenti nel percorso di un link diretto venivano ignorati se venissero specificati anche i parametri di query. (b/141505755)
- L'estensione Kotlin
navArgs()
suActivity
ora mostra un messaggio di errore migliore se non ci sono extra. (b/141408999) - Gli argomenti sicuri hanno generato
Directions
classi Java ora contengono valori predefiniti. (b/141099045) - Gli argomenti sicuri hanno generato
Args
classi Java ora contengono valori predefiniti. (b/140123727) - Quando utilizzi un
Toolbar
,NavigationUI
non anima più il cambiamento del testo quando ci si sposta tra due destinazioni di primo livello. (b/140848160)
Versione 2.2.0-alpha03
18 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha03
viene rilasciato. La versione 2.2.0-alpha03 contiene questi commit.
Modifiche del comportamento
- La chiamata a
setViewModelStore()
dopo aver chiamatosetGraph
ora generaIllegalStateException
. Questo valore dovrebbe sempre essere impostato daNavHost
durante la configurazione iniziale per garantire che tutte le istanzeNavBackStackEntry
abbiano uno spazio di archiviazione coerente per le istanzeViewModel
. (aosp/1111821)
Correzioni di bug
- È stato corretto un
ConcurrentModificationException
durante l'utilizzo di istanzeViewModel
collegate a più istanzeViewModelStore
con ambito dei grafici di navigazione diversi. (aosp/1112257)
Versione 2.2.0-alpha02
5 settembre 2019
androidx.navigation:navigation-*:2.2.0-alpha02
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- I link diretti con parametri di query ora supportano parametri di query riordinati; gli argomenti che hanno un valore predefinito o che sono nulli ora sono facoltativi quando vengono corrispondenti i link diretti. (b/133273839)
- Ora puoi chiamare
NavController.getBackStackEntry()
, passando l'ID di una destinazione o di un grafico di navigazione sullo stack posteriore. L'elementoNavBackStackEntry
restituito fornisce un elementoLifecycleOwner
basato sulla navigazione,ViewModelStoreOwner
(lo stesso restituito daNavController.getViewModelStoreOwner()
) eSavedStateRegistryOwner
, oltre a fornire gli argomenti utilizzati per avviare quella destinazione. (aosp/1101691, aosp/1101710)
Correzioni di bug
- Risolto un problema per cui l'aggiunta di
NavHostFragment
inViewPager2
non riusciva con unIllegalArgumentException
. (b/133640271) NavInflater
ora evita di chiamaregetResourceName()
inutilmente, accelerando il tempo di inflazione fino al 40%. (b/139213740)
Versione 2.2.0-alpha01
7 agosto 2019
androidx.navigation:navigation-*:2.2.0-alpha01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
SavedStateViewModelFactory
è ora il valore 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()
deprecata suNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Correzioni di bug
NavHostFragment
ora utilizzaFragmentContainerView
per risolvere i problemi di ordinamento Z dell'animazione e l'invio di riquadri di finestre a Fragmenti. (b/137310379)
Versione 2.1.0
Versione 2.1.0
5 settembre 2019
androidx.navigation:navigation-*:2.1.0
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche importanti dalla versione 2.0.0
- Definizione dell'ambito dei ViewModel in un grafico di navigazione: ora puoi creare modelli 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 l'APIgetViewModelStoreOwner()
aggiunta aNavController
. Per ulteriori informazioni, vedi Condividere dati relativi all'interfaccia utente tra le destinazioni. - Destinazioni delle finestre di dialogo: ora puoi creare destinazioni
<dialog>
in cui verrà visualizzato unDialogFragment
quandonavigate
.NavHostFragment
supporta le destinazioni delle finestre di dialogo per impostazione predefinita. Per ulteriori informazioni, vedi Creare una destinazione da un DialogFragment. - Navigazione tramite l'URI: ora puoi
navigate
utilizzando unUri
, che utilizza il<deepLink>
che hai aggiunto a una destinazione per la navigazione. Per ulteriori informazioni, consulta Navigare con l'URI. - NavHostController: le API utilizzate specificamente per la creazione di un
NavHost
personalizzato sono state spostate inNavHostController
, in modo da consentire alle implementazioni di connettere ilNavController
aiLifecycleOwner
,OnBackPressedDispatcher
eViewModelStore
di hosting.
Versione 2.1.0-rc01
7 agosto 2019
androidx.navigation:navigation-*:2.1.0-rc01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- L'API
getViewModelStore()
deprecata suNavController
introdotta in2.1.0-alpha02
è stata rimossa. (aosp/1091021)
Versione 2.1.0-beta02
19 luglio 2019
androidx.navigation:*:2.1.0-beta02
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Correzioni di bug
- È stata rimossa la dipendenza Jacoco involontaria introdotta in
2.1.0-beta01
. (b/137782950)
Versione 2.1.0-beta01
17 luglio 2019
androidx.navigation:*:2.1.0-beta01
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Ora
NavigationUI
anima la rimozione del pulsante Su quando si utilizzasetupWithNavController()
conToolbar
oCollapsingToolbarLayout
. (b/131403621)
Correzioni di bug
- È stato risolto un problema di tempistica quando si utilizzavano più NavHostFragments con lo stesso container con
findNavController()
. (b/136021571)
Versione 2.1.0-alpha06
2 luglio 2019
androidx.navigation:*:2.1.0-alpha06
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- L'attributo
app:navGraph
utilizzato da NavHostFragment è stato ora 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 ritirata a favore del nuovo metodogetViewModelStoreOwner()
che restituisce unViewModelStoreOwner
. (aosp/987010) - L'implementazione delle destinazioni di finestre mobili, come le destinazioni
<dialog>
, è stata generalizzata in un'interfaccia degli indicatori,FloatingWindow
, che ora tutte le destinazioni<dialog>
implementano. I metodi dell'UI di navigazione per interagire con la barra dell'app superiore ora ignorano le destinazioniFloatingWindow
. (b/133600763)
Modifiche del comportamento
- La navigazione ora mantiene correttamente il suo stato sincronizzato con ciò che viene visualizzato sullo schermo quando si utilizza una destinazione
<dialog>
. Di conseguenza, ora durante la navigazione vengono aggiunte automaticamente le destinazioni<dialog>
quando ti sposti verso una destinazione che non sia impostata come finestra di dialogo e non attiva, ad esempio una destinazione<fragment>
. (b/134089818)
Correzioni di bug
- La navigazione ora sopprime l'animazione che si verifica quando si ricrea l'attività quando si gestisce un link diretto, correggendo il flash visivo. (b/130362979)
- Risolto il bug per cui lo stack posteriore di navigazione non era sincronizzato quando veniva inserito un frammento durante l'aggiunta del frammento iniziale. (b/133832218)
Versione 2.1.0-alpha05
5 giugno 2019
androidx.navigation:*:2.1.0-alpha05
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Modifiche alle API
- Le API relative all'host su
NavController
sono state rinominate e spostate in una nuova sottoclasse diNavController
,NavHostController
. (aosp/966091). - Il metodo
setHostOnBackPressedDispatcherOwner()
NavController
è stato sostituito con il metodosetOnBackPressedDispatcher()
diNavHostController
e ora richiede la chiamatasetLifecycleOwner()
prima di chiamarlo. (aosp/965409) NavHostController
ora contiene un metodoenableOnBackPressed(boolean)
che sostituisce la classeNavHostOnBackPressedManager
precedentemente restituita dasetHostOnBackPressedDispatcherOwner()
. (aosp/966091).
Correzioni di bug
- Risolto il problema per cui lo stack precedente non era corretto dopo la navigazione per URI. (b/132509387)
- I link diretti gestiti automaticamente da NavController ora vengono attivati solo una volta. (b/132754763)
Versione 2.1.0-alpha04
16 maggio 2019
androidx.navigation:*:2.1.0-alpha04
viene rilasciato. 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
Navigazione. B/132077777- Ora
DialogFragmentNavigator
gestisce correttamente le operazionipopBackStack()
enavigateUp()
. b/132576764 - Risolto il problema di
IllegalStateException: unknown destination during restore
quando si navigava ripetutamente tra grafici nidificati. b/131733658
Versione 2.1.0-alpha03
7 maggio 2019
androidx.navigation:*:2.1.0-alpha03
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Problemi noti
- NavHostFragment continua a intercettare il pulsante Indietro del sistema nonostante l'utilizzo di
app:defaultNavHost="false"
b/132077777
Nuove funzionalità
- Ora puoi creare destinazioni
<dialog>
che mostreranno unDialogFragment
quandonavigate
.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
Modifiche 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 sua funzionalità è stata spostata nel nuovo metodoonCreateNavController()
per chiarire che questo è il punto di ingresso corretto per l'aggiunta di navigatori personalizzati durante la sottoclasseNavHostFragment
. B/122802849 - Un metodo
hasDeepLink()
è stato aggiunto aNavDestination
per consentirti di verificare se un determinatoUri
può essere gestito da quella destinazione o, nel caso di unNavGraph
, da qualsiasi destinazione nel grafico di navigazione. b/117437718
Correzioni di bug
- Gli argomenti predefiniti vengono ora passati correttamente alle istanze
OnDestinationChangedListener
. b/130630686 NavHostFragment
ora intercetta gli eventi precedenti di sistema utilizzandoOnBackPressedDispatcher
, correggendo un problema durante la navigazione condizionale nei metodi del ciclo di vita dei frammenti quando si torna a un frammento. b/111598096- Per gli argomenti sicuri, un elemento
android:defaultValue=”@null”
con unapp:argType
non specificato ora viene dedotto correttamente come argomentostring
. b/129629192
Versione 2.1.0-alpha02
3 aprile 2019
androidx.navigation:*:2.1.0-alpha02
viene rilasciato. I commit inclusi in questa versione sono disponibili qui.
Nuove funzionalità
- Ora puoi creare oggetti ViewModel con ambito a livello di grafico di navigazione tramite il delegato della proprietà
by navGraphViewModels()
per gli utenti Kotlin oppure utilizzando l'APIgetViewModelStore()
aggiunta aNavController
. B/111614463
Modifiche alle API
- Ora puoi aggiungere un elemento
app:targetPackage
a una destinazione<activity>
per limitare il nome del pacchetto corrispondente. Supportaapp:targetPackage="${applicationId}"
per limitare il pacchetto al tuo ID applicazione. b/110975456
Correzioni di bug
- Le destinazioni
android:name
per<activity>
non vengono più divise in una classe al momento dell'inflazione, impedendo le ClassNotFoundExceptions quando si utilizzano le funzionalità dinamiche. b/124538597
Versione 2.1.0-alpha01
19 marzo 2019
Questa è la prima versione alpha di Navigazione 2.1.0
.
Modifiche delle dipendenze
- La navigazione ora dipende da
androidx.core:core:1.0.1
eandroidx.fragment:fragment:1.1.0-alpha05
. Questa release rimuove anche la dipendenza daandroidx.legacy:legacy-support-core-utils:1.0.0
. B/128632612
Modifiche alle API
- È stato aggiunto un nuovo metodo
Navigation.createNavigateOnClickListener(NavDirections)
come alternativa alla creazione di un listener di clic con un ID risorsa e un bundle. b/127631752 - L'API
FragmentNavigator.instantiateFragment
è deprecata. L'implementazione predefinita ora utilizzaFragmentFactory
per creare un'istanza dei frammenti.b/119054429
Correzioni di bug
- La navigazione non invia più un
Bundle
nullo quando a una destinazione sono associati argomenti, risolvendo un problema quando utilizziandroid:defaultValue="@null"
. B/128531879 - L'app Args sicuri ora dipende da KotlinPoet 1.1.0 e risolve un problema con i nomi dei pacchetti molto lunghi. b/123654948
Versione 2.0.0
Versione 2.0.0
14 marzo 2019
La navigazione 2.0.0
è stata rilasciata senza modifiche da 2.0.0-rc02
.
Versione 2.0.0-rc02
6 marzo 2019
La navigazione 2.0.0-rc02 fornisce nuovi artefatti con l'ID gruppo androidx.navigation
e cambia le dipendenze negli equivalenti AndroidX.
Il comportamento di 2.0.0-rc02 è identico a quello di Navigation 1.0.0-rc02 e non è necessario apportare modifiche al codice per eseguire l'aggiornamento da 1.0.0-rc02 oltre ad aggiornare le dipendenze in modo che corrispondano alle nuove dipendenze.
Per utilizzare le release 2.X di Navigazione, è necessario che il tuo progetto sia stato eseguito la migrazione ad AndroidX. La Navigazione stabile 1.0 sarà l'ultima release che utilizza le dipendenze della libreria di assistenza; tutti gli sviluppi futuri oltre la 1.0 saranno basati su AndroidX e si baseranno sulla release stabile 2.0.
Dipendenze pre-AndroidX
Per le versioni di Navigazione precedenti ad AndroidX, includi queste dipendenze:
dependencies {
def nav_version = "1.0.0"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
implementation "android.arch.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Per Argomenti sicuri, aggiungi il seguente classpath al 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
è stata 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 Navigazione. Questa release contiene una serie di correzioni di bug.
Correzioni di bug
- Risolto il problema per cui
popBackStack()
veniva ignorato se il grafico principale non avesse un ID b/126251695 - Ora
navigateUp()
gestisce correttamente il ritorno all'attività dell'app quando viene richiamato dopo aver gestito un link diretto senzaFLAG_ACTIVITY_NEW_TASK
b/126082008 - Risolto il problema per cui
ActivityNavigator.applyPopAnimationsToPendingTransition
non applicava l'animazione di uscita pop corretta b/126237567 - Il codice Kotlin generato da Safe Args ora esegue correttamente l'escape delle parole chiave Kotlin
come
in
efun
nel nome del pacchetto associato alla classeR
. b/126020455
Versione 1.0.0-rc01
21 febbraio 2019
Questa è una release candidata per la release stabile di Navigazione: 1.0.0. Questa release contiene una correzione di bug.
Correzioni di bug
- Risolto il problema durante l'utilizzo dei frammenti e delle operazioni di navigazione
singleTop
b/124294805
Versione 1.0.0-beta02
12 febbraio 2019
Questa release include una serie di piccoli miglioramenti e importanti correzioni di bug.
Nuove funzionalità
- Ora puoi utilizzare
0
comeandroid:defaultValue
per gli argomentireference
. b/124248602
Modifiche del comportamento
- Ora le corrispondenze esatte dei link diretti hanno la priorità sui link diretti con
.*
o corrispondenze all'argomento. b/123969518
Correzioni di bug
popBackStack()
enavigateUp
ora restituiscono correttamentefalse
quando vengono inseriti l'ultima destinazione nello stack posteriore, correggendo una regressione introdotta in1.0.0-beta01
. B/123933201- La navigazione ora imposta correttamente
ClassLoader
durante il ripristino dello stato dell'istanza salvata, evitando problemi quando utilizzi classi personalizzate in stato salvato inNavigator
o in argomenti inviati a unNavDestination
. B/123893858 - Args sicuri ha generato classi NavArgs che non si arrestano più in modo anomalo durante il ripristino di un argomento
Parcelable[]
dallo stato dell'istanza salvata. b/123963545 - Safe Args ora pulisce correttamente le classi Kotlin generate non necessarie. b/124120883
Versione 1.0.0-beta01
4 febbraio 2019
Questa è la prima versione beta di Navigazione. In futuro, l'API Navigazione dovrebbe rimanere stabile fino alla versione successiva, a meno che non si verifichi un problema critico. Questa release contiene alcune correzioni di bug e modifiche al comportamento.
Modifiche del comportamento
- La navigazione ora assicura che i valori predefiniti degli argomenti vengano trattati in modo identico
in runtime e tramite Args sicuri. Di conseguenza, solo gli argomenti con
app:argType="reference"
possono avere un valore predefinito che punta a un'altra risorsa (ad esempio,@color/colorPrimary
). Il tentativo di utilizzare un valore predefinito di riferimento con un valoreapp:argType
diverso comporterà un'eccezione durante l'analisi del file XML di navigazione. b/123551990 - L'app Args sicuri ora dipende dal plug-in Android Gradle 3.3.0 aosp/888413
- Il servizio Args sicuro ora dipende da Kotlin 1.3.20 aosp/888414
Correzioni di bug
- Ora è possibile utilizzare Safe Args nei moduli delle librerie e delle funzionalità su tutte le versioni del plug-in Android per Gradle.b/121304903
- È stata corretta una regressione che causava la rimozione di tutte le copie di una destinazione dallo stack precedente, anziché di una singola destinazione alla volta.
b/123552990
popBackStack()
- Risolto il problema per cui lo stato
FragmentNavigator
veniva desincronizzato con lo stato diNavController
, causando unIllegalStateException
quando si tentava di ripristinare lo stack precedente. b/123803044 - Risolto il problema per cui la freccia indietro gestita da
NavigationUI
non veniva visualizzata quando si utilizzava ProGuard con offuscamento. b/123449431 - Il codice generato da Args sicuri ora gestisce correttamente l'uso di un
app:argType
che rimanda a una classe interna statica nel formato.OuterClass$InnerClass
. B/123736741 - Il codice Java generato da Safe Args ora gestisce correttamente le azioni globali e le destinazioni profondamente nidificate. b/123347762
Versione 1.0.0-alpha11
23 gennaio 2019
Questa è una release hotfix di 1.0.0-alpha10
che corregge un problema relativo ad Args sicuri.
Correzioni di bug
- Risolvi un problema per cui Safe Args non importava la classe Directions associata alle azioni globali. b/123307342
Versione 1.0.0-alpha10
23 gennaio 2019
Problemi noti
- Safe Args non importa la classe Directions associata alle azioni globali. b/123307342
Questa release contiene modifiche all'API che provocano errori; consulta la sezione Modifiche che provocano un errore di seguito.
Nuove funzionalità
- Gli utenti Kotlin ora possono utilizzare il delegato della proprietà
by navArgs()
per ricevere pigramente un riferimento a una classeNavArgs
generata dagli argomenti sicuri in un elementoActivity
oFragment
. B/122603367 - Safe Args ora consente di generare codice Kotlin applicando il plug-in
androidx.navigation.safeargs.kotlin
. Il codice Kotlin è creato appositamente per i moduli Kotlin, utilizzando argomenti predefiniti e classi immutabili rispetto al pattern del builder, ancora disponibile tramite il precedente plug-inandroidx.navigation.safeargs
.b/110263087
Modifiche del comportamento
- I link diretti corrispondenti ora sono polarizzati verso il link diretto con il maggior numero di argomenti corrispondenti. b/118393029
- La chiamata di
setGraph()
su unNavController
comporterà il ripristino dello stack di supporto. b/111450672 - I link diretti sconosciuti non generano più un
IllegalStateException
, ma vengono ignorati, risolvendo i problemi conNavHostFragment
nidificati o multipli. b/121340440
Modifiche che provocano un errore
- Il metodo
NavOptions.applyPopAnimationsToPendingTransition()
per applicare animazioni pop a un'attività è stato spostato inActivityNavigator
. B/122413117 - Ora il file Safe Args evita la duplicazione di classi identiche per azioni senza
argomenti. Il tipo restituito per nessun metodo di argomento nelle classi NavDirections generate è ora
NavDirections
. B/123233147 - Le classi di Indicazioni stradali generate da Args sicuri non hanno più un costruttore pubblico; dovresti interagire solo con i metodi statici generati. b/123031660
- Le classi
NavDirections
di ARG sicuri non hanno più un costruttore pubblico. Devono essere generate solo tramite i metodi statici nelle classi Directions generate. b/122963206 - L'elemento
Bundle
restituito dagetArguments()
diNavDirections
è ora contrassegnato come@NonNull
anziché come@Nullable
. B/123243957
Correzioni di bug
NavDeepLinkBuilder
ora gestisce correttamente piùPendingIntent
simultanei nella stessa destinazione utilizzando gli argomenti trasmessi per determinarne l'univocità. b/120042732- Ora
NavController
gestisce correttamente le operazionipopBackStack()
quando utilizza un elementoNavHostFragment
nidificato o altri frammenti secondari con uno stack posteriore. b/122770335 NavigationUI
ora imposta correttamente la descrizione dei contenuti del pulsante Su. b/120395362- Le classi Directions generate da Args sicuri ora gestiscono correttamente le azioni globali che hanno lo stesso ID di un'azione su una destinazione. b/122962504
- Args sicuri ha generato
NavDirections
classi ora hanno correttamente valorihashCode()
uguali quandoequals()
restituirebbe true. b/123043662 FragmentNavigator
ora genera un messaggio di errore migliore se tenti di eseguire unaFragmentTransactions
personalizzata sulFragmentManager
diNavHostFragment
. Devi usare sempregetChildFragmentManager()
. B/112927148
Versione 1.0.0-alpha09
18 dicembre 2018
Questa release contiene modifiche all'API che provocano errori; consulta la sezione Modifiche che provocano un errore di seguito.
Abbiamo scelto di non continuare lo sviluppo dell'artefatto android.arch.navigation:navigation-testing
. Sebbene si sia rivelato utile per i test interni di NavController
, consigliamo vivamente di adottare strategie di test alternative, ad esempio simulare l'istanza NavController
per verificare che vengano eseguite le chiamate navigate()
corrette. Questo approccio è discusso in dettaglio nel discorso sull'attività singola al AndroidDevSummit 2018 e lavoreremo su un'ulteriore documentazione specifica relativa ai test con Navigazione.
Nuove funzionalità
- I
MenuItem
conmenuCategory="secondary"
non verranno più visualizzati nello stack posteriore quando vengono utilizzati con i metodiNavigationUI
. b/120104424 AppBarConfiguration
ora consente di impostare un'istanzaOnNavigateUpListener
di riserva che verrà chiamata quandonavController.navigateUp()
restituiràfalse
. b/79993862 b/120690961
Modifiche che provocano un errore
- Quando utilizzi un
<argument>
con unargType="reference"
, Navigazione non analizza più il riferimento, ma fornisce l'ID risorsa non elaborato. b/111736515 - Per impostazione predefinita,
onNavDestinationSelected()
torna alla destinazione iniziale del grafico di navigazione, rendendolo coerente con i metodisetup
. AggiungimenuCategory="secondary"
al tuoMenuItem
per evitare di estrarre lo stack posteriore. aosp/852869 - I metodi
fromBundle()
delle classiArgs
generate ora utilizzano un valore non nullBundle
anziché unBundle
aosp/845616 con valore null
Correzioni di bug
- Ora gli argomenti vengono analizzati correttamente dai link diretti come
argType
corretto anziché sempre come stringhe b/110273284 - La navigazione ora esporta correttamente le risorse pubbliche b/121059552
- Safe Args è ora compatibile con il plug-in Android Gradle 3.4 Canary 4 e versioni successive b/119662045
Versione 1.0.0-alpha08
6 dicembre 2018
Questa release contiene modifiche all'API che provocano errori; consulta la sezione Modifiche che provocano un errore di seguito.
Nuove funzionalità
- Le etichette di destinazione, se utilizzate con i metodi
NavigationUI
, ora sostituiranno automaticamente le istanze{argName}
inandroid:label
con l'argomento corretto b/80267266 - La navigazione ora dipende dalla libreria di assistenza 28.0.0 b/120293333
Modifiche che provocano un errore
OnNavigatedListener
è stato rinominato inOnDestinationChangedListener
b/118670572OnDestinationChangedListener
ora passa ancheBundle
degli argomenti aosp/837142- Gli attributi
app:clearTask
eapp:launchDocument
e i relativi metodi associati sono stati rimossi. Utilizzaapp:popUpTo
con la radice del grafico per rimuovere tutte le destinazioni dal tuo stack di riserva. b/119628354 ActivityNavigator.Extras
ora utilizza un patternBuilder
e aggiunge la possibilità di impostare qualsiasi flagIntent.FLAG_ACTIVITY_
aosp/828140- Il nome di
NavController.onHandleDeepLink
è stato cambiato inhandleDeepLink
aosp/836063 - Molti metodi e classi non destinati alle sottoclassi, come
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, sono stati creatifinal
aosp/835681 - Il metodo
NavHostFragment.setGraph()
deprecato è stato rimosso aosp/835684 - Il metodo
NavigationUI.navigateUp(DrawerLayout, NavController)
deprecato è stato rimosso. aosp/835684 - La creazione di frammenti è stata spostata in
FragmentNavigator
, in modo da delegare più facilmente la creazione di frammenti a unaFragmentFactory
. B/119054429 - Il costruttore per
NavGraphNavigator
non richiede più unContext
aosp/835340 - NavigatorProvider
è ora una classe, non un'interfaccia. L'elemento
NavigatorProvider
restituito dagetNavigatorProvider()
non ha modificato la sua funzionalità. aosp/830660 - Il partner
NavDestination.navigate()
è stato rimosso. Chiamanavigate()
sul numeroNavigator
. aosp/830663 - Refactoring significativo di
Navigator
, eliminando la necessità diOnNavigatorNavigatedListener
e grazie al fatto chenavigate
restituiscaNavDestination
. Navigator
istanza non può più inviare eventi pop aNavController
. Potresti usare unaOnBackPressedCallback
per intercettare la pressione del pulsante Indietro e chiamarenavController.popBackStack()
. aosp/833716
Correzioni di bug
- Ora
popUpTo
funziona regolarmente quando la destinazione è un elemento<navigation>
b/116831650 - Correzione di un numero di bug che generavano un errore
IllegalArgumentException
quando si utilizzavano grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - L'attributo
dataPattern
delle destinazioni<activity>
ora completerà gli argomenti degli argomenti non stringa chiamandotoString()
b/120161365
Argomenti sicuri
- Safe Args supporta oggetti serializzabili, inclusi i valori Enum. I tipi di enum
possono impostare un valore predefinito utilizzando il valore letterale enum senza il nome della classe
(ad es.
app:defaultValue="READ"
) b/111316353 - Safe Args supporta array di tutti i tipi supportati b/111487504
- Il comando Args sicuro ora ignora le sottocartelle delle directory delle risorse b/117893516
- Safe Args aggiunge annotazioni
@Override
ove opportuno b/117145301
Versione 1.0.0-alpha07
29 ottobre 2018
Nuove funzionalità
- Una nuova classe AppBarConfiguration consente di personalizzare quali destinazioni sono considerate destinazioni di primo livello. Per informazioni dettagliate, consulta la documentazione aggiornata. b/117333663
- Ora puoi passare argomenti alla destinazione iniziale del grafico b/110300470
- Ora i link diretti supportano schemi personalizzati con punti, trattini e segni più. b/112806402
Modifiche che provocano un errore
- Il modulo
navigation-testing-ktx
è stato incorporato innavigation-testing artifact
e non sarà più pubblicato. - L'artefatto
navigation-testing
ora ha una dipendenza dalla libreria standard Kotlin. L'API è stata modificata per essere più coerente con le convenzioni di Kotlin, ma puoi continuare a utilizzarla per i test scritti in Java. - I grafici di navigazione registrati relativi al manifest dei metadati non sono più supportati. b/118355937
- Non è più possibile associare le azioni alle destinazioni <activity>. aosp/785539
Correzioni di bug
- Ora i link diretti analizzano correttamente i parametri di query. b/110057514
- Le destinazioni delle attività ora applicano correttamente tutte le animazioni di entrata e uscita. b/117145284
- Risolto il problema di arresto anomalo che si verifica dopo le modifiche alla configurazione quando si utilizzano i navigatori personalizzati. b/110763345
Argomenti sicuri
- Gli argomenti sicuri ora hanno una dipendenza fissa dal plug-in Android Gradle 3.2.1. b/113167627
- Ora è possibile generare indicazioni stradali per le classi interne. b/117407555
- Risolto il problema relativo alla generazione di indicazioni stradali in un grafico <include>. b/116542123
Versione 1.0.0-alpha06
20 settembre 2018
Nuove funzionalità
- Le transizioni degli elementi condivisi per le destinazioni dei segmenti e delle attività sono ora supportate b/79665225. Per ulteriori informazioni, consulta Implementare la navigazione con il componente Architettura di navigazione.
- Se selezioni un elemento in
NavigationView
ora verrà chiuso qualsiasi riquadro inferiore contenente b/112158843
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 perde più visualizzazioni se utilizzato con visualizzazioni da singole destinazioni b/111961977- Il navigatore
onSaveState()
ora è chiamato una sola volta b/112627079
Argomenti sicuri
- Le classi Directions di destinazione della navigazione ora estendono la classe Directions dell'elemento principale se esiste b/79871405
- Le classi Directions e Args ora hanno un'implementazione di
toString()
utile b/111843389
Versione 1.0.0-alpha05
10 agosto 2018
Correzioni di bug
- Correggi un bug che causa un comportamento errato dello stack in modalità backstack. b/111907708
- Correggi un bug in
equals()
delle classi Args generati. b/111450897 - Correggi un errore di build in Args sicuri. b/109409713
- Correggere una conversione da identificatori di risorse ai nomi Java b/111602491
- Correggi i messaggi di errore relativi al supporto di valori null nel plug-in Safe Args.
- Aggiunta di annotazioni con supporto di valori null mancanti.
Versione 1.0.0-alpha04
19 luglio 2018
La navigazione 1.0.0-alpha04
e il plug-in gradle Safe Args associato contengono una serie di modifiche all'API, modifiche del comportamento e correzioni di bug.
Modifiche ad API / comportamento
- NavHostFragment imposterà sempre il frammento corrente come frammento di navigazione principale, assicurando che i gestori dei frammenti figlio vengano aperti prima che venga aperto il NavController esterno b/111345778
Argomenti sicuri
- Modifica di interruzione:
app:type
è stato modificato inapp:argType
per evitare conflitti con altre librerie come ConstraintLayout 2.0.0-alpha1 b/111110548 - I messaggi di errore di Args sicuri ora sono cliccabili b/111534438
- Le classi Args ora confermano che gli attributi
NonNull
non sono in realtà null b/111451769 - Sono state aggiunte ulteriori annotazioni
NonNull
alle classi generate da NavDirections e Args b/111455455 b/111455456
Correzioni di bug
- Risolto il problema con il pulsante Indietro di sistema dopo aver inserito il link diretto a una destinazione del frammento b/111515685
Versione 1.0.0-alpha03
12 luglio 2018
La navigazione 1.0.0-alpha03
e il plug-in gradle Safe Args associato contengono una serie di modifiche all'API, modifiche del comportamento e correzioni di bug.
Modifiche ad API / comportamento
- È stato aggiunto un metodo NavigationUI.setupWithNavController per 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 di destinazione specificato non è nello stack precedente b/110893637
- FragmentNavigator ora ignora le operazioni di navigazione dopo il salvataggio dello stato di FragmentManager, evitando le eccezioni "Impossibile eseguire questa azione dopo onSaveInstanceState" b/110987825
Argomenti sicuri
- Modifica che provoca un errore: i caratteri non alfanumerici nei nomi delle azioni e degli argomenti verranno sostituiti da lettere maiuscole e minuscole nei rispettivi nomi dei metodi NavDirections.
- Ad esempio,
DemoController.index
diventeràsetDemoControllerIndex
b/79995048 - Ad esempio,
action_show_settings
diventeràactionShowSettings
b/79642240
- Ad esempio,
- Modifica che provoca un errore: gli argomenti ora sono considerati non null per impostazione predefinita. Per consentire valori nulli negli argomenti stringa e parcellabili, aggiungi
app:nullable="true"
b/79642307 - Ora puoi utilizzare
app:type="long"
con defaultValues nel formato "123L" b/79563966 - Gli argomenti partizionabili sono ora supportati utilizzando un nome di classe completo per
app:type
. L'unico valore predefinito supportato è"@null"
b/79563966 - Le classi Args ora implementano
equals()
ehashCode()
b/79642246 - Il plug-in Safe Args può ora essere applicato ai progetti delle librerie b/80036553
- Il plug-in Safe Args può ora essere applicato ai progetti di funzionalità b/110011752
Correzioni di bug
- Risolti i problemi relativi alla navigazione durante i metodi del ciclo di vita dei frammenti b/109916080
- Risolti i problemi riscontrati più volte tra i grafici nidificati b/110178671
- Sono stati risolti i problemi relativi all'utilizzo di
setPopUpTo
con la prima destinazione nel grafico b/109909461 - Risolto il problema per cui tutti i valori
app:defaultValue
venivano passati come stringhe b/110710788 - aapt2 in bundle con il plug-in Android Gradle 3.2 Beta 01 ora aggiunge regole di Keep per ogni attributo
android:name
nei file XML di navigazione b/79874119 - È stata corretta la perdita di memoria durante la sostituzione del browser FragmentNavigator predefinito b/110900142
Versione 1.0.0-alpha02
7 giugno 2018
Modifiche del comportamento
FragmentNavigator
ora utilizzasetReorderingAllowed(true)
. B/109826220Ora la navigazione URLDecodifica gli argomenti analizzati dagli URL dei link diretti. b/79982454
Correzioni di bug
È stato corretto un
IllegalStateException
durante la chiamata della navigazione dai metodi del ciclo di vita dei frammenti. 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 utilizza defaultNavHost="true" come frammento secondario. b/79656847È stato corretto un
StackOverflowError
durante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato corretto un
IllegalArgumentException
durante il ritorno a un grafico nidificato. b/80453447Risolto il problema di frammenti che si sovrappongono durante l'utilizzo di
launchSingleTop
. B/79407969La navigazione ora crea lo stack sintetico corretto per i grafici nidificati. b/79734195
NavigationUI 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 ritirato. b/80338878L'attributo
launchDocument
per le azioni e l'API associata inNavOptions
è stato ritirato. b/109806636
Versione 1.0.0-alpha01
8 maggio 2018
La navigazione fornisce un framework per la creazione
della navigazione in-app. Questa release iniziale è 1.0.0-alpha01
.