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

Android Studio中R.layout与R.id引用未解析问题求助

解决方案:RecyclerView Adapter中R.layout/R.id引用报错

问题1:R.layout.game中layout提示Unresolved reference

按以下步骤排查解决:

  • 检查R类导入:确认代码顶部导入的是你项目的R类(比如import com.yourapppackage.R),而非系统的android.R。如果导入了android.R,删除它并替换为项目包名对应的R类。
  • 清理重建项目:
    1. 点击顶部菜单栏 Build > Clean Project
    2. 完成后点击 Build > Rebuild Project
    3. 若仍有问题,点击 File > Invalidate Caches...,勾选Clear file system cache and local history后重启Android Studio
  • 检查布局文件合法性:打开game.xml,确保文件没有语法错误(比如标签未闭合、属性拼写错误、资源命名违规——只能用小写字母+下划线),修复所有红标错误后再重建项目。
  • 重新同步Gradle:点击顶部工具栏的Sync Project with Gradle Files按钮,确保Gradle配置无异常,同步完成后再检查代码。

问题2:Build.VERSION_CODES.R.id.winner_textview中id提示Unresolved reference

这是用法错误,Build.VERSION_CODES.R是API 30的版本标识常量,不能用来引用布局ID。正确写法如下:

inner class GameViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { 
    val gameWinner: TextView = itemView.findViewById(R.id.winner_textview)
    val highscore: TextView = itemView.findViewById(R.id.highscore)
}

如果你的项目支持View Binding,更推荐用View Binding简化代码(无需手动findViewById):

  1. 在app模块的build.gradle中启用View Binding:
android {
    ...
    buildFeatures {
        viewBinding true
    }
}
  1. 然后在Adapter中使用:
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): GameViewHolder {
    val binding = GameBinding.inflate(LayoutInflater.from(parent.context), parent, false)
    return GameViewHolder(binding)
}

inner class GameViewHolder(private val binding: GameBinding) : RecyclerView.ViewHolder(binding.root) { 
    val gameWinner: TextView = binding.winnerTextview
    val highscore: TextView = binding.highscore
}

内容的提问来源于stack exchange,提问作者Striving Programmer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:27:46