android - 如何使用 Jetpack Compose + Navigation 处理后退导航(无片段)
问题描述
我正在尝试导航让我们说从入职到仪表板等,一旦用户点击仪表板就会弹出入职,但仍然有“后退动作”,我最终再次入职。
这是示例代码:
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MainUI()
}
}
}
@Composable
fun MainUI() {
val navController = rememberNavController()
NavHost(
navController = navController,
startDestination = "onboarding"
) {
composable("onboarding") {
Column {
Text("I am on onboarding")
Button(onClick = {
navController.navigate("dashboard") {
popUpTo("dashboard") // I want to get rid of onboarding here
}
}) {
Text("go to dashboard")
}
}
}
composable("dashboard") {
Column {
Text("I am on dashboard")
Button(onClick = {
navController.navigate("detail")
}) {
Text("go to detail")
}
}
}
composable("detail") {
Text("I am on detail")
}
}
}
这也不起作用
navController.navigate("dashboard") {
popUpTo("dashboard") {
inclusive = true // no difference
}
// ....
popUpTo("onboarding") // also nothing
// ....
popUpTo("onboarding") {
inclusive = true // this crashes -> NavGraph cannot be cast to ComposeNavigator$Destination
}
}
出于某种原因,这种工作方式,所以仪表板被解雇,从细节上我最终入职
navController.navigate("detail") {
popUpTo("dashboard") {
inclusive = true
}
}
解决方案
我发现我的解决方案很容易,如果我错了,请赐教。
navController.popBackStack()
推荐阅读
- javascript - Javascript 闭包和 Fetch API
- sql - 检索评论的回复数
- paypal - Paypal REST API 订阅集成错误
- python-3.x - 从 tox 运行时找不到夹具“mocker”(pytest-mock)
- java - 为什么我在求三个数的 LCM 时不能使用 &&?
- postgresql - 使用 pgAdmin 从我的计算机访问 Kubernates pod 内的 Postgresql 数据库
- python - 如何在matplotlib中设置多边形补丁的边缘颜色
- python - 如何下载最新版本的 PyQt5 工具?
- scala - Scala 的 any 列表和扩展 Any 的东西的列表。有什么区别?
- javascript - 查找用户时删除机器人