假设我有三个页面。Home
、Detail
和Watch
,并考虑我有下面的导航堆栈。
Home -> Detail -> Watch -> Detail
。
现在我想打开一个新的Watch
页面,但现有的页面应该从当前堆栈中删除。这意味着,生成的堆栈应该是
Home -> Detail -> Detail -> Watch
。
是否可以使用Jetpack导航实现?
假设您在谈论"Jetpack Navigation";然后您可以添加导航选项。
例如,您可以确保launchSingleTop
的后堆栈上只有一份Watch
页面的副本。它可能不会像您上面描述的那样操作后堆栈,因为从后堆栈中删除Watch
似乎有点不寻常。
但是,使用这些额外的导航选项,您可能会获得所需的行为。
// Pop everything up to the "home" destination off the back stack before
// navigating to the "friendslist" destination
navController.navigate("friendslist") {
popUpTo("home")
}
// Pop everything up to and including the "home" destination off
// the back stack before navigating to the "friendslist" destination
navController.navigate("friendslist") {
popUpTo("home") { inclusive = true }
}
// Navigate to the "search” destination only if we’re not already on
// the "search" destination, avoiding multiple copies on the top of the
// back stack
navController.navigate("search") {
launchSingleTop = true
}