支持新的目的地类型

原文链接:Add support for new destination types | Android Developers

NavController 依赖一个或多个 Navigator 对象来实行导航操作。

在默认情况下,所有的 NavController 都支持使用 ActivityNavigator 类及其内部类 ActivityNavigator.Destination 导航到另一个 activity 的方式,来离开当前的导航图。

欲导航到其他类型的目的地,您必须为 NavController 添加一个或多个新的 Navigator。例如,当您把 fragment 作为目的地时,NavHostFragment 会自动为其 NavController 添加 FragmentController 类。

欲为 NavController 添加新的 Navigator 对象,您必须使用各自 NavController 类的 getNavigatorProvider) 方法,接着再调用其 addNavigator() 方法。下例展示如何将一个虚构的 CustomNavigator 添加到一个 NavController

  1. CustomNavigator customNavigator = new CustomNavigator();
  2. navController.getNavigatorProvider().addNavigator(customNavigator);
  1. val customNavigator = CustomNavigator()
  2. navController.navigatorProvider += customNavigator

大多数 Navigator 都有一个目的地的内部类,该内部类可以被用来指定和您目的地所独有的特定属性。欲了解更多有关目的地内部类的信息,请参阅相应 Navigator 类的参考文档。