【发布时间】:2022-05-10 21:47:26
【问题描述】:
使用最新的Navigation Component 和BottomNavigationView,NavController 现在默认保存和恢复选项卡的状态:
作为此更改的一部分,onNavDestinationSelected()、BottomNavigationView.setupWithNavController() 和 NavigationView.setupWithNavController() 的 NavigationUI 方法现在可以自动保存和恢复弹出目的地的状态,无需任何代码更改即可支持多个返回堆栈。当使用带有 Fragments 的导航时,这是与多个返回堆栈集成的推荐方式。
这太棒了!现在切换标签会为您提供上次查看的堆栈。
但是,如果用户重新选择一个标签,说他们已经离开Home -> Detail Page A -> Detail Page B,然后他们选择了Home 标签并期望返回到默认视图,他们仍然会看到@987654328 @。
似乎讨论的一部分是处理issue tracker 中提到的“重新选择选项卡”行为,但我想不出推荐的实现方式。
NavigationAdvancedSample 中包含的所有内容是:
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_nav)
bottomNavigationView.setupWithNavController(navController)
// Setup the ActionBar with navController and 3 top level destinations
appBarConfiguration = AppBarConfiguration(
setOf(R.id.titleScreen, R.id.leaderboard, R.id.register)
)
setupActionBarWithNavController(navController, appBarConfiguration)
这只是恢复以前的状态,如发行说明中所述。
我们如何检查第二次点击导航栏项目并清除后台堆栈?
【问题讨论】:
-
该解决方案是否适用于您的所有选项卡?事实上,对我来说,它只适用于主选项卡。谢谢
标签: android bottomnavigationview android-architecture-navigation android-navigation android-bottomnav