创建导航控制器

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

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