在屏幕之间导航
在不同目的地之间前进和返回
在屏幕之间导航 是 CoddyKit 上的免费 Android Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 4 节课。
继续前进
设置好 NavHost 后,您可以通过对 NavController 调用 navigate 并传入目标路由,前往另一个屏幕。
navController.navigate("details")从按钮触发
导航通常发生在回调中,例如按钮的 onClick 回调。
Button(onClick = { navController.navigate("details") }) {
Text("Open details")
}返回栈
每次调用 navigate 都会将新目标压入返回栈。系统返回按钮会自动将其弹出,返回上一个屏幕。
popBackStack
如需以编程方式返回(例如从自定义的“向上”按钮返回),请调用 popBackStack。它会移除当前目标并返回上一个目标。
navController.popBackStack()navigateUp
navigateUp() 的作用类似,适合用于工具栏中的向上箭头。它会遵循导航层级。
navController.navigateUp()避免重复目标
快速连续点击按钮两次,可能会将同一个屏幕压入返回栈两次。使用 launchSingleTop = true 可避免堆叠重复的目标副本。
navController.navigate("details") {
launchSingleTop = true
}popUpTo
popUpTo 会在导航时清除返回栈的一部分。登录后经常会用到:跳转到主页并移除登录屏幕,这样返回时就不会再次回到登录屏幕。
navController.navigate("home") {
popUpTo("login") { inclusive = true }
}inclusive
inclusive = true 表示 popUpTo 的目标也会被移除。使用 inclusive = false 时,弹出操作会在该目标的上方停止。
让屏幕保持解耦
不要将整个 NavController 传入每个屏幕,而应传入 lambda。屏幕调用 onOpenDetails(),无需了解导航的内部实现。
@Composable
fun HomeScreen(onOpenDetails: () -> Unit) {
Button(onClick = onOpenDetails) { Text("Details") }
}连接 Lambda
NavHost 会将 lambda 连接到实际的导航调用,从而将导航逻辑集中在一个位置。
composable("home") {
HomeScreen(onOpenDetails = {
navController.navigate("details")
})
}整合应用
主页导航到详情页;详情页通过向上箭头返回。
composable("home") {
HomeScreen(onOpenDetails = { navController.navigate("details") })
}
composable("details") {
DetailsScreen(onBack = { navController.popBackStack() })
}快速检查
哪个调用可以以编程方式将用户返回上一个屏幕?
回顾
导航:
navigate("route")会压入一个目标。popBackStack()/navigateUp()会返回。- 使用
launchSingleTop和popUpTo { inclusive }控制返回栈。 - 传入 lambda,而不是控制器,以便让屏幕保持可复用。
常见问题解答
「在屏幕之间导航」课时是免费的吗?
是的 — 「在屏幕之间导航」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 4 节课。
「在屏幕之间导航」这节课中我会学到什么?
在不同目的地之间前进和返回 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Android Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「在屏幕之间导航」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Android Academy 课中编写并运行代码吗?
能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 设置 NavHost
- 在屏幕之间导航
- 传递参数
- 底部导航