Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将条件添加到BottomNavigationView+;导航组件?_Android_Android Navigation_Android Bottomnav - Fatal编程技术网

Android 如何将条件添加到BottomNavigationView+;导航组件?

Android 如何将条件添加到BottomNavigationView+;导航组件?,android,android-navigation,android-bottomnav,Android,Android Navigation,Android Bottomnav,我正在尝试使用导航组件和BottomNavigationView为我的片段设置条件导航。 当前设置(无条件): 常规导航工作正常,但我想根据条件限制用户与底部导航的交互。如果在单击菜单项时不满足条件,这只会导致显示一个祝酒词,而不是导航到下一个片段 我已经查过了,但是这里提到的解决方案需要先导航到下一个片段,然后检查条件——但我想避免这种情况 非常感谢。公开LiveData,它将对禁用的@id进行流式处理 class MainViewModel{ val disableNavigation

我正在尝试使用导航组件和BottomNavigationView为我的片段设置条件导航。 当前设置(无条件):

常规导航工作正常,但我想根据条件限制用户与底部导航的交互。如果在单击菜单项时不满足条件,这只会导致显示一个祝酒词,而不是导航到下一个片段

我已经查过了,但是这里提到的解决方案需要先导航到下一个片段,然后检查条件——但我想避免这种情况


非常感谢。

公开
LiveData
,它将对禁用的
@id
进行流式处理

class MainViewModel{

  val disableNavigation = MutableLiveData<@Ids Int>() 

   fun invalidateNavigation() {
     val canNavigate = ....
     if(!canNavigate){
        disableNavigation.value = R.id.bottom_nav_item_x
     }
   }

}

嘿,尼古拉,谢谢你的输入-我以前考虑过这个问题,但是在尝试点击一个禁用的ID时,无法为用户添加“错误消息”。你知道如何解决这个问题吗?我试图为我的底部导航放置NavigationItemSelectedListener,但这被“setupWithNavController”覆盖。非常感谢您应该在底部导航视图中禁用该项。您还可以在同一块中显示错误消息,因为它将被称为“导航视图中的所有菜单项均已禁用”。
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
}