You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jetpack Compose中获取跨页面传递的accessToken参数

解决方案

步骤1:调整NavHost中AccountListScreen的路由配置,声明参数并取值

修改你MainActivity里的AccountListScreen对应的composable代码:

// 需导入两个依赖
// import androidx.navigation.NavType
// import androidx.navigation.compose.navArgument
composable(
    route = Screen.AccountListScreen.route + "/{accessToken}",
    arguments = listOf(navArgument("accessToken") { type = NavType.StringType })
) { backStackEntry ->
    val accessToken = backStackEntry.arguments?.getString("accessToken") ?: ""
    AccountListScreen(navController, accessToken)
}

步骤2:修改AccountListScreen的函数签名接收参数

@Composable
fun AccountListScreen(
    navController: NavController,
    accessToken: String, // 新增参数接收传值
    viewModel: AccountListViewModel = hiltViewModel()
) {
    // 此处可直接使用accessToken参数
}

2.4.0-alpha10版本报错排查

你碰到的报错基本是以下两个原因导致:

  • 未手动导入NavType和navArgument两个类,补充导入即可
  • 没有从composable回调的backStackEntry中取参数,直接在AccountListScreen内部尝试获取参数导致报错

注意:如果你的accessToken包含斜杠、问号等特殊符号,传递前需要用URLEncoder.encode(accessToken, StandardCharsets.UTF_8.name())编码,取值后用URLDecoder.decode(accessToken, StandardCharsets.UTF_8.name())解码,否则会出现路由匹配失败的问题。

内容的提问来源于stack exchange,提问作者Morozov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 18:54:02