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

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实现控件绑定:

  1. 在模块级build.gradle中启用ViewBinding:
android {
    buildFeatures {
        viewBinding true
    }
}
  1. 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
    }
}
  1. 在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:05:22