Kotlin代码报Unresolved reference: indices错误该如何解决?
问题根因
indices 是Kotlin标准库为数组、List等实现了Iterable接口的类型提供的内置扩展属性,你遇到Unresolved reference: indices报错的核心原因和kotlin-android-extensions插件无关,这个插件仅用于处理布局ID绑定,完全不影响标准库语法的识别,所以添加该配置无法解决问题。
排查与解决方向
- 首先检查
catalog变量的类型:- 如果是可空类型(类型声明末尾带
?),需要先做空安全处理才能调用indices属性,直接调用可空对象的方法/属性会触发报错,可参考写法:catalog?.let { for (i in it.indices) { // 原有匹配逻辑 } } - 如果是你自定义的类、或者未完成Kotlin类型映射的Java自定义集合类型,只要没有实现
Iterable接口就不会默认带indices扩展属性
- 如果是可空类型(类型声明末尾带
- 检查build.gradle是否正确引入了Kotlin标准库依赖,参考配置如下:
dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } - 检查当前文件的后缀是否为
.kt,只有Kotlin文件才会识别标准库扩展属性 - 触发IDE的项目同步操作后清理缓存重启,Android Studio可点击右上角的「Sync Project with Gradle Files」按钮,IntelliJ IDEA可点击「Reload All Gradle Projects」
兼容替代写法
如果暂时无法调整catalog的类型,可以把for (i in catalog.indices)改成等价写法,规避对indices的依赖:
for (i in 0 until catalog.size)
内容的提问来源于stack exchange,提问作者Chris Marshall Iheacho
相关产品推荐
相关产品推荐

