Android Studio Kotlin报unresolved reference recyclerView错误
报错原因
- 你使用的
kotlinx.android.synthetic视图合成插件,生成的控件引用变量名和XML中控件的android:id值完全一致。你布局里RecyclerView的id是大写开头的RecyclerView,所以对应的引用变量也是大写开头,你写小写开头的recyclerView自然会触发「未解析引用」错误。 - 你把代码改成
RecyclerView.layoutManager = layoutManager后出现新报错,是因为大写开头的RecyclerView同时是RecyclerView控件的类名,编译器遇到重名时优先将其识别为类,而layoutManager是RecyclerView实例的属性、不是类的静态属性,所以会报属性未解析的错误。
修复方法
- 首先修改
activity_main.xml中RecyclerView控件的id,将大写开头的RecyclerView改为小写开头的recyclerView,既符合Android控件id的命名规范,也能避免和类名重名引发的编译器识别错误。 - 把onCreate方法中错误的类调用代码替换为正确的实例调用代码,修正后的完整onCreate逻辑如下:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) layoutManager = LinearLayoutManager(this) recyclerView.layoutManager = layoutManager adapter = QuoteAdapter() recyclerView.adapter = adapter }
如果你坚持不修改XML里的id,也可以通过加生命周期标记明确指定你要调用的是当前页面绑定的视图实例,写法为
this@MainActivity.RecyclerView.layoutManager = layoutManager,但这种写法可读性差、容易出问题,不推荐使用。
内容的提问来源于stack exchange,提问作者KotlinRookie
相关产品推荐
相关产品推荐

