Navigazione

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.

NavGraph

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.

NavController

Destinazione

Un nodo nel grafo di navigazione. Quando l'utente accede a questo nodo, l'host mostra i relativi contenuti.

NavDestination

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 ViewModel a 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.8.6"

  // 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.8.6"

  // 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:

Codelab

Video

Campioni