这里仅讲解基于使用DataBinding的方式,如果使用ViewBinding,除了最后一步,其他都一样
1.修改Project目录下 build.gradle配置如下
ext.kotlin_version = '1.4.21'
classpath 'com.android.tools.build:gradle:4.1.2'
2.全局替换
apply plugin: 'kotlin-android-extensions'
为
apply plugin: 'kotlin-parcelize'
3.全局删除
//kotlin @Parcelize 支持
androidExtensions {
experimental = true
}
4.全局替换
import kotlinx.android.parcel.Parcelize
为
import kotlinx.parcelize.Parcelize
5.全局删除
import kotlinx.android.synthetic.xxx
开头的所有 导入包
6.run代码确保操作正确
7.由于删除了kotlin的扩展,所以无法直接在布局里面通过kotlin来拿到布局id。这个时候只能通过DataBinding来拿到具体View对象
如
setContentView(R.layout.dk_mqtt_activity);
改为
val binding = DataBindingUtil.setContentView(this,R.layout.dk_mqtt_activity);<这个写法正常在activity操作>
或者
val binding = DataBindingUtil.inflate(LayoutInflater.from(this),R.layout.dk_mqtt_activity,null,false);《这个写法正常在Fragment》
然后通过binding.xxx来操作具体布局
切记,layout布局需要转为databining支持的布局方案