创建导航控制器

导航控制器是导航中的一个关键概念。它持有导航图,并公开允许您的应用在图中目的地之间移动的方法。

使用 Navigation 组件时,您可以使用 NavController 类创建导航控制器。NavController 是核心导航 API。它跟踪用户访问过的目的地,并允许用户在目的地之间移动。本指南演示了如何在您的应用中创建 NavController

有关如何将导航图添加到 NavController 的信息,请参阅设计您的导航图NavController 提供了几种不同的方法来导航到其图中的目的地。更多信息请参阅导航到目的地

Compose

在使用 Jetpack Compose 时创建 NavController,请调用 rememberNavController()

val navController = rememberNavController()

您应该在可组合层次结构的较高位置创建 NavController。它需要足够高,以便所有需要引用它的可组合项都能引用它。

这样做可以使您将 NavController 作为更新屏幕外可组合项的唯一事实来源。这遵循了状态提升的原则。

视图

如果您使用的是 Views UI 框架,您可以根据上下文使用以下方法之一检索您的 NavController

Kotlin

Java

通常,您首先获取一个 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 在导航图中目的地之间移动的指南。