导航控制器是导航中的一个关键概念。它持有导航图,并公开允许您的应用在图中目的地之间移动的方法。
使用 Navigation 组件时,您可以使用 NavController
类创建导航控制器。NavController
是核心导航 API。它跟踪用户访问过的目的地,并允许用户在目的地之间移动。本指南演示了如何在您的应用中创建 NavController
。
有关如何将导航图添加到 NavController
的信息,请参阅设计您的导航图。NavController
提供了几种不同的方法来导航到其图中的目的地。更多信息请参阅导航到目的地。
Compose
在使用 Jetpack Compose 时创建 NavController
,请调用 rememberNavController()
val navController = rememberNavController()
您应该在可组合层次结构的较高位置创建 NavController
。它需要足够高,以便所有需要引用它的可组合项都能引用它。
这样做可以使您将 NavController
作为更新屏幕外可组合项的唯一事实来源。这遵循了状态提升的原则。
视图
如果您使用的是 Views UI 框架,您可以根据上下文使用以下方法之一检索您的 NavController
Kotlin
Java
NavHostFragment.findNavController(Fragment)
Navigation.findNavController(Activity, @IdRes int viewId)
Navigation.findNavController(View)
通常,您首先获取一个 NavHostFragment
,然后从该片段中检索 NavController
。以下代码段演示了这一点
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();
延伸阅读
- 设计您的导航图:一份详细介绍如何将包含您应用中所有目的地的图添加到
NavController
的指南。 - 导航到目的地:一份详细介绍如何使用
NavController
在导航图中目的地之间移动的指南。