我正在构建一个Android应用程序与3菜单使用底部导航。我创建了新的项目在Android工作室使用底部导航活动。
我将片段重命名为:
InfoFragment.kt
DetectFragment.kt
AboutFragment.kt
将src/main/res/layout
中的布局重命名为:
fragment_info.xml
fragment_detect.xml
fragment_about.xml
将src/main/res/menu
中的菜单重命名为:
navigation_info
navigation_detect
navigation_about
在fragment_about.xml
中,我添加了一个按钮buttonGoToFAQ
,以导航到fragment_faq
like this,并在AboutFragment.kt
中使用此代码
buttonGoToFAQ.setOnClickListener {
val action = AboutFragmentDirections.actionFAQ()
Navigation.findNavController(it).navigate(action)
}
单击BottomNavigationView菜单navigation_info
或navigation_detect
,然后单击navigation_about
菜单返回后,BottomNavigationView上的选定菜单没有更改。
是的。
我想要的是菜单navigation_about
应该已经被选择,而不是其他菜单。
我已经尝试过在FAQFragment.kt
中覆盖fun onStart()
和fun onResume()
,但没有效果。nav_view
是我底部导航视图
override fun onStart() {
super.onStart()
(requireActivity().findViewById<View>(R.id.nav_view) as BottomNavigationView).selectedItemId =
R.id.navigation_about
}
我还认识到,所有BottomNavigationView菜单的id都与src/main/res/navigation
xml文件中的id相同
4条答案
按热度按时间9jyewag01#
根据Google问题跟踪器-https://issuetracker.google.com/issues/210687967?pli=1的链接,这是预期行为
简单地说,Google希望我们使用嵌套导航图来链接
FaqFragment
和AboutFragment
,这将导致无论何时打开其中一个片段,都会选择菜单navigation_about
。1.在
nav_graph.xml
中,添加一个嵌套图-1.另外,在menu文件夹中,在
bottom_nav_menu.xml
中进行以下更改3df52oht2#
几天后,我终于自己得到了答案。首先,我需要从
MainActivity
中得到BottomNavigationView
,然后,你可以从另一个片段中改变菜单项的值。在
MainActivity.kt
中:在片段上,
定义
BottomNavigationView
并在onResume()
中设置所需的索引:eivnm1vs3#
您可以手动导航,并始终将
true
返回到OnItemSelectedListener
以实现菜单项选择。xjreopfe4#
正如@弗朗西斯所建议的,这就是您正在寻找的解决方案。我看到了您的答案,但这不是最佳解决方案,这只是您找到的一个变通方案。