我有一个问题与jetpack撰写导航返回堆栈处理:
假设我在jetpack compose中有四个屏幕
ScreenA
ScreenB
ScreenC
ScreenD
我可以从
ScreenA -> ScreenB
ScreenB -> ScreenC
ScreenC -> ScreenD
//Here is the tricky part
ScreenD -> ScreenB
我想确保,当我从屏幕结束导航到屏幕b只有屏幕在后面的堆栈。我不想做
navController.popBackStack()
navController.popBackStack()
我已经尝试了几种
的组合navController.navigate([ScreenA.route/ScreenB.route]) {
popUpTo([ScreenA.route/ScreenB.route]) {
inclusive = true
}
}
但是当按下后退键时,我回到了ScreenD
,这是不期望的
我怎样才能正确地导航到这里?
你需要在导航到screenend之前从backstack中删除ScreenC,因为当你调用navigate()
函数时,它默认会将当前目的地添加到backstack中。
试着在你的屏幕c:
navController.navigate(ScreenD.route) {
popUpTo(ScreenC.route) { inclusive = true }
}
Google docs导航到可组合的