Android 离开项目选项卡时清除后退栈 BottomNavigation

use*_*346 9 android android-navigation bottomnavigationview android-bottom-nav-view android-architecture-navigation

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

默认行为是当用户返回选项卡时保存每个返回堆栈。我想在用户离开选项卡时清除后退堆栈。

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

表1 表2 表3
屏幕A1 屏幕B1 屏幕C1
屏幕A2 屏幕B2 屏幕C2

从 Tab1 中,如果用户:

  • 转到屏幕A2
  • 单击 Tab2(显示 ScreenB1)
  • 返回选项卡1
  • 这里我想要 ScreenA1 而不是 ScreenA2 (导航库的默认行为)

谢谢

Ain*_*ege 6

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

navView.setupWithNavController(navController) 
Run Code Online (Sandbox Code Playgroud)

NavigationUI.setupWithNavController(navView, navController, false) 
Run Code Online (Sandbox Code Playgroud)


Din*_*nan -1

我刚刚通过 onNavigationItemSelected Listener 完成

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

  2. 当您处理特定项目的点击操作时,请尝试以下操作

             R.id.home_bottom_item -> {navController.popBackStack();
             navController.navigate(R.id.home_bottom_item)
         }
    
    Run Code Online (Sandbox Code Playgroud)