Android 导航组件:如何以编程方式添加目的地?

Android Navigation Component: How to add a destination programmatically?

我想在当前导航图中注入一个新的目的地。

我注意到 NavGraph 有一个方法 void addDestination(@NonNull NavDestination node) 但我找不到创建 NavDestination 并使用 navController.navigate(R.id.new_dest_id) 导航到它的正确方法。

您是否尝试在 navigate() 中传递新创建的 Destination 的 ID,例如 navigate(myDes.getId())

我有两种工作方式:

navController.graph.addDestination(ActivityNavigator(this).createDestination().apply {
    id = R.id.new_dest
    setComponentName(ComponentName(context, NewActivity::class.java))
    // or setIntent
})

或这个

navController.graph.addDestination(
    navController.navigatorProvider.getNavigator(ActivityNavigator::class.java)
        .createDestination().apply {
            id = R.id.new_dest
            setComponentName(ComponentName(context, NewActivity::class.java))
        }
)

还有一个 DSL 生成器 ActivityNavigatorDestinationBuilder

片段相似。将 ActivityNavigator 更改为 FragmentNavigator 并使用不同的设置器。

我在一张图中添加目的地并尝试导航到另一张图中的新目的地时也犯了一个错误。当然那是行不通的。