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

Dew*_*eed 6 android android-jetpack android-architecture-navigation

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

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

Dew*_*eed 5

我有两种工作方式:

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

或这个

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

还有一个 DSL builder ActivityNavigatorDestinationBuilder

片段类似。更改ActivityNavigatorFragmentNavigator并使用不同的setter方法。

当我在一个图表中添加一个目的地并试图导航到另一个图表中的新目的地时,我也犯了一个错误。当然,那永远不会奏效。