0Pricing
Android Academy · 课时

传递参数

向目的地传递数据

传递参数 是 CoddyKit 上的免费 Android Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 4 节课。

在屏幕之间传递数据

目标屏幕通常需要一些数据,例如要显示的项目 ID。在 Navigation Compose 中,您可以直接将参数编码到路由中,方式类似于 URL。

带占位符的路由

使用花括号在路由中声明占位符。这里的 {id} 是名为 id 的参数。

composable("details/{id}") { backStackEntry ->
    // read id here
}

声明参数类型

使用 arguments 和 navArgument 告知导航器参数的类型。导航器会为您验证并转换该值。

composable(
    "details/{id}",
    arguments = listOf(navArgument("id") { type = NavType.IntType })
) { /* ... */ }

NavType

NavType 用于声明参数的数据类型,例如 IntType、StringType、BoolType 等。导航器会根据声明解析路由值。

读取参数

目标 lambda 会为您提供一个 backStackEntry。请从 backStackEntry.arguments 中读取参数。

composable(
    "details/{id}",
    arguments = listOf(navArgument("id") { type = NavType.IntType })
) { backStackEntry ->
    val id = backStackEntry.arguments?.getInt("id") ?: 0
    DetailsScreen(id = id)
}

使用值进行导航

要打开屏幕,请使用实际值替换占位符,构建路由字符串。

navController.navigate("details/42")

安全地构建路由

使用字符串模板插入值。请确保路径片段与声明的路由完全匹配。

val itemId = 42
navController.navigate("details/$itemId")

可选参数

可选参数使用带有 ?name=value 和 defaultValue 的查询字符串形式。导航时可以省略这些参数。

composable(
    "search?query={query}",
    arguments = listOf(navArgument("query") {
        defaultValue = ""
    })
) { /* ... */ }

字符串参数需要谨慎处理

字符串参数必须符合 URL 安全要求。请避免通过路由传递长文本或斜杠;对于这类数据,建议使用共享的 ViewModel,或使用 ID 作为键的仓库。

传递 ID,而不是对象

最佳实践是:通过路由传递简短的标识符(例如项目 ID),然后在目标屏幕中查找完整对象。不要将大型对象序列化到路由中。

整合应用

列表导航到详情屏幕,并传递所选项目的 ID。

composable("list") {
    ListScreen(onItemClick = { id ->
        navController.navigate("details/$id")
    })
}
composable(
    "details/{id}",
    arguments = listOf(navArgument("id") { type = NavType.IntType })
) { entry ->
    val id = entry.arguments?.getInt("id") ?: 0
    DetailsScreen(id = id)
}

快速检查

如何在路由中声明一个名为 id 的必需整数参数?

回顾

传递参数:

  • 在路由中加入 {placeholder}。
  • 使用 navArgument + NavType 声明类型。
  • 从 backStackEntry.arguments 中读取参数。
  • 用实际值替换占位符后进行导航;传递较小的 ID,而不是大型对象。

常见问题解答

「传递参数」课时是免费的吗?

是的 — 「传递参数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 4 节课。

「传递参数」这节课中我会学到什么?

向目的地传递数据 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Android Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「传递参数」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Android Academy 课中编写并运行代码吗?

能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

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