Le contrôleur de navigation est l'un des concepts clés de la navigation. Il contient le graphique de navigation et présente les méthodes qui permettent à votre appli de se déplacer entre les destinations du graphique.
Lorsque vous utilisez le composant de Navigation, vous créez un contrôleur de navigation à l'aide de la classe NavController
. NavController
est l'API de navigation centrale. Elle identifie les destinations que l'utilisateur a consultées et lui permet de passer d'une destination à une autre. Ce guide explique comment créer un NavController
dans votre appli.
Pour savoir comment ajouter un graphique de navigation à votre NavController
, consultez la section Concevoir votre graphique de navigation. NavController
propose plusieurs façons d'accéder aux destinations de son graphique. Pour en savoir plus, consultez la section Accéder à une destination.
Compose
Pour créer un NavController
lors de l'utilisation de Jetpack Compose, appelez rememberNavController()
:
val navController = rememberNavController()
Vous devez créer et placer le NavController
en haut de votre hiérarchie de composables. Il doit être placé suffisamment haut afin que tous les composables ayant besoin d'y faire référence soient en mesure de le faire.
Cela vous permet d'utiliser NavController
comme source unique d'informations afin de mettre à jour des composables en dehors de vos écrans. Cela respecte les principes du hissage d'état (hoisting).
Vues
Si vous utilisez le framework de l'interface utilisateur Vues, vous pouvez récupérer votre navController à l'aide de l'une des méthodes suivantes, en fonction du contexte.
Kotlin :
Java :
NavHostFragment.findNavController(Fragment)
Navigation.findNavController(Activity, @IdRes int viewId)
Navigation.findNavController(View)
En règle générale, vous obtenez d'abord un NavHostFragment
, puis vous récupérez le NavController
à partir du fragment. L'extrait de code suivant le démontre :
Kotlin
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
Java
NavHostFragment navHostFragment =
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
Complément d'informations
- Concevoir votre graphique de navigation : guide expliquant comment ajouter un graphique à votre
NavController
contenant toutes les destinations de votre appli. - Accéder à une destination : guide expliquant comment utiliser
NavController
pour passer d'une destination à l'autre dans votre graphique de navigation.