navigation3

  
Navigation 3 è una nuova libreria di navigazione progettata per funzionare con Compose.
Ultimo aggiornamento Release stabile Candidato per la release Release beta Release alpha
8 ottobre 2025 - - - 1.0.0-alpha11

Dichiara le dipendenze

Per aggiungere una dipendenza da navigation3, devi aggiungere il repository Maven di Google al tuo progetto. Per saperne di più, consulta il repository Maven di Google.

Aggiungi le dipendenze per gli artefatti necessari nel file build.gradle per la tua app o il tuo modulo:

Trendy

dependencies {
    implementation "androidx.navigation3:navigation3-runtime:1.0.0-alpha11"
    implementation "androidx.navigation3:navigation3-ui:1.0.0-alpha11"
}

Kotlin

dependencies {
    implementation("androidx.navigation3:navigation3-runtime:1.0.0-alpha11")
    implementation("androidx.navigation3:navigation3-ui:1.0.0-alpha11")
}

Per saperne di più sulle dipendenze, consulta Aggiungi dipendenze di build.

Feedback

Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa libreria. Prima di segnalare un nuovo problema, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.

Crea un nuovo problema

Per ulteriori informazioni, consulta la documentazione di Issue Tracker.

Non sono disponibili note di rilascio per questo artefatto.

Versione 1.0

Versione 1.0.0-alpha11

8 ottobre 2025

androidx.navigation3:navigation3-*:1.0.0-alpha11 è stato rilasciato. La versione 1.0.0-alpha11 contiene questi commit.

Modifiche alle API

  • Il metodo calculateScene su SceneStrategy non è più @Composable. Valuta invece di spostare questo lavoro nella costruzione del metodo SceneStrategy (ovvero in un metodo rememberMySceneStrategy()) che ti consenta di definire completamente la durata di qualsiasi valore rememberSaveable o istruzione chiave remember in base ai valori corretti. (If1733, b/448709506)
  • Il parametro onBack per SceneStrategy.calculateScene è stato spostato nel nuovo ambito del ricevitore SceneStrategyScope per rendere più chiaro che si tratta di un parametro facoltativo e fornire un punto di estensione per le future funzionalità di Navigation3. (I3aea3, b/448460407)
  • La lambda onBack passata a NavDisplay e a SceneStrategy non fornisce più un parametro count: Int per indicare quando devono essere visualizzate più voci. Al contrario, la lambda () -> Unit verrà ora chiamata più volte di seguito nel raro caso in cui le richieste di Scene generino più voci. (Idedb5, b/446989346)
  • Rimuovi la classe NavEntryWrapper e sostituisci la sua funzionalità con una classe NavEntry finale con un nuovo costruttore secondario che accetta una classe NavEntry con nuovi contenuti. In questo modo continueremo a supportare l'inserimento di una voce con nuovi contenuti. (I7da2a, b/444447130)
  • La funzione navEntryDecorator, che crea e restituisce un NavEntryDecorator, è stata rimossa e sostituita dalla classe NavEntryDecorator, ora resa pubblica e aperta alla creazione di sottoclassi. (If81f8, b/444447434, b/447381176)
  • SavedStateNavEntryDecorator è stato rinominato in SaveableStateHolderNavEntryDecorator perché decora le voci con un SaveableStateHolder. Il decoratore è stato anche sottoposto a refactoring da funzione a classe, poiché è funzionalmente una factory per NavEntryDecorator. (Ie6013, b/447381176)
  • Le visualizzazioni personalizzate che utilizzano SceneState in alternativa a NavDisplay non devono più utilizzare la composizione locale LocalEntriesToRenderInCurrentScene, che ora è interna. (Ic40ef, b/414668196)
  • SceneSetupNavEntryDecorator e rememberSceneSetupNavEntryDecorator() sono stati rimossi dalla superficie dell'API pubblica. Questa funzionalità ora è inclusa per impostazione predefinita senza che tu debba includerla manualmente. (Ieae42, b/444479133)
  • NavEntry, DialogScene, SinglePaneScene e SceneState ora implementano tutti l'uguaglianza. (I96121)
  • L'interfaccia della scena ha un nuovo campo di metadati per allegare metadati specifici della scena per NavDisplay. In questo modo, una scena può ignorare i metadati sul NavDisplay, ad esempio con le transizioni. (I1fd96, b/443955625)
  • Semplifica la firma rememberNavBackStack rimuovendo il parametro del tipo generico ridondante. La funzione ora accetta vararg elements: NavKey. (I03e45)
  • Le animazioni predefinite per NavDisplay ora fanno parte dell'API comune, che consente di chiamarle da tutte le piattaforme. (I71af9, b/447147159)
  • Rinomina EntryProviderBuilder in EntryProviderScope per riflettere con precisione che la classe è un DSL Kotlin che fornisce un ambito per creare NavEntries. (Ia7465)

