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
并使用不同的设置器。
我在一张图中添加目的地并尝试导航到另一张图中的新目的地时也犯了一个错误。当然那是行不通的。
我想在当前导航图中注入一个新的目的地。
我注意到 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
并使用不同的设置器。
我在一张图中添加目的地并尝试导航到另一张图中的新目的地时也犯了一个错误。当然那是行不通的。