Der Navigationscontroller ist eines der wichtigsten Konzepte in der Navigation. Er enthält den Navigationsgraphen und stellt Methoden bereit, mit denen Ihre App zwischen den Zielen im Graphen wechseln kann.
Wenn Sie die Navigation-Komponente verwenden, erstellen Sie einen Navigationscontroller
mit der Klasse NavController. NavController ist die zentrale Navigations-API. Sie verfolgt, welche Ziele der Nutzer besucht hat, und ermöglicht es ihm, zwischen Zielen zu wechseln. In dieser Anleitung wird gezeigt, wie Sie einen NavController in Ihrer App erstellen.
Informationen zum Hinzufügen eines Navigationsgraphen zu Ihrem NavController finden Sie unter
Navigationsgraphen entwerfen. NavController bietet verschiedene Möglichkeiten, zu den Zielen im Graphen zu navigieren. Weitere Informationen finden Sie unter Zu einem
Ziel navigieren.
Compose
Wenn Sie Jetpack Compose verwenden, rufen Sie
rememberNavController() auf, um einen NavController zu erstellen:
val navController = rememberNavController()
Sie sollten den NavController weit oben in der zusammensetzbaren Hierarchie erstellen. Er muss hoch genug sein, damit alle zusammensetzbaren Elemente, die darauf verweisen müssen, dies tun können.
So können Sie den NavController als Single Source of Truth verwenden, um zusammensetzbare Elemente außerhalb Ihrer Bildschirme zu aktualisieren. Dies entspricht den Prinzipien des
State Hoisting.
Aufrufe
Wenn Sie das UI-Framework „Views“ verwenden, können Sie Ihren NavController je nach Kontext mit einer der folgenden Methoden abrufen:
Kotlin :
Java :
NavHostFragment.findNavController(Fragment)Navigation.findNavController(Activity, @IdRes int viewId)Navigation.findNavController(View)
Normalerweise rufen Sie zuerst ein NavHostFragment ab und dann den NavController aus dem Fragment. Das folgende Snippet veranschaulicht dies:
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();
Weitere Informationen
- Navigationsgraphen entwerfen: Eine Anleitung zum Hinzufügen eines Graphen
zu Ihrem
NavController, der alle Ziele in Ihrer App enthält. - Zu einem Ziel navigieren: Eine Anleitung zur Verwendung des
NavControllerum zwischen Zielen in Ihrem Navigationsgraphen zu wechseln.