android-fragments BottonNavigationView图标在向后按下时不发生变化

qvtsj1bj  于 2022-11-13  发布在  Android
关注(0)|答案(2)|浏览(165)

我正在使用导航组件作为底部导航组件。

bottomNavbar.setupWithNavController(navController)

现在这是工作正常,但当我点击后退按钮,它返回到主页,但图标没有改变,它停留在前一个选择的片段。我有三个片段,我已经实现了导航栏分别在所有这些片段,这是这三个片段的代码。
设置片段

val bottomNavbar = view.findViewById<BottomNavigationView>(R.id.bottomNavbar)
bottomNavbar.setupWithNavController(navController)

搜索片段

val bottomNavbar = view.findViewById<BottomNavigationView>(R.id.bottomNavbarSearch)
    bottomNavbar.setupWithNavController(navController)

聊天片段

val bottomNavbar = view.findViewById<BottomNavigationView>(R.id.bottomNavbar)
    bottomNavbar.setupWithNavController(navController)

这里搜索片段是我的主片段。
在我的实现中是否有错误或者我是否应该切换到实现底部导航视图的旧方法。
任何帮助都是感激的。谢谢

axzmvihb

axzmvihb1#

请确保bottomNavView菜单中的id与bottomNavView片段的navGraph中的对应id匹配。
检查this答案

c6ubokkw

c6ubokkw2#

您似乎已经在所有三个片段上添加了BottomNavigationView,理想情况下,它应该位于Activity视图中您定义了navGraph的片段/FragmentContainerView下方。
要修复它,您需要从所有3个片段中删除BottomNavigationView,并使用以下基本结构将其添加到Activity上。
活动XML结构:

<constriantLayout>
    <fragment/> //with navGraph
    <bottomNavigationView/>
</constraintLayout>

和活动的onCreate使用设置BottomNavigationView的代码

val bottomNavbar = findViewById<BottomNavigationView>(R.id.bottomNavbar)
bottomNavbar.setupWithNavController(navController)

相关问题