将BottomNavigationView与NavController一起使用时动画问题,每个片段都有自己的工具栏

我正在使用一些最新的Android Jetepack组件在Kotlin中开发一个应用程序。最近,我遇到了以下情况:

当将BottomNavigationViewNavController一起使用时,以及每个Fragment都有自己的Toolbar时,似乎会发生此问题。问题是,当从片段A过渡到片段B时,对 titles actionBar导航图标的更改会在Fragment A B中进行更新。 ,为了实现平稳过渡,片段A中的AppBar的状态将不会发生变化。我怀疑这可能是由于这些属性不“属于” Toolbar,因为这并非事实”似乎以相同的方式影响工具栏的菜单项。

AppBar标题的变通方法是在其各自的fragment_layout.xml中设置每个工具栏的title属性,同时还从navFragment.xml中删除label属性(通常负责设置AppBar的标题文本)使用navController时)。

但是,这不能解决没有出现在顶级目的地上但在其他目的地上出现的actionBar导航图标(例如“向上/首页”按钮)的问题。因此,就我而言,它仍然显得很简陋。

我已经按照以下步骤连接了导航:

Mainactivity.kt

class Mainactivity : AppCompatactivity() {

    lateinit var appBarConfiguration: AppBarConfiguration
    lateinit var navController: NavController

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val binding: MainactivityBinding = DataBindingUtil.setContentView(this,R.layout.main_activity)
        navController = Navigation.findNavController(this,R.id.nav_fragment)
        appBarConfiguration = AppBarConfiguration(setOf(R.id.fragment_1_main,R.id.fragment_2_main))
        binding.bottomNavigationView.setupWithNavController(navController)

        }
    }

    override fun onSupportNavigateUp(): Boolean {
        return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp()
    }
}

ExampleFragment.kt

override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
        super.onViewCreated(view,savedInstanceState)

        (activity as AppCompatactivity).setSupportactionBar(toolbar)
        NavigationUI.setupWithNavController(toolbar,(requireactivity() as Mainactivity).navController,(requireactivity() as Mainactivity).appBarConfiguration)

    }

半路!

kangxiao248789 回答:将BottomNavigationView与NavController一起使用时动画问题,每个片段都有自己的工具栏

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3129341.html

大家都在问