Correzioni di bug

  • rememberNavBackStack() ora applica la serializzazione polimorfica per NavKey e richiede un SavedStateConfiguration personalizzato configurato per garantire il corretto ripristino dello stato. KDoc è stato aggiornato per riflettere il requisito che tutti i sottotipi di NavKey devono essere registrati in SerializersModule fornito. (I6de37,I782f2, b/446664383)

Versione 1.0.0-alpha10

24 settembre 2025

androidx.navigation3:navigation3-*:1.0.0-alpha10 è stato rilasciato. La versione 1.0.0-alpha10 contiene questi commit.

Modifiche alle API

  • Aggiungi un nuovo overload NavDisplay che accetta un elenco di NavEntry<T> decorato da rememberDecoratedNavEntries. (I4025b, b/441940314)
  • DialogScene è stato spostato in un nuovo pacchetto. (Ia5840)
  • Rimuovi l'API pubblica DecorateNavEntry. Utilizza invece rememberDecoratedNavEntries per racchiudere una NavEntry con un elenco di decoratori. (Id8c09)
  • L'interfaccia utente Navigation3 ora fornisce nuove proprietà transitionSpec predefinite. (Ibcabd)
  • È stato aggiunto un nuovo oggetto SceneState per facilitare la gestione delle scene. Inoltre, fornisce un nuovo sovraccarico di NavDisplay che prende SceneState e NavigationEventState. (Idfb46, b/444479133)
  • NavDisplay ora ti consente di personalizzare le transizioni in base a ciò che Scene stai andando e da dove stai venendo, esaminando Transition, currentState e targetState. (I906cc, b/443872322)
  • NavigationEventInfo ora è un abstract class anziché un interface. Aggiorna tutte le implementazioni personalizzate in modo che ereditino dalla classe (ad es. data class MyInfo : NavigationEventInfo()). (I1e59c, b/444734264)
  • Le API del gestore navigationevent-compose sono aggiornate. NavigationEventHandler e NavigationBackHandler (e varianti) ora supportano un nuovo overload che accetta NavigationEventStates sollevati. Gli overload semplici (che accettano currentInfo) vengono conservati e ora utilizzano internamente questo nuovo modello di stato. (Ic3251, b/444734264)
  • Tutte le API Scene sono state spostate da navigation3-ui a navigation3-runtime. Ciò significa che ora sono disponibili su tutte le piattaforme supportate da navigation3-runtime. (I431d0, b/444449993)
  • È stato aggiunto un nuovo overload rememberDecoratedNavEntries che accetta un elenco di NavEntry da decorare. Le voci di input possono essere già decorate con altri decoratori di voci. (I5a034, b/444230270)
  • Rimuovi i parametri di tipo jolly navigation3 (I02540)
  • È stata migliorata la gestione dei generici per il linguaggio specifico del dominio entryProvider. Se in passato importavi androidx.navigation3.runtime.entry, non è più necessario. (I299fc)
  • Limita l'overflow NavBackStackSerializer basato sulla reflection ad Android. In questo modo, si evitano errori di serializzazione implicita in fase di runtime su piattaforme non Android imponendo l'utilizzo dell'overload SavedStateConfiguration esplicito nel codice multipiattaforma. (I73313, b/420443609)
  • Rendi NavigationEvent's swipeEdge un @IntDef (Icee54, b/443950342)
  • Limita la serializzazione di NavBackStack ad Android. In questo modo, si evitano errori di runtime su piattaforme non Android. Per il salvataggio dello stato multipiattaforma, utilizza l'overload rememberNavBackStack con un SavedStateConfiguration esplicito. (I1e418, b/420443609)

