Per navigazione si intendono le interazioni che consentono agli utenti di spostarsi tra i diversi contenuti della tua app, di accedere ai contenuti e di uscirne.
Il componente Navigation di Android Jetpack include la libreria Navigation, il plug-in Gradle Safe Args e gli strumenti per aiutarti a implementare la navigazione nell'app. Il componente Navigation gestisce diversi casi d'uso di navigazione, dai semplici clic sui pulsanti a pattern più complessi, come le barre delle app e il riquadro di navigazione.
Concetti principali
La tabella seguente fornisce una panoramica dei concetti chiave della navigazione e dei tipi principali utilizzati per implementarli.
Concetto  | 
    Finalità  | 
    Digitazione  | 
  
|---|---|---|
Moderatore  | 
    Un elemento dell'interfaccia utente che contiene la destinazione di navigazione corrente. In altre parole, quando un utente naviga in un'app, l'app scambia essenzialmente le destinazioni all'interno e all'esterno dell'host di navigazione.  | 
    
      
  | 
  
Grafico  | 
    Una struttura di dati che definisce tutte le destinazioni di navigazione all'interno dell'app e il modo in cui sono collegate.  | 
    |
Controller  | 
    Il coordinatore centrale per la gestione della navigazione tra le destinazioni. Il controller offre metodi per spostarsi tra le destinazioni, gestire i link diretti, gestire la pila di ritorno e altro ancora.  | 
    |
Destinazione  | 
    Un nodo nel grafo di navigazione. Quando l'utente accede a questo nodo, l'host mostra i relativi contenuti.  | 
    In genere viene creato durante la costruzione del grafico di navigazione.  | 
  
Itinerario  | 
    Identifica in modo univoco una destinazione e tutti i dati richiesti. Puoi navigare utilizzando i percorsi. I percorsi ti portano alle destinazioni.  | 
    Qualsiasi tipo di dati serializzabile.  | 
  
Vantaggi e funzionalità
Il componente di navigazione offre una serie di altri vantaggi e funzionalità, tra cui:
- Animazioni e transizioni:fornisce risorse standardizzate per animazioni e transizioni.
 - Link diretti:implementa e gestisce i link diretti che indirizzano l'utente direttamente a una destinazione.
 - Modelli di UI: supporta modelli come riquadri di navigazione e navigazione in basso con un intervento aggiuntivo minimo.
 - Sicurezza del tipo:include il supporto per il passaggio di dati tra destinazioni con sicurezza del tipo.
 - Supporto di ViewModel: consente di applicare l'ambito a un 
ViewModela un grafico di navigazione per condividere i dati relativi all'interfaccia utente tra le destinazioni del grafico. - Transazioni dei frammenti:supporta e gestisce completamente le transazioni dei frammenti.
 - Indietro e su: gestisce correttamente le azioni Indietro e Su per impostazione predefinita.
 
Configura l'ambiente
Per includere il supporto della navigazione nel progetto, aggiungi le seguenti dipendenze al
file build.gradle dell'app:
Groovy
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments id 'org.jetbrains.kotlin.plugin.serialization' version '2.0.21' } dependencies { def nav_version = "2.9.5" // Jetpack Compose Integration implementation "androidx.navigation:navigation-compose:$nav_version" // Views/Fragments Integration implementation "androidx.navigation:navigation-fragment:$nav_version" implementation "androidx.navigation:navigation-ui:$nav_version" // Feature module support for Fragments implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version" // Testing Navigation androidTestImplementation "androidx.navigation:navigation-testing:$nav_version" // JSON serialization library, works with the Kotlin serialization plugin. implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3" }
Kotlin
plugins { // Kotlin serialization plugin for type safe routes and navigation arguments kotlin("plugin.serialization") version "2.0.21" } dependencies { val nav_version = "2.9.5" // Jetpack Compose integration implementation("androidx.navigation:navigation-compose:$nav_version") // Views/Fragments integration implementation("androidx.navigation:navigation-fragment:$nav_version") implementation("androidx.navigation:navigation-ui:$nav_version") // Feature module support for Fragments implementation("androidx.navigation:navigation-dynamic-features-fragment:$nav_version") // Testing Navigation androidTestImplementation("androidx.navigation:navigation-testing:$nav_version") // JSON serialization library, works with the Kotlin serialization plugin implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.3") }
Per informazioni su come aggiungere altri componenti dell'architettura al progetto, consulta Aggiungere componenti al progetto.
Passaggi successivi
Per ulteriore documentazione e risorse relative al componente Navigation, consulta le seguenti risorse.
Guide dettagliate
Per ulteriori informazioni su come implementare un host di navigazione e NavController, nonché dettagli su come interagiscono con Compose e altri framework UI, consulta le seguenti guide:
- Creare un controller di navigazione: illustra come creare un
NavController. - Creare il grafico di navigazione: dettagli su come creare un host di navigazione e un grafico di navigazione.
 - Vai a una destinazione: mostra come utilizzare un 
NavControllerper muoverti tra le destinazioni nel grafico. 
Codelab
- Scopri Jetpack Navigation
 - Frammenti e componente di navigazione
 - Creare un'app adattabile con navigazione dinamica
 
Video
- Navigare nella navigazione
 - 10 best practice per il passaggio a una singola attività
 - Attività singola: perché, quando e come (Android Dev Summit '18)
 - Android Jetpack: gestire la navigazione nell'interfaccia utente con il controller di navigazione (Google I/O '18)