Unresolved reference,kotlin不能直接引用xml中id
今天使用Kotlin直接引用view中的id的时候发现引用不了?如图
- 嗯?难道又要回到findviewbyId?不对劲
解决方案
找到build gradle,在plugins中加入如下代码
id 'kotlin-android-extensions'
或者,你也可以
apply plugin 'kotlin-android-extensions'
- 当然你也可以根据官方的建议…
使用新的视图绑定工具!
- 基于模块化开发的思想,如果你想启用某个moudle的viewBing,你就可以在当前moudle的build.gradle下加入如下代码:
plugins {
...
id 'kotlin-parcelize'
...
}
android {
...
viewBinding {
enabled = true //已过时,之前的写法
}
...
}
plugins {
...
id 'kotlin-parcelize'
...
}
android {
...
buildFeatures {
viewBinding true//最新的写法
}
...
}
- 如果在使用中开不想为某个布局文件生成binding类,则可以使用如下属性添加到布局的根标签中,如下图:
tools:viewBindingIgnore="true"
- 当moudle开启视图绑定功能后,viewBinding会为每一个布局生成对应的绑定类.每一个绑定类生成对根视图和定义了ID的所有视图的引用.
用法
比如,之前爆红的语句,在kotlin-android-extensions的天下时
recyclerView.layoutManager = layoutManager
那么我现在要这么写
val binding=FragmentPlaceBinding.inflate(layoutInflater)
binding.recyclerView.layoutManager=layoutManager
当然我这是Fragment,在Activity中,你还要加上…
setContentView(activityMainBinding.getRoot());