0Pricing
Android Academy · 课时

在屏幕之间导航

在不同目的地之间前进和返回

在屏幕之间导航 是 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 设置 NavHost
  2. 在屏幕之间导航
  3. 传递参数
  4. 底部导航
← 返回 Android Academy