Correzioni di bug

  • Correzione dell'arresto anomalo durante l'indietro predittivo quando NavDisplay nidificato ha una sola voce secondaria. (I2cdc0, b/441933162)

Versione 1.0.0-alpha09

10 settembre 2025

androidx.navigation3:navigation3-*:1.0.0-alpha09 è stato rilasciato. La versione 1.0.0-alpha09 contiene questi commit.

Modifiche alle API

  • DecoratedNavEntryProvider è stato sostituito con rememberDecoratedNavEntries, che crea e restituisce NavEntry decorate con l'elenco dei decoratori forniti (I0fe1c, b/441328236)
  • NavBackStack è ora generico per il tipo NavKey. In questo modo, app e librerie possono definire tipi di chiavi personalizzati per i propri back stack, anziché essere limitate a NavKey. (I4d190,Iad2f4, b/420443609)
  • NavBackStack ora è @kotlinx.serialization.Serializable, il che consente di salvare e ripristinare lo stato di navigazione in caso di interruzione del processo e modifiche alla configurazione senza boilerplate aggiuntivo. (I2c3cf, b/420443609)
  • RememberNavBackStack è stato spostato in commonMain per garantire che venga fornito su tutti i target delle piattaforme. (Id69e7, b/420443609)

Correzioni di bug

  • NavDisplay ora sposta correttamente ogni singolo NavEntry nel Lifecycle.State corretto. (I30aac, b/440145700)
  • È stato risolto un problema per cui NavDisplay ignorava qualsiasi NavigationEventDispatcherOwner nidificato impostato tramite LocalNavigationEventDispatcherOwner di NavigationEvent. (I6224a)

Modifiche alle dipendenze

Versione 1.0.0-alpha08

27 agosto 2025

androidx.navigation3:navigation3-*:1.0.0-alpha08 è stato rilasciato. La versione 1.0.0-alpha08 contiene questi commit.

Nuove funzionalità

  • Sono stati aggiunti nuovi target Kotlin MultiPlatform (KMP) agli artefatti Navigation3 Runtime. Navigation3 Runtime ora supporta le seguenti piattaforme in totale: JVM (Android e desktop), Native (Linux, iOS, watchOS, macOS, MinGW) e Web (JavaScript, WasmJS). (I55078, b/424410398, b/419294028, b/419046226). Nota: non vengono forniti target KMP per l'artefatto Navigation3 UI. Su altre piattaforme, dovrai implementare un NavDisplay personalizzato. Se vuoi che venga supportato, vota il problema di Jetbrains qui e monitora i progressi per ulteriore assistenza.
  • L'oggetto NavDisplayInfo ora è pubblico e può essere utilizzato per recuperare l'elenco delle voci visibili da NavDisplay. (Ibc91f)

Modifiche alle API

  • È stato aggiunto un nuovo NavBackStackSerializer da utilizzare insieme a rememberNavBackStack per eseguire il ripristino dello stato. rememberNavBackStack() ora accetta anche un SavedStateConfiguration che può essere utilizzato per fornire la tua configurazione. (I2f4d2, I4cd58, b/420443609)

Correzioni di bug

Problemi noti

  • È stato introdotto un bug da I8bf6d che ha fatto sì che i cicli di vita si basassero sulle scene anziché sulle singole voci, il che ha interrotto il ciclo di vita per tutti i casi in cui key fornito a NavEntry non è String o NavEntry non ha sostituito contentKey e lo ha impostato uguale a key (tieni presente che questa operazione impone che la chiave possa essere salvata in Bundle). Il problema è stato risolto per la prossima release. (b/440145700)

Versione 1.0.0-alpha07

13 agosto 2025

androidx.navigation3:navigation3-*:1.0.0-alpha07 è stato rilasciato. La versione 1.0.0-alpha07 contiene questi commit.

Aggiornamento di MinSdk

Modifiche alle API

  • SavedStateNavEntryDecorator ora utilizza la funzionalità SaveableStateRegistry integrata in SaveableStateProvider per salvare e ripristinare gli stati. (If8d9a)
  • Ora predictivePopTransitionSpec riceve il bordo di scorrimento come parametro, il che ti consente di personalizzare la transizione in base al bordo da cui l'utente ha iniziato il gesto Indietro predittivo. (I753a8)

