Android Navigation组件navArgs生成文件报错求助
异常列表
自动生成的navArgs文件出现以下错误:
Function invocation 'map(...)' expectedNo value passed for parameter 'transform'Type mismatch: inferred type is List but Array? was expectedUnresolved reference: it
相关配置代码
依赖配置
def nav_version = "2.5.3" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" kotlin_version = '1.7.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" implementation 'androidx.navigation:navigation-fragment-ktx:2.6.0-alpha04' implementation 'androidx.navigation:navigation-ui-ktx:2.6.0-alpha04'
导航图配置
<argument android:name="bulkForwardPackages" app:argType="app.px.packagex.models.domainmodels.MemberPackageItemDomainModel[]" />
调用代码(Any.kt)
navigate(DashboardListingFragmentDirections.actionDashboardListingFragmentToBulkForwardPackages( listOf(memberPackage).toTypedArray(), getMemberDetailsFromPackage(memberPackage) ) )
Parcelable模型类
@Parcelize data class MemberPackageItemDomainModel( val packageId: Int = 0, val memberId: Int = 0, val building_id: Int = 0, val mailroom_id: Int = 0, val createdAt: String = "", val created_by: String = "", .... ): Parcelable {}
解决方案
1. 统一Navigation组件版本
当前Safe Args插件版本(2.5.3)与Navigation库依赖版本(2.6.0-alpha04)不匹配,这是生成代码异常的核心原因。Safe Args插件必须与Navigation库版本严格一致。
修改依赖配置,统一为稳定版2.5.3:
def nav_version = "2.5.3" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
若需使用alpha版本,同步升级Safe Args插件版本:
def nav_version = "2.6.0-alpha04" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" implementation "androidx.navigation:navigation-fragment-ktx:$nav_version" implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
2. 清理并重建项目
执行以下操作确保生成正确的navArgs文件:
- 运行Gradle任务:
clean→build - 或在Android Studio中执行
File → Invalidate Caches... → Invalidate and Restart
3. 验证参数传递逻辑
调用代码中listOf(memberPackage).toTypedArray()写法正确,符合导航图数组类型参数要求;模型类的@Parcelize注解实现也无问题,无需修改。
内容的提问来源于stack exchange,提问作者zaheer ahmed
相关产品推荐
相关产品推荐

