繁体   English   中英

Android 离开项目选项卡时清除 backstack 底部导航

[英]Android clear backstack when leaving item tab BottomNavigation

我正在使用最后一个导航库(版本 2.4.0),其中包括多个带有底部导航视图的 backstack。

默认行为是当用户 go 返回选项卡时保存每个 backstack。 当用户离开标签时,我想清除后台堆栈。

基于带有 3 个选项卡的底部导航:

选项卡1 选项卡2 Tab3
屏幕A1 屏幕B1 屏幕C1
屏幕A2 屏幕B2 屏幕C2

从 Tab1,如果用户:

  • go 到 ScreenA2
  • 点击 Tab2(显示 ScreenB1)
  • go 返回 Tab1
  • 这里我想要 ScreenA1 而不是 ScreenA2 (导航库的默认行为)

谢谢

在您的导航文件中,将这些属性app:popUpToapp:popUpToInclusive到导航到 ScreenA2 的操作中。

<action
    android:id="@+id/action_A1_to_A2"
    app:destination="@id/A2"
    app:popUpTo="@+id/A1"
    app:popUpToInclusive="true"/>

有关更多信息,请查看此链接: popUpTo 示例:循环逻辑

在调用方法导航到 TAB1 之前尝试调用以下内容。

navController.popBackStack(R.id.ScreenA1, false);

这对我有用,我和你有类似的情况。

您可以关闭选项卡的多个后台堆栈,就像在 lib 2.4 版之前一样。 为此,您应该更改

navView.setupWithNavController(navController) 

NavigationUI.setupWithNavController(navView, navController, false) 

我刚刚由 onNavigationItemSelected Listener 完成

  1. navigation.xml 和 menu.xml 中的 id 应该不同

  2. 当您处理特定项目的点击操作时,试试这个

     R.id.home_bottom_item -> {navController.popBackStack(); navController.navigate(R.id.home_bottom_item) }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM