Kotlin实现DataBinding结合ViewModel的时候,提示找不到Unresolved reference: BR解决方案
在用Kotlin语言实现DataBinding结合ViewModel的代码的时候,如下所示:
class UserModel(private val userName: String, private val userAge: Int) : BaseObservable() {
@get:Bindable
var name: String = userName
set (value) {
field = value
notifyPropertyChanged(BR.name) // 触发绑定更新
}
@get:Bindable
var age: String = userAge.toString()
set(value) {
field = value
notifyPropertyChanged(BR.age)
}
}
使用模块化 + Kotlin + DataBinding导入BR文件时出现该错误,BR文件生成并导入成功,但还是一直报错,应该是目前kotlin-android-extensions暂时还不支持跨模块
运行的时候提示
UserModel.kt: (12, 35): Unresolved reference: BR
解决办法:
生成kapt,在模块的build.gradle中添加Kotlin-apt插件。在build.gradle里引入kotlin的插件, 如下所示
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
kapt {
generateStubs = true
}
或者
apply plugin: 'kotlin-kapt'
kapt {
generateStubs = true
}