如何解决如何为BottomNavigationView + Navigation组件添加条件?
我试图使用导航组件和BottomNavigationView为我的片段设置条件导航。 当前设置(无条件):
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
NavigationUI.setupWithNavController(bottom_navigation,navController)
常规导航工作正常,但我想根据条件限制用户与底部导航的交互。如果在单击菜单项时未满足条件,则这只会导致显示Toast,而不是导航至下一个片段。
我已经查过this,但是那里提到的解决方案涉及先导航到下一个片段,然后检查条件-但我想避免这种情况。
非常感谢您。
解决方法
暴露LiveData
,以流式传输哪些@Ids
被禁用。
class MainViewModel{
val disableNavigation = MutableLiveData<@Ids Int>()
fun invalidateNavigation() {
val canNavigate = ....
if(!canNavigate){
disableNavigation.value = R.id.bottom_nav_item_x
}
}
}
然后观察一下:
mainViewModel.observe(viewLifecycleOwner){
//disable the id here
//re-enable the rest of the items
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。