Android Studio中Kotlin文件无法访问XML视图及引用报错问题
问题修复方案
1. 控件ID拼写错误
XML中EditText的ID是etTodoTitle,但代码里误写为edTodoTitle,修正ID拼写即可匹配控件。
2. Button无ischecked属性(且拼写错误)
Button不存在isChecked属性,若你是想标记Todo完成状态,建议将XML中的Button替换为CheckBox;若坚持用Button,需替换为对应状态属性(如isEnabled)。另外属性名应为isChecked(首字母大写C),小写的ischecked会导致语法错误。
3. 导入错误布局文件
当前导入的是Activity布局kotlinx.android.synthetic.main.activity_main,但你是在RecyclerView的ViewHolder中操作item布局,需导入对应item的布局文件,比如item布局为item_todo.xml,则导入语句应为:
import kotlinx.android.synthetic.main.item_todo.view.*
4. 解决“Unresolved reference: android”报错
这个错误多由依赖配置问题导致,需确认模块级build.gradle中启用了kotlin-android-extensions插件:
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'kotlin-android-extensions' }
配置完成后同步并重新构建项目。
5. 推荐替代方案:使用ViewBinding
kotlin-android-extensions已被官方废弃,更推荐使用ViewBinding实现控件绑定:
- 在模块级
build.gradle中启用ViewBinding:
android { buildFeatures { viewBinding true } }
- ViewHolder中使用Binding类绑定控件:
class TodoViewHolder(private val binding: ItemTodoBinding) : RecyclerView.ViewHolder(binding.root) { fun bind(todo: Todo) { binding.etTodoTitle.text = todo.title // 若为CheckBox则使用以下代码 binding.checkBox.isChecked = todo.isChecked } }
- 在Adapter的
onCreateViewHolder中初始化Binding:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TodoViewHolder { val binding = ItemTodoBinding.inflate(LayoutInflater.from(parent.context), parent, false) return TodoViewHolder(binding) }
内容的提问来源于stack exchange,提问作者Ankit Laller
相关产品推荐
相关产品推荐

