Navigazione

La navigazione è un framework per spostarsi tra le "destinazioni" all'interno di un'applicazione Android che fornisce un'API coerente indipendentemente dal fatto che le destinazioni vengano implementate come frammenti, attività o altri componenti.
Aggiornamento più recente Release stabile Candidato per la release Versione beta Release alpha
20 marzo 2024 2.7.7 - - 2.8.0-alpha05

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 progetto, includi il seguente 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 del linguaggio Java adatto a moduli Java o Java e Kotlin misti, aggiungi questa riga al file build.gradle della tua app o del 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.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Versione 2.8

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 di NavGraph direttamente nella route startDestination senza fare affidamento su defaultValue. Questo vale anche per la nidificazione NavGraph startDestinations. (I0e0b5, b/109505019, b/188693139).

Modifiche alle API

  • È stata aggiunta la nuova classe CollectionNavType<T> astratta, una sottoclasse NavType<T> per argomenti basati su raccolte come elenco, array e mappe. (Ic6d63, b/188693139).
  • Tutti gli array NavType predefiniti (IntArrayType, LongArrayType, FloatArrayType, BoolArrayType e StringArrayType) ora sono di tipo CollectionNavType (Idcf79, b/188693139)
  • NavType ora fornisce una nuova API valueEquals 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 tipo NavTypes 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 come navigate o popBackStack ora possono associare correttamente le route riempite con gli argomenti dell'array NavTypes. (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 funzioni composable e/o navigation. (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 in DESTROYED troppo presto perché il ViewModel della voce associata non faceva parte dello stato salvato. (Ib6bb7, b/317581849).

