【发布时间】:2021-02-23 23:19:26
【问题描述】:
美好的一天。所以我一直在使用 Jetpack for Android
的 NavComponent我认为片段的 BackStack 的管理必须已经在那里实现,事实上它就在那里,但我遇到了一个问题。
这是我的结构:
我有并进入活动
我在 activity
中有一个 NavHost我在Activity中有底部导航栏
对于每个底部项目,我使用单独的片段进行导航。
这是导航的代码。
bottomNavigationView.setOnNavigationItemSelectedListener {
when (it.itemId) {
R.id.navigation_home -> {
navController.apply {
navigate(R.id.navigation_home)
}
true
}
R.id.navigation_dashboard -> {
navController.apply {
navigate(R.id.dashboardFragment)
}
true
}
R.id.navigation_notifications -> {
true
}
else -> {
false
}
}
}
别在意最后一项。
所以问题是下一个。
如果我尝试在 home 和 dashboard 之间切换多次,当我按下返回时,堆栈肯定会开始弹出其中包含的所有项目。因此,如果我移动 6 次,我将需要 12 次尝试才能真正退出应用程序。
目前我找不到任何来源,例如 navigate() 方法将接受某种参数来兑现我的片段,而不是每次都重新创建它并添加到 BackStack。 p>
那么你会建议什么样的方法?
如果我在每次按下后退按钮时手动管理 BackStack,那么 NavController 的目的是什么?只是为了创建和FORWARD导航?
我认为我在 Android 的官方文档中遗漏了一些来源。
先谢谢你。
附:
在调用navigate() 之前使用navController.popBackStack() 肯定不是正确的选择。
【问题讨论】:
标签: android uinavigationcontroller android-architecture-components