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

时间:2019-03-29 10:38:12

标签: android android-jetpack android-architecture-navigation

我想为当前的导航图注入新的目的地。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我有两种工作方式:

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,并使用不同的设置器。

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