我为导航体系结构组件设置了以下代码:
val navController = findNavController(R.id.main_nav_host_fragment)
nav_view.setupWithNavController(navController)
bottom_navigation.setupWithNavController(navController)
//nav_view.setNavigationItemSelectedListener(this)
navController.addOnNavigatedListener { controller, destination ->
if(destination.id == R.id.loginActivity) {
Toast.makeText(context, "Log Out navigation destination", Toast.LENGTH_LONG).show()
}
}
在这里我发现了两个问题:
在“导航抽屉”菜单项中未出现在“底部导航视图”中的选择会导致在“底部导航视图”中选择第一个菜单项。似乎不正确(不应在此处选择任何项目)
在导航抽屉中选择菜单项并将菜单项ID设置为“活动目标”(精确地对“活动目标”进行操作)时,未调用OnNavigatedListener-因此,我不需要传递此操作并注销用户,而要拦截该操作并注销用户导航图中的“活动目标”的默认参数将注销“登录活动目标”中的用户。您知道为什么不为活动目标调用OnNavigatedListener而是仅为片段目标调用吗?为什么没有事件侦听器OnBeginNavigationListener有条件地阻止导航或添加一些副作用?