首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >2.4.0导航中的多navGraph BottomNavigationView

2.4.0导航中的多navGraph BottomNavigationView
EN

Stack Overflow用户
提问于 2022-01-26 03:56:30
回答 1查看 399关注 0票数 1

我在BottomNavigationView中有三个标签A,B,C,每个都有导航图。

通过一个复杂的导航扩展,我可以在导航2.3.3中完美地完成我想做的事情,就像旧的建筑.部件.样品一样。这个示例现在升级到2.4.0。它们使用的代码更少。

我想要的是:

步骤:图A的起始目标片段A1导航到A2。

步骤:点击标签B或C。

  1. B或C的navigateUp动作回到A (工作正常)
  2. 返回到选项卡A时,它将显示A2。(在2.4.0的示例中,显示了A1)
  3. BottomNavigationView的ItemReselected操作是当前图形的startDestinationpopBackStack。(如果setOnItemReselectedListener不改变,如何设置navController?)
  4. 三个startDestination片段A1、B1、C1是顶级目的地,因此B1和C1的工具栏不显示返回图标。(工作正常,因为示例将这3段中的一组而不是navController.graph设置为AppBarConfiguration)

2.4.0说它支持多个背靠背堆栈。,这是什么意思?我可以在2.4.0中制作我的BottomNavigationView吗?

我是这样做的"3. BottomNavigationView‘s ItemReselected行动.“在2.3.3中:

代码语言:javascript
复制
private fun BottomNavigationView.setupItemReselected(
    graphIdToTagMap: SparseArray<String>,
    fragmentManager: FragmentManager
) {
    setOnNavigationItemReselectedListener { item ->
        ... // get the item' s navController
        navController.popBackStack(
            navController.graph.startDestination, false
        )
    }
}

我在2.4.0中所做的工作:只需复制示例代码。

EN

回答 1

Stack Overflow用户

发布于 2022-03-16 10:10:45

添加setOnItemReselectedListenerpopBackStack

代码语言:javascript
复制
import android.util.SparseIntArray
import androidx.core.util.getOrElse

  private val startDestinationIdByNavId: SparseIntArray by lazy(NONE) {
    SparseIntArray(5).apply {
      put(R.id.tab_home_nav, R.id.tabHomeFragment)
      put(R.id.tab_profile_nav, R.id.tabMyProfileFragment)
    }
  }

  fun setupViews() {
    binding.bottomNavView.run {
      setupWithNavController(navController)

      // Pop the back stack to the start destination of the current navController graph
      setOnItemReselectedListener {
        navController.popBackStack(
          destinationId = startDestinationIdByNavId.getOrElse(it.itemId) {
            error("Unknown menu item $it")
          },
          inclusive = false,
        )
      }
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70858513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档