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

Kotlin Android使用navArgs传参时报错Type argument is not within its bounds如何解决

你遇到的Type argument is not within its bounds: should be subtype of 'NavArgs'报错,本质是导航组件Safe Args插件没有正确生成UpdateFragmentArgs类,或是配置、依赖缺失导致的,按以下步骤排查即可:

1. 检查Safe Args插件配置

首先要确保项目两级build.gradle都正确配置了Safe Args插件:

  • 项目根目录的build.gradle.kts(或groovy格式的build.gradle)plugins块添加如下配置,版本与你使用的navigation依赖版本一致即可:
id("androidx.navigation.safeargs.kotlin") version "2.5.3" apply false
  • app模块目录下的build.gradle.kts plugins块添加:
id("androidx.navigation.safeargs.kotlin")

配置完成后同步Gradle。

2. 确保User类实现Parcelable接口

导航传递自定义类必须做序列化处理,Android推荐使用Parcelable,修改你的User类如下:

import android.os.Parcelable
import androidx.room.Entity
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize

@Parcelize
@Entity(tableName = "user_table") // 你的Room实体注解保持不变即可
data class User(
    @PrimaryKey(autoGenerate = true)
    val id: Int,
    val firstName: String,
    val lastName: String,
    val age: Int
) : Parcelable

如果@Parcelize提示找不到,在app模块的build.gradle plugins块添加kotlin-parcelize插件即可:

id("kotlin-parcelize")

3. 校验导航参数路径并重新构建

确认导航XML里app:argType="com.example.testingroomdatabase.model.User"的包名路径和你实际User类的包路径完全一致,没有拼写错误。
之后点击菜单栏Build -> Rebuild Project重新构建项目,构建完成后UpdateFragmentArgs会自动生成,报错即可消失。

补充排查

如果仍有报错,检查app模块依赖是否添加了navigation基础依赖,版本和Safe Args版本一致即可:

implementation "androidx.navigation:navigation-fragment-ktx:2.5.3"
implementation "androidx.navigation:navigation-ui-ktx:2.5.3"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:06:04