创建导航控制器

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

使用导航组件时,您可以使用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在导航图中的目标之间移动的指南。