Correzioni di bug

  • Risolto un problema che causava il ricalcolo infinito delle scene personalizzate perché la scena più recente non veniva memorizzata. (I7ba84, b/418153031)

Aggiornamento delle dipendenze

Versione 1.0.0-alpha06

30 luglio 2025

androidx.navigation3:navigation3-*:1.0.0-alpha06 è stato rilasciato. La versione 1.0.0-alpha06 contiene questi commit.

Aggiornamento delle dipendenze

Versione 1.0.0-alpha05

2 luglio 2025

androidx.navigation3:navigation3-*:1.0.0-alpha05 è stato rilasciato. La versione 1.0.0-alpha05 contiene questi commit.

Modifiche al comportamento

  • Lo stato di NavEntry ora si basa rigorosamente sull'elenco corrente dei decoratori passati a NavDisplay. Ciò significa che i decoratori devono essere scambiati lungo gli stack precedenti in caso di più stack precedenti per preservare lo stato delle NavEntry nello stack precedente. In caso contrario, gli stati verranno cancellati come se le voci fossero state estratte (anziché scambiate). (I7a759, b/428033667)

Versione 1.0.0-alpha04

18 giugno 2025

androidx.navigation3:navigation3-*:1.0.0-alpha04 è stato rilasciato. La versione 1.0.0-alpha04 contiene questi commit.

Modifiche alle API

  • NavEntry.content è ora privato. Per richiamare i contenuti NavEntry, chiama la nuova API NavEntry.Content(), che non richiede più un parametro key per essere richiamata. (Icd0fd, b/420991203)
  • NavEntry.key ora è un campo privato. NavEntry e i relativi stati devono essere identificati dal nuovo campo contentKey, generato dalla nuova lambda contentKeyFactory e impostato per impostazione predefinita su un hash salvabile generato da NavEntry.key (I81a6c, b/422001357, b/420991203 I2d7d4, b/420991203, b/422841812)

Modifiche alle dipendenze

  • Navigation3 ora dipende dal nuovo artefatto androidx.navigationevent.compose.

Versione 1.0.0-alpha03

4 giugno 2025

androidx.navigation3:navigation3-*:1.0.0-alpha03 è stato rilasciato. La versione 1.0.0-alpha03 contiene questi commit.

Correzioni di bug

  • Navigation3 non cancellerà più gli stati dei decoratori per backStacks che sono stati sostituiti con un'altra istanza di backStack. (I28a42, b/415076044)

Versione 1.0.0-alpha02

23 maggio 2025

androidx.navigation3:navigation3-*:1.0.0-alpha02 è stato rilasciato. La versione 1.0.0-alpha02 contiene questi commit.

Correzioni di bug

  • È stato risolto un problema con SavedStateNavEntryDecorator che causava conflitti per diverse classi di dati con gli stessi valori delle proprietà. (b/418070648, Iff4775)
  • È stato risolto un problema relativo a una classe mancante che causava arresti anomali durante l'esecuzione senza dichiarare dipendenze esplicite. (b/419049149, I4b4ed)

Versione 1.0.0-alpha01

20 maggio 2025

androidx.navigation3:navigation3-*:1.0.0-alpha01 è stato rilasciato. La versione 1.0.0-alpha01 contiene questi commit.

Nuove funzionalità

Navigation3 è una nuova libreria di navigazione creata appositamente per gestire la navigazione in-app di Jetpack Compose. L'artefatto androidx.navigation3.runtime fornisce i componenti di base, mentre l'artefatto androidx.navigation3.ui fornisce il livello UI tramite l'API NavDisplay. Gli sviluppatori possono fornire il proprio stato direttamente alla funzione componibile NavDisplay, che modifica i contenuti in base alle modifiche dello stato dello sviluppatore.

@Serialiable object Home : NavKey
@Serialiable object Chat : NavKey

val backStack = rememberNavBackStack(Home)

NavDisplay(backStack, entryProvider = entryProvider {
  entry<Home> {
    Column {
      Text(Home)
      Button(onClick = { backStack.add(Chat) } ) {
        Text(Go to Chat)
      } 
    }
  }
  entry<Chat> { /* My Composable Content */ }
})

Per saperne di più, consulta la guida Navigation3.