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 trois concepts clés de la navigation et les principaux types à utiliser 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

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 le plug-in Gradle Safe Args, qui assure la sûreté du typage lors de la navigation et de la transmission des données entre les destinations.
  • 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

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

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