Aggiornamento delle dipendenze

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ù chiamate saveState 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 di BackStackState fuga di dati in cui più chiamate saveState() su un singolo NavBackStackEntry 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 helper NavigationUI 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 se saveState è 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 a setGraph solo quando per l'intent in entrata era impostato il flag FLAG_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 a clearBackStack.

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 in popBackStack. (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 di FragmentNavigator. (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 stato RESUMED 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 vita RESUMED. (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 tra rememberSaveable e NavHost di Scrittura Navigazione potrebbe causare il ripristino corretto dello stato rememberSaveable delle destinazioni e di qualsiasi istanza SavedStateHandle di proprietà di ViewModel 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 in RESUMED. (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 un Lifecycle.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 da 1.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 e ExitTransition creati come parte di NavHost potevano potenzialmente rimanere in memoria anche dopo la rimozione di NavHost 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 che Activity è stato STOPPED e RESUMED. (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 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).

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 di NavBackStackEntry e i arguments passati a un OnDestinationChangedListener 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 a arguments o ad altre istanze OnDestinationChangedListener.
  • 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 sostituire serializeAsValue per serializzare un valore in una stringa, consentendo l'incapsulamento completo sia della serializzazione che della deserializzazione (tramite parseValue) nella classe NavType. StringType ora sostituisce questo metodo per chiamare Uri.encode sul String 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 valore startDestination 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 DSL navDeepLink, 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'oggetto FragmentManager sottostante può gestire il sistema. In questo modo Fragment 1.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 di FragmentManager genererà un IllegalArgumentException. Dovresti sempre aggiungere frammenti tramite l'API navigate().
  • Quando utilizzi la stringa esatta ${applicationId} come segnaposto negli attributi app:data e app:dataPattern nell'elemento attività di un file XML di navigazione, il segnaposto verrà compilato automaticamente con il valore packageName del contesto al momento dell'inflazione.
  • FragmentNavigator ora utilizza le API di transizione durante la navigazione e l'apertura di NavBackStackEntries. Questo significa che il Lifecycle di NavBackStackEntry attenderà il completamento degli effetti speciali del frammento di entrata e di uscita prima di spostare gli effetti speciali Lifecycle.State.
  • DialogFragmentNavigator ora utilizza le API di transizione durante la navigazione e l'apertura di NavBackStackEntries. Ciò significa che il Lifecycle di NavBackStackEntry attenderà che il Lifecycle di DialogFragment passi a DESTROYED prima di passare a DESTROYED stesso.
  • NavHostFragment ora consente di recuperare NavController non appena NavHostFragment viene collegato a FragmentManager, anziché solo dopo onCreate().
  • 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 un Menu), 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 funzione isTopLevelDestination su AppBarConfiguration.
  • Le integrazioni setupWithNavController in NavigationUI per l'utilizzo della barra dell'app in alto ora analizzeranno i valori R.string per gli argomenti ReferenceType trovati in android:label nei valori stringa anziché generare il numero intero della risorsa generato automaticamente.
  • NavigationUI ora fornisce i log quando non riesce a navigare tramite un MenuItem 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 vita onResume() causava un IllegalStateException. (I21884, b/279644470)

Versione 2.6.0-beta01

19 aprile 2023

androidx.navigation:navigation-*:2.6.0-beta01 viene rilasciato. La versione 2.6.0-beta01 contiene questi commit.

Nuove funzionalità

  • NavBackStackEntry ora fornisce un'implementazione toString 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 di FragmentManager genererà un IllegalArgumentException. Dovresti sempre aggiungere frammenti tramite l'API navigate(). (I6d38e).
  • Se navigate aggiunge una voce e popBackStack che la rimuove nello stesso frame, la voce principale risultante nello stack precedente ora riporta regolarmente l'elemento Lifecycle.State di RESUMED. (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 contiene NavArgument non null, la route di questa destinazione deve contenere segnaposto per gli argomenti con lo stesso nome del NavArgument non null. (Ic62bf, b/274697949)
  • Le navigazioni dei link diretti basate su Action/MimeType non riusciranno se nell'operazione di navigazione manca un valore NavArgument non nullo richiesto dal NavDestination con cui Action/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 di onLaunchSingleTop 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 recuperare NavController non appena NavHostFragment viene collegato a FragmentManager, anziché solo dopo onCreate(). (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 di NavController tornerà alla voce corretta. (I3a8ec, b/270447657)
  • FragmentNavigator ora inserirà correttamente le voci quando lo stack posteriore verrà richiamato tramite il system back o popBackStack() e se la transazione utilizza o meno gli effetti per il frammento. (I81bdf)
  • L'aggiunta di frammenti al FragmentManager di FragmentNavigator senza utilizzare la navigazione non causerà più un arresto anomalo. (b17204, b/274167493)

Aggiornamenti delle dipendenze

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 e clearBackStack 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() da NavController 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 in BottomNavigationView 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 utilizzavano Animation. (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 valore startDestination 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 raggiungere RESUMED quando vengono utilizzate le API Animation. (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 ottiene DESTROYED 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 di NavBackStackEntries. Questo significa che il Lifecycle di NavBackStackEntry attenderà il completamento degli effetti speciali del frammento di entrata e di uscita prima di spostare gli effetti speciali Lifecycle.State. (I3cb19, b/238686802).
  • DialogFragmentNavigator ora utilizza le API di transizione durante la navigazione e l'apertura di NavBackStackEntries. Ciò significa che il Lifecycle di NavBackStackEntry attenderà che il Lifecycle di DialogFragment passi a DESTROYED prima di passare a DESTROYED stesso. (I53ee5, b/261213893)

Modifiche alle API

  • NavigatorState ora fornisce l'API prepareForTransition per consentire ai Navigator di spostare NavBackStackEntries ai Lifecycle.State intermedi. (I42c21, b/238686802).
  • Ora puoi accedere allo stack precedente associato a NavGraphNavigator o ComposeNavigator tramite una proprietà backstack. ComposeNavigator ora mostra anche il callback onTransitionComplete() per contrassegnare come completata un'operazione NavBackStackEntry che ha eseguito un'operazione di navigazione o popBackStack. (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 un NavGraph nidificato, tutte le destinazioni, a partire dalla destinazione originale fino al relativo startDestination, 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 flag launchSingleTop 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 sostituire serializeAsValue per serializzare un valore in una stringa, consentendo l'incapsulamento completo sia della serializzazione che della deserializzazione (tramite parseValue) nella classe NavType. StringType ora sostituisce questo metodo per chiamare Uri.encode sul String specificato. (Ie5213, b/247637434)
  • NavigationUI ora fornisce i log quando non riesce a navigare tramite un MenuItem 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ù un NoSuchElementException se non è disponibile una destinazione per la scrittura di Crossfade. 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 di rememberSaveable) non veniva dimenticato e rimosso quando una destinazione veniva scollegata dallo stack posteriore. (I64949)

Aggiornamenti delle dipendenze

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 un Menu), 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 funzione isTopLevelDestination su AppBarConfiguration. (Ie936e, b/238496771).

Correzioni di bug

  • Il componente navigation:navigation-fragment ora dipende dalla versione del frammento 1.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 in NavigationUI per l'utilizzo della barra dell'app in alto ora analizzeranno i valori R.string per gli argomenti ReferenceType trovati in android: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 attributi app:data e app:dataPattern nell'elemento attività di un file XML di navigazione, il segnaposto verrà compilato automaticamente con il valore packageName del contesto al momento dell'inflazione. (Iaabde, b/234223561).
  • Se si tenta di creare un NavDeepLink vuoto utilizzando il Kotlin DSL navDeepLink, 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 formato android:label="{arg}" in una stringa. Supporta gli argomenti ReferenceType mediante l'analisi dei valori R.string nei relativi valori Stringa. (I07d89, b/236269380).

Modifiche del comportamento

  • I arguments di NavBackStackEntry e i arguments passati a un OnDestinationChangedListener 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 a arguments o ad altre istanze OnDestinationChangedListener. (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 flag launchSingleTop su true. (I5a2f1, b/237374580).
  • Da Navigazione 2.5.2: è stato risolto il problema IllegalStateException 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ù una NoSuchElementException quando non sarà disponibile una destinazione per la scrittura di Crossfade. 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

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 un Bundle. (Id86ed, b/237725966)

Aggiornamenti delle dipendenze

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 un ViewModelProvider.Factory stateless tramite CreationExtras del ciclo di vita 2.5.0.

Navigazione SafeArgs

  • Navigation Safe Args ha eseguito l'upgrade della dipendenza Android Gradle Plugin in modo che utilizzi 7.0.4, eliminando la compatibilità per le versioni AGP precedenti al giorno 7.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 uno applicationIdSuffix e uno spazio dei nomi senza applicationId presente o quando applicationId e lo spazio dei nomi differiscono. (I754b1, b/233119646)
  • NavArgument ora dispone di una funzione toString() 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 file navigation.xml.(Ic15a5, b/178403185)

Correzioni di bug

  • Gli ambiti componibili in NavHost e DialogHost 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 in ArgumentsGenerationTask 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 chiamata remember che circonda la chiamata a getBackStackEntry() passi anche in un oggetto NavBackStackEntry 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 utilizza popWithTransition durante l'esecuzione di una chiamata dismiss(). Questa operazione corregge una condizione di gara quando si utilizza un elemento ViewModel all'interno di una destinazione dialog, che causava un IllegalStateException 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 un IllegalStateException quando si nidifica una NavHost all'interno di un'altra NavHost 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

Correzioni di bug

  • NavHost ora dipende da visibleEntries da NavController per determinare quali voci scrivere. Ciò significa che, quando utilizzi NavHost nidificato, il campo NavHost interno ora dovrebbe animarsi correttamente. (I4ba2b, b/225394514).
  • L'StateFlow visibleEntries fornito da NavController 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 di navController è inferiore a AVVIATO, l'elenco degli interi visibili rimarrà invariato. (I9e2a8, b/225394514).
  • SavedStateViewFactory ora supporta l'uso di CreationExtras anche quando è stato inizializzato con un SavedStateRegistryOwner. 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 è presente AndroidManifest.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 a by navGraphViewModels per creare un ViewModel. (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 con NavBackStackEntries 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: ora NavHostFragment imposterà correttamente OnBackPressedDispatcher 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à

Correzioni di bug

  • Risolto il problema per cui l'accesso a un ViewModel creato tramite by navGraphViewModels() da onCreate() di un frammento non riusciva con un IllegalStateException. (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

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à correttamente OnBackPressedDispatcher 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 tramite by navGraphViewModels() da onCreate() di un frammento non riusciva con un IllegalStateException. (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 nuovo AbstractListDetailFragment. Questo frammento utilizza un elemento SlidingPaneLayout per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli che utilizza un NavHostFragment come implementazione, come mostrato nella nostra implementazione di esempio.
  • Il metodo currentBackStackEntryAsFlow() su NavController fornisce un Flow che emette ogni volta che cambia NavBackStackEntry corrente. Questo flusso può essere utilizzato come alternativa alla gestione manuale di un OnDestinationChangedListener.
  • NavController ora offre la possibilità di recuperare un elenco di tutte le istanze NavBackStackEntry visibili come StateFlow tramite la proprietà sperimentale visibleEntries.
  • 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() e getHierarchy() che possono essere utilizzate per implementare l'UI di navigazione personalizzata. findStartDestination() è una funzione di estensione di NavGraph che individuerà la destinazione di partenza effettiva che verrà visualizzata quando aprirai il grafico, anche se startDestination è a sua volta un NavGraph nidificato. getHierarchy() è una funzione in NavDestination 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 un BottomNavigationView sono stati aggiornati per prendere la superclasse introdotta in Material 1.4.0, NavigationBarView. In questo modo puoi utilizzare questi metodi con NavigationRailView.

  • Quando aggiungi un elemento <action> tramite XML, gli attributi dell'animazione possono utilizzare attributi estratti dal tuo tema utilizzando la sintassi app:enterAnim="?attr/transitionEnter".

  • Args sicuri ora genera un metodo fromSavedStateHandle() per ogni classe NavArgs. (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 di popUpToId.
  • L'API getStartDestination() è stata ritirata a favore di getStartDestinationId().

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 destinazioni composable e dialog, 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 stato RESUMED solo al termine di qualsiasi transizione in entrata e passa immediatamente a STARTED quando iniziano eventuali transizioni in uscita. In questo modo, puoi evitare tutti i problemi relativi a IllegalStateException e multi-touch attivando una chiamata navigate soltanto quando Lifecycle è RESUMED.
  • Ambito di ViewModel (tramite l'API viewModel() di Lifecycle ViewModel Compose 2.4.0 o hiltViewModel() di Hilt Navigation Compose 1.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 nel onCleared() di ViewModel che indica lo smaltimento permanente e la pulizia dello stato associato a NavBackStackEntry.
  • 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() e currentBackStackEntryAsState() per consentire lo stato di sollevamento e collegare NavController agli elementi componibili all'esterno di NavHost (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 di app:popUpToSaveState e app:restoreState per salvare lo stato di qualsiasi destinazione visualizzata tramite app:popUpTo e ripristinare lo stato associato alla destinazione trasmessa come app: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à booleana restoreState e la proprietà booleana saveState nello strumento per la creazione di popUpTo:

    // 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 tramite NavOptions.Builder, puoi utilizzare setRestoreState() e il nuovo sovraccarico per setPopUpTo() che richiede un parametro saveState 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 parametro saveState aggiuntivo.

  • Puoi utilizzare il metodo clearBackStack() per cancellare qualsiasi stato salvato con popBackStack() o popUpToSaveState.

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 aggiunge PendingIntent.FLAG_IMMUTABLE agli PendingIntent restituiti da createPendingIntent(), 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 contrassegna setGraph(), popBackStack(), navigateUp() e navigate(), i metodi che aggiornano NavBackStackEntry Lifecycle, come @MainThread, allineando la navigazione con l'applicazione forzata del thread principale introdotta nel ciclo di vita 2.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 a ViewModel creato tramite by navGraphViewModels() da onCreate() di frammento non riuscirà con un IllegalStateException. (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 di NavController. (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 dal NavBackStackEntry di una finestra di dialogo non riusciva se la finestra veniva chiusa. (I6b96d, b/206465487).
  • Risolto il problema durante l'utilizzo delle destinazioni activity con NavHost 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 come NavigationUI.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 a Lifecycle.State.STARTED quando NavHost viene aggiunto direttamente al setContent() 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 su NavigationUI restituiva true anche se in realtà non navigate() al grafico di navigazione. Ora utilizza la stessa logica utilizzata internamente da setupWithNavController per selezionare solo i MenuItem associati alla destinazione attuale utilizzando il valore hierarchy 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 a NavDestination. (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 attributi layout_width e layout_weight nel riquadro dell'elenco restituito da onCreateListPaneView() 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'API dismiss() asincrona per DialogFragment cancella correttamente tutte le destinazioni delle finestre di dialogo sopra la finestra di dialogo ora ignorata. Ciò non influisce sui casi in cui utilizzi popUpTo o popBackStack() per chiudere la finestra di dialogo. (I77ba2)
  • Ora AbstractAppBarOnDestinationChangedListener ha un messaggio di errore più chiaro per onDestinationChanged(). (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 tramite visibleEntries StateFlow (Ia964e)
  • rememberNavController() ora utilizza un insieme facoltativo di istanze Navigator che verrà aggiunto alle NavController 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() e fromSavedStateHandle() 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 con popBackStack() o popUpToSaveState. (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 di navigation-common anziché di navigation-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 saranno DESTROYED. (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 e currentBackStackEntryFlow non ricevevano notifiche quando si utilizzava launchSingleTop. (Iaaebc).

Aggiornamenti delle dipendenze

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à

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 e previousBackStackEntry all'interno di composable(), in combinazione con remember(), 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 chiami setGraph 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 in Lifecycle.State di NavBackStackEntry, il che significa che l'utilizzo di NavHost 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 stato NavController 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 codice ViewModel. (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() e requireDetailPaneNavHostFragment() su AbstractListDetailFragment sono stati rinominati rispettivamente getSlidingPaneLayout() e getDetailPaneNavHostFragment(). (I34a08).

Modifiche del comportamento

  • Quando navighi con animazioni (come Crossfade), il valore Lifecycle 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 senza Uri 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 stato RESUMED. (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 a popBackStack() dall'interno di un LifecycleObserver associato a un NavBackStackEntry causato da aggiornamenti entranti nello stato del NavController. (I64621)
  • AbstractListDetailFragment ora consente di eliminare completamente SlidingPaneLayout dall'APK quando non viene utilizzato AbstractListDetailFragment. (I611ad)
  • NavGraph e NavDestination 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 nuovo AbstractListDetailFragment. Questo frammento utilizza un elemento SlidingPaneLayout per gestire un riquadro elenco (fornito dalla sottoclasse) e un riquadro dei dettagli che utilizza un NavHostFragment come implementazione, come mostrato nella nostra implementazione di esempio. (Iac4be, b/191276636).
  • NavHost dell'elemento navigation-compose ora supporta dialog destinazioni oltre a composable. Ciascuna destinazione delle finestre di dialogo verrà mostrata all'interno di un elemento componibile Dialog, mobile sopra la destinazione composable 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 in NavigatorState è stata rinominata in push. Tutte le chiamate correnti a add() dovranno essere modificate in push(). (Ie89fc, b/172112072)
  • Ora le istanze Navigator personalizzate possono utilizzare le API pushWithTransaction e popWithTransition su NavigatorState 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 aggiunge PendingIntent.FLAG_IMMUTABLE agli PendingIntent restituiti da createPendingIntent(), 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 argomento string[] 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 giorno 1.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 cui setupActionBarWithNavController() 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 a popBackStack() dopo aver precedentemente popolato il grafico radice di NavController. (I2a330, b/190265699).
  • Le regole di ProGuard per by navArgs() ora vengono applicate correttamente quando utilizzi navigation-common o qualsiasi elemento che dipende da questo elemento. (I68800, b/190082521)
  • Un OnDestinationChangedListener che chiama navigate() 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 Gradle 6.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() e getHierarchy() che possono essere utilizzate per implementare l'UI di navigazione personalizzata. findDestination() è una funzione di estensione di NavGraph che individuerà una destinazione all'interno del grafico. getHierarchy() è una funzione su NavDestination 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 Material 1.4.0, NavigationBarView. In questo modo puoi utilizzare questi metodi con NavigationRailView. (Ib0b36, b/182938895).

  • Quando aggiungi un elemento <action> tramite XML, gli attributi dell'animazione possono utilizzare attributi estratti dal tuo tema utilizzando la sintassi app: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'API NavigatorState.pop() per informare NavController quando una finestra di dialogo viene chiusa premendo il pulsante Indietro del sistema o facendo clic all'esterno, assicurando che lo stato NavController sia sempre sincronizzato con lo stato del navigatore. (I2ead9).
  • La navigazione non restituisce più un ConcurrentModificationException quando utilizzi la manipolazione dell'elenco di OnDestinationChangedListeners da un callback onDestinationChanged. (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() su NavController fornisce un Flow che emette ogni volta che cambia NavBackStackEntry corrente. Questo flusso può essere utilizzato come alternativa alla gestione manuale di un OnDestinationChangedListener. (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 di app:popUpToSaveState e app:restoreState per salvare lo stato di qualsiasi destinazione visualizzata tramite app:popUpTo e ripristinare lo stato associato alla destinazione trasmessa come app: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à booleana restoreState e la proprietà booleana saveState nello strumento per la creazione di popUpTo:

    // 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 tramite NavOptions.Builder, puoi utilizzare setRestoreState() e il nuovo sovraccarico per setPopUpTo() che richiede un parametro saveState 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 parametro saveState 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 di popUpToId. (I59c73, b/172823546).
  • L'API getStartDestination() è stata ritirata a favore di getStartDestinationId(). (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 e argument e le funzioni di distruzione di NamedNavArgument sono ora pubblici. (#174, b/181320559)
  • È stata introdotta una nuova estensione NavBackStackEntry#provideToCompositionLocals che fornisce il valore NavBackStackEntry alle persone locali della composizione interessata. (n. 175, b/187229439)

Argomenti sicuri

  • Args sicuri ora genera un metodo fromSavedStateHandle() per ogni classe NavArgs. (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 contrassegna setGraph(), popBackStack(), navigateUp() e navigate(), i metodi che aggiornano NavBackStackEntry Lifecycle, come @MainThread, allineando la navigazione con l'applicazione forzata del thread principale introdotta nel ciclo di vita 2.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 diretto www.example.com/{color} anche quando l'enum ha il valore RED. (n. 152, b/135857840)

Compatibilità di Scrivi

  • androidx.navigation:navigation-compose:2.4.0-alpha01 è compatibile solo con Compose 1.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") del DialogFragmentNavigator 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 classe NavArgs. (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 e argument e le funzioni distruttive di NamedNavArgument. (#174, b/181320559)
  • Grazie a jossiwolf per aver introdotto una nuova estensione NavBackStackEntry#provideToCompositionLocals che fornisce NavBackStackEntry 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)

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 un Modifier, 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 un OnBackPressedDispatcherOwner, come nel caso dell'anteprima di NavHost. (I7d8b4).
  • Scrittura per la navigazione ora dipende da Navigazione 2.3.5 e viene risolto un problema quando si utilizza BackHandler all'interno di una destinazione NavHost. (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 valore ViewModelStoreOwner nullo per determinare meglio se un elemento ViewModelStoreOwner è disponibile nella composizione attuale. Le API che richiedono un ViewModelStoreOwner, come viewModel() e NavHost, generano comunque un'eccezione se non viene impostato un ViewModelStoreOwner. (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 campo LocalSavedStateRegistryOwner ComposeLocal con il valore NavBackStackEntry di quella destinazione, garantendo che qualsiasi stato salvato direttamente in SavedStateRegistry 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

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) su NavController che restituisce il NavBackStackEntry 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() e navigateUp() 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() e currentBackStackEntryAsState() per consentire lo stato di sollevamento e collegare NavController agli elementi componibili all'esterno di NavHost (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 o Uri, ora puoi accedere al tipo Uri, all'azione e al tipo MIME nella destinazione risultante recuperando l'intent dagli argomenti tramite KEY_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 con NavBackStackEntry come LifecycleOwner ora l'intercettazione corretta dopo che il ciclo di vita dell'attività è STOPPED, quindi STARTED (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 a www.example.com sia a www.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

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 da 0x. (n. 127, b/179166693)
  • android:defaultValue per un argomento con app:argType="float" ora supporta valori predefiniti interi, che ti consentono di utilizzare android:defaultValue="0" anziché richiedere l'uso di 0.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 o setLifecycleOwner 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 argomenti ReferenceType 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 a defaultValue per un argomento con app: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 suo Lifecycle venga spostato in CREATED. (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 un ResourceNotFoundException. (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> con onNavDestinationSelected 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 utilizzava launchSingleTop. (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 un popUpTo 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 con FragmentScenario e Navigation.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 che NavigationUI sia in grado di aprire il riquadro a scomparsa anche quando utilizzi LOCK_MODE_LOCKED_CLOSED o LOCK_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 e navigation-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 un TestNavHostController 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 elemento SavedStateHandle 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 per Openable: tutti gli utilizzi di DrawerLayout in NavigationUI sono stati sostituiti con l'interfaccia più generica di Openable aggiunta in CustomView 1.1.0 e implementata da DrawerLayout in DrawerLayout 1.1.0.
  • Supporto del tipo Mime e azione nei link diretti: i link diretti sono stati ampliati per supportare app:action e app:mimeType, oltre ai app:uri precedentemente disponibili. NavController ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classe NavDeepLinkRequest. 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 con singleTop. (b/158006669)
  • Tutte le eccezioni destination is unknown generate da NavController ora includono informazioni di debug aggiuntive che consentono di determinare lo stato di NavController. (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 numero setGraph() vengono ora inviate correttamente alla destinazione ripristinata dopo un arresto del processo. (b/155218371)
  • Quando utilizzi singleTop, ora gli argomenti di NavBackStackEntry vengono aggiornati correttamente e quelli aggiornati vengono inviati a tutte le istanze OnDestinationChangeListener. (b/156545508)

Aggiornamenti delle dipendenze

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 e app:mimeType oltre ai app:uri precedentemente disponibili. NavController ora supporta la navigazione in base a qualsiasi combinazione di questi campi tramite la nuova classe NavDeepLinkRequest. (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 specificare app:graphPackage e ne verrà utilizzato uno predefinito aggiungendo il suffisso moduleName al suffisso applicationId dopo un punto. Se devi personalizzare graphPackage, 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ù istanze NavHostFragment. (b/147378752)

Aggiornamenti delle dipendenze

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 un Context nel suo costruttore anziché un Activity. (aosp/1250252)

Correzioni di bug

  • NavigationUI non ignora più le etichette vuote (ovvero una destinazione con android: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'interfaccia Openable introdotta in CustomView 1.1.0-alpha02 (che DrawerLayout implementa a partire da DrawerLayout 1.1.0-alpha04), che ti consente di utilizzare implementazioni personalizzate di Openable con NavigationUI. (b/129030452)

Correzioni di bug

  • Ora le regole ProGuard navigation-common-ktx mantengono correttamente solo le classi NavArgs utilizzate anziché tutte le istanze NavArgs. (b/150213558)

Modifiche delle dipendenze

  • La navigazione ha ripristinato la sua dipendenza dal core 1.2.0 e ora dipende dal core 1.1.0 per evitare di costringere gli sviluppatori a passare a una dipendenza più recente quando la navigazione non dipende da nuove API nel core 1.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à

Modifiche alle API

  • Sono stati aggiunti pratici metodi di getCurrentBackStackEntry() e getPreviousBackStackEntry() per semplificare il recupero di un NavBackStackEntry per le destinazioni attuali e precedenti. (b/79672220)

Correzioni di bug

  • Ora navigateUp() passa gli argomenti della destinazione corrente e KEY_DEEP_LINK_INTENT alla destinazione precedente quando avvii l'app sul tuo stack di attività. (b/147456890)

Modifiche delle dipendenze

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 classe TestNavHostController. Questa classe fornisce un'alternativa all'utilizzo di una NavController 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: le navigation-ui regole ProGuard per DrawerArrowDrawable sono state aggiornate per garantire che android.enableJetifier=true non sia richiesto. (b/147610424)
  • Da Navigazione 2.2.1: il modulo navigation-common-ktx ora ha un nome di pacchetto manifest univoco anziché condividere lo stesso nome di pacchetto manifest di navigation-runtime-ktx. (aosp/1141947)

Aggiornamenti delle dipendenze

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ù istanze NavHostFragment. (b/147378752)
  • NavigationUI non ignora più le etichette vuote (ovvero una destinazione con android: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 classi NavArgs utilizzate anziché tutte le istanze NavArgs. Questa versione era stata rilasciata in precedenza in Navigatore 2.3.0-alpha03. (b/150213558

Aggiornamenti delle dipendenze

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 per DrawerArrowDrawable sono state aggiornate per garantire che android.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 di navigation-runtime-ktx. (aosp/1141947)

Aggiornamenti delle dipendenze

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'elemento NavBackStackEntry restituito fornisce un elemento LifecycleOwner basato sulla navigazione, ViewModelStoreOwner (lo stesso restituito da NavController.getViewModelStoreOwner()) e SavedStateRegistryOwner, 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 utilizza by navGraphViewModels() o il costruttore ViewModelProvider con un valore ViewModelStoreOwner restituito da NavController.getBackStackEntry() o NavController.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 utilizza FragmentContainerView 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 Frammento 1.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 con FragmentContainerView. (b/143752103)

Modifiche delle dipendenze

  • La navigazione ora dipende da Ciclo di vita 2.2.0-rc03, Lifecycle ViewModel SavingState 1.0.0-rc03, Attività 1.1.0-rc03 e Fragment 1.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 sostituiscono toString() 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() su Activity 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 chiamato setGraph ora genera IllegalStateException. Questo valore dovrebbe sempre essere impostato da NavHost durante la configurazione iniziale per garantire che tutte le istanze NavBackStackEntry abbiano uno spazio di archiviazione coerente per le istanze ViewModel. (aosp/1111821)

Correzioni di bug

  • È stato corretto un ConcurrentModificationException durante l'utilizzo di istanze ViewModel collegate a più istanze ViewModelStore 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'elemento NavBackStackEntry restituito fornisce un elemento LifecycleOwner basato sulla navigazione, ViewModelStoreOwner (lo stesso restituito da NavController.getViewModelStoreOwner()) e SavedStateRegistryOwner, 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 in ViewPager2 non riusciva con un IllegalArgumentException. (b/133640271)
  • NavInflater ora evita di chiamare getResourceName() 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 utilizza by navGraphViewModels() o il costruttore ViewModelProvider con un valore ViewModelStoreOwner restituito da NavController.getViewModelStoreOwner(). (b/135716331)

Modifiche alle API

Correzioni di bug

  • NavHostFragment ora utilizza FragmentContainerView 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'API getViewModelStoreOwner() aggiunta a NavController. 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 un DialogFragment quando navigate. 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 un Uri, 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 in NavHostController, in modo da consentire alle implementazioni di connettere il NavController ai LifecycleOwner, OnBackPressedDispatcher e ViewModelStore 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 su NavController introdotta in 2.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 utilizza setupWithNavController() con Toolbar o CollapsingToolbarLayout. (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'elemento navigation-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() su NavController è stata ritirata a favore del nuovo metodo getViewModelStoreOwner() che restituisce un ViewModelStoreOwner. (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 destinazioni FloatingWindow. (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 di NavController, NavHostController. (aosp/966091).
  • Il metodo setHostOnBackPressedDispatcherOwner() NavController è stato sostituito con il metodo setOnBackPressedDispatcher() di NavHostController e ora richiede la chiamata setLifecycleOwner() prima di chiamarlo. (aosp/965409)
  • NavHostController ora contiene un metodo enableOnBackPressed(boolean) che sostituisce la classe NavHostOnBackPressedManager precedentemente restituita da setHostOnBackPressedDispatcherOwner(). (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 correttamente app:defaultNavHost quando intercetta gli eventi del pulsante Indietro di sistema, correggendo una regressione in 2.1.0-alpha03 Navigazione. B/132077777
  • Ora DialogFragmentNavigator gestisce correttamente le operazioni popBackStack() e navigateUp(). 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 un DialogFragment quando navigate. NavHostFragment supporta le destinazioni delle finestre di dialogo per impostazione predefinita. b/80267254
  • Oltre a chiamare navigate con un ID risorsa o un'istanza NavDirections, ora puoi navigare tramite un Uri, 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() di NavHostFragment è stato ritirato e la sua funzionalità è stata spostata nel nuovo metodo onCreateNavController() per chiarire che questo è il punto di ingresso corretto per l'aggiunta di navigatori personalizzati durante la sottoclasse NavHostFragment. B/122802849
  • Un metodo hasDeepLink() è stato aggiunto a NavDestination per consentirti di verificare se un determinato Uri può essere gestito da quella destinazione o, nel caso di un NavGraph, 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 utilizzando OnBackPressedDispatcher, 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 un app:argType non specificato ora viene dedotto correttamente come argomento string. 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'API getViewModelStore() aggiunta a NavController. B/111614463

Modifiche alle API

  • Ora puoi aggiungere un elemento app:targetPackage a una destinazione <activity> per limitare il nome del pacchetto corrispondente. Supporta app: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 e androidx.fragment:fragment:1.1.0-alpha05. Questa release rimuove anche la dipendenza da androidx.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 utilizza FragmentFactory 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 utilizzi android: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 senza FLAG_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 e fun nel nome del pacchetto associato alla classe R. 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 come android:defaultValue per gli argomenti reference. 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() e navigateUp ora restituiscono correttamente false quando vengono inseriti l'ultima destinazione nello stack posteriore, correggendo una regressione introdotta in 1.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 in Navigator o in argomenti inviati a un NavDestination. 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 valore app: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/123552990popBackStack()
  • Risolto il problema per cui lo stato FragmentNavigator veniva desincronizzato con lo stato di NavController, causando un IllegalStateException 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 classe NavArgs generata dagli argomenti sicuri in un elemento Activity o Fragment. 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-in androidx.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 un NavController comporterà il ripristino dello stack di supporto. b/111450672
  • I link diretti sconosciuti non generano più un IllegalStateException, ma vengono ignorati, risolvendo i problemi con NavHostFragment nidificati o multipli. b/121340440

Modifiche che provocano un errore

  • Il metodo NavOptions.applyPopAnimationsToPendingTransition() per applicare animazioni pop a un'attività è stato spostato in ActivityNavigator. 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 da getArguments() di NavDirections è 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 operazioni popBackStack() quando utilizza un elemento NavHostFragment 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 valori hashCode() uguali quando equals() restituirebbe true. b/123043662
  • FragmentNavigator ora genera un messaggio di errore migliore se tenti di eseguire una FragmentTransactions personalizzata sul FragmentManager di NavHostFragment. Devi usare sempre getChildFragmentManager(). 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 con menuCategory="secondary" non verranno più visualizzati nello stack posteriore quando vengono utilizzati con i metodi NavigationUI. b/120104424
  • AppBarConfiguration ora consente di impostare un'istanza OnNavigateUpListener di riserva che verrà chiamata quando navController.navigateUp() restituirà false. b/79993862 b/120690961

Modifiche che provocano un errore

  • Quando utilizzi un <argument> con un argType="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 metodi setup. Aggiungi menuCategory="secondary" al tuo MenuItem per evitare di estrarre lo stack posteriore. aosp/852869
  • I metodi fromBundle() delle classi Args generate ora utilizzano un valore non null Bundle anziché un Bundle 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} in android: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 in OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener ora passa anche Bundle degli argomenti aosp/837142
  • Gli attributi app:clearTask e app:launchDocument e i relativi metodi associati sono stati rimossi. Utilizza app:popUpTo con la radice del grafico per rimuovere tutte le destinazioni dal tuo stack di riserva. b/119628354
  • ActivityNavigator.Extras ora utilizza un pattern Builder e aggiunge la possibilità di impostare qualsiasi flag Intent.FLAG_ACTIVITY_ aosp/828140
  • Il nome di NavController.onHandleDeepLink è stato cambiato in handleDeepLink aosp/836063
  • Molti metodi e classi non destinati alle sottoclassi, come NavOptions, NavInflater, NavDeepLinkBuilder e AppBarConfiguration, sono stati creati final 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 una FragmentFactory. B/119054429
  • Il costruttore per NavGraphNavigator non richiede più un Context aosp/835340
  • NavigatorProvider è ora una classe, non un'interfaccia. L'elemento NavigatorProvider restituito da getNavigatorProvider() non ha modificato la sua funzionalità. aosp/830660
  • Il partner NavDestination.navigate() è stato rimosso. Chiama navigate() sul numero Navigator. aosp/830663
  • Refactoring significativo di Navigator, eliminando la necessità di OnNavigatorNavigatedListener e grazie al fatto che navigate restituisca NavDestination.
  • Navigator istanza non può più inviare eventi pop a NavController. Potresti usare una OnBackPressedCallback per intercettare la pressione del pulsante Indietro e chiamare navController.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 chiamando toString() 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 in navigation-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à

Modifiche alle API

  • Modifica di interruzione: il metodo navigate() di navigazione ora richiede un parametro Navigator.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 in app: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
  • 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() e hashCode() 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 utilizza setReorderingAllowed(true). B/109826220

  • Ora 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/79632233

  • La 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/80453447

  • Risolto il problema di frammenti che si sovrappongono durante l'utilizzo di launchSingleTop. B/79407969

  • La 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 in NavOptions è stato ritirato. b/80338878

  • L'attributo launchDocument per le azioni e l'API associata in NavOptions è 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.