Kontroler nawigacji to jedno z kluczowych pojęć związanych z nawigacją. Znajdują się w nim wykres nawigacyjny i prezentowane metody, które umożliwiają aplikacji poruszanie się między miejscami docelowymi na wykresie.
Jeśli korzystasz z komponentu Nawigacja, możesz utworzyć kontroler nawigacji za pomocą klasy NavController
. NavController
to główny interfejs API nawigacji. Śledzi miejsca docelowe odwiedzonych przez użytkownika i umożliwia przechodzenie między miejscami docelowymi. Z tego przewodnika dowiesz się, jak utworzyć NavController
w aplikacji.
Więcej informacji o dodawaniu wykresu nawigacyjnego do elementu NavController
znajdziesz w artykule Projektowanie wykresu nawigacyjnego. NavController
umożliwia poruszanie się po miejscach docelowych na wykresie na kilka różnych sposobów. Więcej informacji znajdziesz w sekcji Nawigacja do miejsca docelowego.
Utwórz
Aby utworzyć NavController
przy użyciu Jetpack Compose, wywołaj rememberNavController()
:
val navController = rememberNavController()
Element NavController
należy utworzyć wysoko w hierarchii funkcji kompozycyjnej. Musi być na tyle wysoka, aby mogły się do niego odwoływać wszystkie elementy kompozycyjne.
Dzięki temu będzie można używać NavController
jako jedynego źródła danych do aktualizowania elementów kompozycyjnych poza ekranami. Jest to zgodne z zasadami transferu stanowego.
Wyświetlenia
Jeśli korzystasz z platformy Widoki UI, możesz pobrać kontroler NavController, korzystając z 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 z niego NavController
. Można to zademonstrować za pomocą tego fragmentu 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 materiałów
- Zaprojektuj wykres nawigacyjny: przewodnik zawierający szczegółowe informacje o tym, jak dodać do elementu
NavController
wykres zawierający wszystkie miejsca docelowe w aplikacji. - Nawigacja do miejsca docelowego: przewodnik wyjaśniający, jak używać elementu
NavController
do poruszania się między miejscami docelowymi na wykresie nawigacyjnym.