Android开发出现Unresolved reference: userRecyclerView报错如何解决
报错原因
该问题是由于项目未配置「通过布局ID直接引用控件」的对应能力导致:你看到的旧教程使用的是已废弃的Kotlin Android Extensions(合成视图绑定)功能,新版Android Studio默认不开启该功能,因此无法直接将布局ID作为控件实例调用。
解决方案
方案1:使用View Binding(官方推荐)
这是谷歌官方推出的替代Kotlin合成视图绑定的方案,为空安全、类型安全,不会出现ID不匹配的运行时异常:
- 打开模块级
build.gradle文件(对应Groovy语法),在android配置块内开启ViewBinding:
android { // 其余配置保持不变 buildFeatures { viewBinding true } }
如果使用Kotlin Script(build.gradle.kts),对应语法为:
android { buildFeatures { viewBinding = true } }
- 同步Gradle配置后,在Activity中初始化绑定类,假设你的布局文件名为
activity_main.xml,则系统会自动生成名为ActivityMainBinding的绑定类:
private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) // 所有控件都通过binding实例调用,布局ID自动转为小驼峰 binding.userRecyclerView.layoutManager = LinearLayoutManager(this, LinearLayout.VERTICAL, false) }
方案2:使用findViewById(通用兼容)
如果不想修改Gradle配置,可以直接通过该方法手动获取控件实例,setContentView执行完成后调用即可:
val userRecyclerView = findViewById<RecyclerView>(R.id.userRecyclerView) userRecyclerView.layoutManager = LinearLayoutManager(this, LinearLayout.VERTICAL, false)
方案3:(不推荐)开启已废弃的Kotlin合成视图绑定
如果要完全对齐教程的写法,可以临时开启已被官方废弃的Kotlin Android Extensions插件,仅适配低版本开发环境,高版本Kotlin/Android Studio可能已不支持:
- 在模块级
build.gradle的plugins块添加对应插件:
plugins { // 其余插件保持不变 id 'kotlin-android-extensions' }
- 同步Gradle后,导入布局对应的合成包,即可直接通过ID调用控件。
内容的提问来源于stack exchange,提问作者SAOWEI SAO
相关产品推荐
相关产品推荐

