簡體   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