Kontroler nawigacji to jeden z kluczowych elementów nawigacji. Zawiera on wykres nawigacji i udostępnia metody, które umożliwiają aplikacji przechodzenie między miejscami docelowymi na wykresie.
Gdy używasz komponentu Navigation, tworzysz kontroler nawigacji
za pomocą klasy NavController. NavController to centralny interfejs API nawigacji. Śledzi on, które miejsca docelowe odwiedził użytkownik, i umożliwia mu przechodzenie między nimi. Z tego przewodnika dowiesz się, jak utworzyć NavController w aplikacji.
Informacje o tym, jak dodać wykres nawigacji do NavController, znajdziesz w artykule
Projektowanie wykresu nawigacji. NavController udostępnia kilka różnych sposobów przechodzenia do miejsc docelowych na wykresie. Więcej informacji znajdziesz w artykule Przechodzenie do
miejsca docelowego.
Utwórz
Aby utworzyć NavController podczas korzystania z Jetpack Compose, wywołaj
rememberNavController():
val navController = rememberNavController()
NavController należy utworzyć wysoko w hierarchii elementów kompozycyjnych. Musi być on wystarczająco wysoko, aby wszystkie elementy kompozycyjne, które muszą się do niego odwoływać, mogły to zrobić.
Dzięki temu możesz używać NavController jako pojedynczego źródła danych do aktualizowania elementów kompozycyjnych poza ekranami. Jest to zgodne z zasadami
przenoszenia stanu.
Widoki
Jeśli używasz platformy interfejsu Views, możesz pobrać NavController za pomocą jednej z tych metod w zależności od kontekstu:
Kotlin:
Java:
NavHostFragment.findNavController(Fragment)Navigation.findNavController(Activity, @IdRes int viewId)Navigation.findNavController(View)
Zwykle najpierw pobierasz NavHostFragment, a potem pobierasz NavController z fragmentu. Pokazuje to ten fragment kodu:
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();
Więcej informacji
- Projektowanie wykresu nawigacji: przewodnik, w którym dowiesz się, jak dodać wykres
do
NavControllerzawierający wszystkie miejsca docelowe w aplikacji. - Przechodzenie do miejsca docelowego: przewodnik, w którym dowiesz się, jak używać
NavControllerdo przechodzenia między miejscami docelowymi na wykresie nawigacji.