Il controller di navigazione è uno dei concetti chiave della navigazione. Contiene il grafico di navigazione ed espone metodi che consentono all'app di spostarsi tra le destinazioni nel grafico.
Quando utilizzi il componente Navigation, crei un controller di navigazione
utilizzando la classe NavController. NavController è l'API di navigazione centrale. Tiene traccia delle destinazioni visitate dall'utente e consente all'utente di spostarsi tra le destinazioni. Questa guida mostra come creare un NavController nella tua app.
Per informazioni su come aggiungere un grafico di navigazione al tuo NavController, vedi
Progettare il grafico di navigazione. NavController offre diversi modi per navigare verso le destinazioni nel suo grafico. Per saperne di più, vedi Navigare verso una
destinazione.
Compose
Per creare un NavController quando utilizzi Jetpack Compose, chiama
rememberNavController():
val navController = rememberNavController()
Devi creare NavController in alto nella gerarchia dei componenti componibili. Deve essere abbastanza in alto da consentire a tutti i componenti componibili che devono farvi riferimento di farlo.
In questo modo, puoi utilizzare NavController come unica fonte di verità per l'aggiornamento dei componenti componibili al di fuori delle schermate. Questo segue i principi dell'
innalzamento dello stato.
Visualizzazioni
Se utilizzi il framework UI Views, puoi recuperare il tuo NavController utilizzando uno dei seguenti metodi a seconda del contesto:
Kotlin:
Java:
NavHostFragment.findNavController(Fragment)Navigation.findNavController(Activity, @IdRes int viewId)Navigation.findNavController(View)
In genere, prima ottieni un NavHostFragment, quindi recuperi NavController dal fragment. Il seguente snippet mostra questa procedura:
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();
Per approfondire
- Progettare il grafico di navigazione: una guida che spiega come aggiungere un grafico
al tuo
NavControllercontenente tutte le destinazioni nella tua app. - Navigare verso una destinazione: una guida che spiega come utilizzare
NavControllerper spostarsi tra le destinazioni nel grafico di navigazione.