Android Studio(Kotlin)中R.string-array资源引用冲突问题求助
解决Android Studio中Kotlin开发的R资源引用冲突问题
问题核心
导入android.R后,系统会优先调用自带的资源类,直接覆盖项目自身生成的R类,导致自定义的R.array.types无法被识别;删除android.R导入后,系统布局资源需要明确指定来源,否则会出现找不到的报错。
具体解决方案
- 彻底移除
import android.R语句:这是冲突的根源,项目默认会使用自身模块生成的R类(通常为com.你的包名.R,Android Studio会自动导入,无需手动编写)。 - 修改系统资源的引用方式:对于系统自带的布局
simple_spinner_dropdown_item,必须加上android.前缀明确指向系统资源类,代码调整如下:// 自定义资源直接用自身R类 val typeAdapter = ArrayAdapter.createFromResource(this, R.array.types, android.R.layout.simple_spinner_dropdown_item) // 系统布局需添加android.R前缀 val cityAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, cities) - 强制重新生成R类:如果调整后仍有报错,执行
Build→Clean Project,再执行Build→Rebuild Project,解决资源未同步的问题。
额外注意
- 不要同时导入
android.R和自身项目的R类,日常开发中除非特殊需求,绝对不要导入android.R。 - 检查
arrays.xml是否放在res/values/目录下,且<string-array name="types">的拼写完全正确,无大小写或字符错误。
内容的提问来源于stack exchange,提问作者Nunchakita Chan
相关产品推荐
相关产品推荐

