底部导航图标不变
Posted
技术标签:
【中文标题】底部导航图标不变【英文标题】:Bottom Navigation Icon Doesn't Change 【发布时间】:2021-12-04 14:47:12 【问题描述】:我正在使用底部导航栏。一切正常,但是当我打开一个新片段并使用后按按钮将其销毁时,我的应用程序将返回基本片段,但底部导航栏选定的项目不会改变。它保持最后点击的位置。让我用一些图片解释一下
Image 1 +++ Image 2 +++ Image 3
如您所见,当底部导航栏的选定项目是配置文件项目时,我正在打开片段。然后我使用后按并返回主片段,但底部导航栏的选定项目仍然是配置文件项目。
Host Fragment:该函数在 onViewcreated 内部(我正在使用 replacefragment 函数为第一次打开设置基本片段)
binding.bottomNavigationView.setOnItemSelectedListener
when(it.itemId)
R.id.nav_profile -> replaceFragment(ProfileFragment())
R.id.nav_mainpage -> replaceFragment(MainPageFragment())
return@setOnItemSelectedListener true
replaceFragment(MainPageFragment())
private fun replaceFragment(fragment: Fragment)
val transaction = activity?.supportFragmentManager?.beginTransaction()
transaction?.replace(R.id.frameLayout,fragment)
transaction?.commit()
我尝试了什么:我尝试了这种方法及其变体,但它们都不起作用
binding.bottomNavigationView.selectedItemId = R.id.nav_mainpage
【问题讨论】:
【参考方案1】:试试这个:
binding.bottomNavigationView.setSelectedItemId(R.id.nav_mainpage)
【讨论】:
我已经尝试过了,不幸的是它不起作用。此方法仅在应用首次打开时有效。 参考这个答案***.com/a/6505060/14979180 然后在您的片段 onResume() 方法上将 bottom.nav 栏项目设置为 MainPage。 第一次创建活动时调用 OnCreate() 方法,即不会调用 onCreate() 方法,除非您关闭应用程序并重新启动它,而当您从一个活动移动时调用 onResume()/片段到其他(在这里调用onPause())然后再次回到相同的活动/片段(调用onResume())。所以在你的情况下,当你从你的第二个片段回到你的主要片段时,不会调用onCreate() ,onResume() 在此时被调用,所以你的代码在这里工作。 你熟悉android活动生命周期吗?以上是关于底部导航图标不变的主要内容,如果未能解决你的问题,请参考以下文章