底部导航图标不变

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活动生命周期吗?

以上是关于底部导航图标不变的主要内容,如果未能解决你的问题,请参考以下文章

底部导航图标颜色变化

无法单击 React Native 中底部导航中的图标

png中的图标用于底部导航栏android

如何在android中删除底部导航视图的图标动画

微信小程序底部导航图标如何设置大小

底部导航栏的表现形式