![](/img/trans.png)
[英]how to perform an action instead of moving to another destination if I click a menu in Navigation Drawer using Navigation Component?
[英]When using Navigation Component, how do I set an argument at runtime for a destination accessed via navigation view menu?
我有一个带菜单项的导航视图的导航抽屉,我正在使用导航组件。 单击导航视图中的某个菜单项时,如何在运行时为目标指定参数?
我知道我可以在导航图中设置默认值 arguments 但这不是我想要做的,因为传递的参数需要在运行时决定。 对于工具栏菜单项,我没有问题,因为我可以覆盖onOptionsItemSelected
。 我的问题特别针对导航视图中的菜单项。
我已经尝试过这里的方法: https://stackoverflow.com/a/54086631/10933532但我无法按照描述创建NavArgument
。 NavArgument
class 没有给我 public Builder()
构造函数。
我在 mainactivity onCreate 中使用导航 controller 设置我的导航视图,如下所示:
NavigationUI.setupWithNavController(navigationView,navController);
我也这样做是为了使用导航 controller 设置我的工具栏:
NavigationUI.setupWithNavController(collapsingToolbarLayout,toolbar,navController,appBarConfiguration);
有人可以指出我正确的方向吗?
您可以使用自定义NavigationItemSelectedListener
。
请注意,因为通过这种方式您将删除原始侦听器。 您必须调用NavigationUI.onNavDestinationSelected()
才能触发默认行为。
navigationView.setNavigationItemSelectedListener {
when (it.itemId) {
R.id.xxxxx -> {
// handle click
true
}
}
//Call the original listener
NavigationUI.onNavDestinationSelected(it, navController)
drawerLayout.closeDrawer(GravityCompat.START)
true
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.