【问题标题】:Restore menu items states using Navigation with BottomNavigationView + FloatingActionButton (FAB)使用带有 BottomNavigationView + FloatingActionButton (FAB) 的导航恢复菜单项状态
【发布时间】:2021-08-15 22:44:07
【问题描述】:

我如何setupWithNavController 我的 BottomNavigationView 顶部有一个 FloatingActionButton (FAB)?

Thanks StackOverflow for hating me and not letting me display photos. :)

根据导航库发布...

Navigation 2.4.0-alpha01开始,每个菜单项的状态为 使用setupWithNavController时保存和恢复。

这就像一个魅力,但是,当我设置我的 BottomNavigationView 并按下 FAB 时,当前菜单项的状态会重新加载。如何使用 FAB 实现单击任何菜单项的相同行为?

binding.activityMainBottomNavigationView.setupWithNavController(navController)

binding.activityMainFloatingActionButton.setOnClickListener {

    // TODO: Fix navigation.
    navController.navigate(R.id.homeFragment)

    binding.activityMainBottomNavigationView.selectedItemId = R.id.homeFragment      
}

据我了解,调用navController.navigate() 可能会重置fragmentContainerView 使用的当前nav_graph,这就是重新加载当前菜单项的原因。有什么办法可以避免吗?

【问题讨论】:

    标签: android navigation floating-action-button bottomnavigationview


    【解决方案1】:

    经过一周的几次尝试,我使用来自NavigationUIonNavDestinationSelected 达到了预期的目的。

    binding.activityMainBottomNavigationView.setupWithNavController(navController)
    
    binding.activityMainFloatingActionButton.setOnClickListener {
    
        NavigationUI.onNavDestinationSelected(
            binding.activityMainBottomNavigationView.menu.findItem(R.id.homeFragment),
            navController
        )
    
        binding.activityMainBottomNavigationView.selectedItemId = R.id.homeFragment
    }
    

    通过这种方式,片段和导航的状态得以保存! ?

    干杯! ?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-05
      • 2019-01-03
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 2018-12-08
      • 2020-04-08
      相关资源
      最近更新 更多