Navigation

La navigation désigne les interactions qui permettent aux utilisateurs de parcourir les différents éléments de contenu de leur appli de différentes manières.

Le composant Navigation d'Android Jetpack comprend la bibliothèque Navigation, le plug-in Gradle Safe Args ainsi que des outils qui vous aident à implémenter la navigation dans l'appli. Le composant Navigation gère divers cas d'utilisation de la navigation, des simples clics sur un bouton aux modèles les plus complexes, tels que les barres d'application et le panneau de navigation.

Concepts clés

Le tableau suivant présente les concepts clés de la navigation et les principaux types que vous utilisez pour les implémenter.

Concept

Finalité

Type

Hôte

Un élément d'interface utilisateur contenant la destination de navigation actuelle. Autrement dit, lorsqu'un utilisateur parcourt une appli, celle-ci alterne les destinations vers et depuis l'hôte de navigation.

Graphique

Une structure de données qui définit toutes les destinations de navigation dans l'appli ainsi que la manière dont elles se connectent entre elles.

NavGraph

Contrôleur

Le coordinateur central qui gère la navigation entre les destinations. Le contrôleur propose des méthodes pour naviguer entre les destinations, gérer les liens profonds, la pile "Retour", etc.

NavController

Destination

Nœud dans le graphique de navigation. Lorsque l'utilisateur accède à ce nœud, l'hôte affiche son contenu.

NavDestination

Généralement créé lors de la construction du graphique de navigation.

Itinéraire

Identifie une destination et toutes les données requises de manière unique.

Vous pouvez utiliser des routes pour la navigation. Des itinéraires vous permettent d'accéder à vos destinations.

Tout type de données sérialisable

Avantages et fonctionnalités

Le composant Navigation offre une multitude d'autres avantages et fonctionnalités :

  • Animations et transitions: fournit des ressources standardisées pour les animations et les transitions.
  • Liens profonds : implémente et gère les liens profonds qui redirigent l'utilisateur directement vers une destination.
  • Modèles d'interface utilisateur : compatible avec les modèles tels que les panneaux de navigation ou la barre de navigation inférieure, sans effort.
  • Sûreté du typage:inclut la prise en charge de la transmission de données entre les destinations avec la sécurité du typage.
  • Compatibilité avec ViewModel : permet d'étendre la portée d'un ViewModel à un graphique de navigation pour échanger des données en lien avec l'UI entre les destinations du graphique.
  • Transactions de fragment : entièrement compatible avec les transactions de fragment.
  • Retour par balayage : prend en charge, par défaut, le balayage de l'écran pour effectuer un retour en arrière.

Configurer votre environnement

Pour inclure la prise en charge du composant Navigation dans votre projet, ajoutez les dépendances suivantes au fichier build.gradle de votre application :

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.4"

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

  // 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")
}

Pour plus d'informations sur l'ajout de composants d'architecture à votre projet, consultez le guide Ajouter des composants à votre projet.

Étapes suivantes

Pour plus de documentation et de ressources liées au composant Navigation, consultez les pages suivantes.

Guides détaillés

Pour en savoir plus sur l'implémentation d'un hôte de navigation et de NavController, ainsi que sur la manière dont ils interagissent avec Compose et d'autres frameworks d'UI, consultez les guides suivants :

Ateliers de programmation

Vidéos

Exemples