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

使用Compose类型安全导航时遭遇序列化插件错误求助

Compose类型安全导航传递String参数报错的解决方案

可能的问题及修复步骤

1. 补充kotlinx-serialization依赖

你当前仅在build.gradle中添加了序列化插件,但缺少对应的依赖库。需要在app模块的build.gradle.kts中添加依赖:

dependencies {
    implementation(libs.kotlinx.serialization.json)
}

同时确保libs.versions.toml中kotlin版本与kotlinx-serialization版本兼容(例如kotlin 1.9.x适配serialization 1.6.x或1.7.x)。

2. 确认导航库版本符合要求

Compose类型安全导航要求navigation-compose版本至少为2.7.0,检查libs.versions.toml中的配置:

[versions]
navigationCompose = "2.7.5" # 或更高兼容版本

并在app模块引入导航依赖:

dependencies {
    implementation(libs.androidx.navigation.compose)
}

3. 确保参数传递方式正确

跳转到PhotoDestination时必须使用类型安全的导航API,示例代码:

// CameraRoute中导航的正确写法
navController.navigate(PhotoDestination(uri = "目标字符串URI"))

禁止使用旧的字符串路径导航,否则无法正确解析参数。

4. 验证参数解析代码

确保在composable中解析参数时泛型类型匹配正确:

composable<PhotoDestination> { navBackStackEntry ->
    val args = navBackStackEntry.toRoute<PhotoDestination>()
    PhotoRoute(args.uri)
}

只要PhotoDestination的@Serializable注解正确,无需额外指定序列化器。

5. 彻底清理重建项目

若上述配置都正确,执行以下操作:

  • 点击File -> Invalidate Caches... -> Invalidate and Restart重启IDE
  • 运行终端命令./gradlew clean build重新构建项目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:12:33