问题
最近使用了databinding,在使用BaseObservable的时候出现了Unresolved reference: BR 问题,上网搜了一下,都是抄来抄去的,没解决我的问题。
@Entity(tableName = "plan")
data class Plan constructor(
@PrimaryKey(autoGenerate = true)
var id: Long = 0,
var state: Int = 0,
var filter: Int = 0,
var type: Int = 0,
var startTime: String = "2021-02-24",
var duration: Long = 0,
var endTime: String = "2021-02-24",
): BaseObservable() {
@get:Bindable
var title: String = ""
set(value) {
field = value
// 只刷新当前属性
notifyPropertyChanged(BR.title)
}
@get:Bindable
var content: String = ""
set(value) {
field = value
// 只刷新当前属性
notifyPropertyChanged(BR.content)
}
}
解决办法
网上解决办法
生成kapt,在模块的build.gradle中添加Kotlin-apt插件
apply plugin: 'kotlin-kapt'
kapt {
generateStubs = true
}
并且引入和gardle一样版本的一个库
kapt "com.android.databinding:compiler:3.5.0"
然而对我来说却没有作用,这里提一下,万一对读者有用也行。
解决办法
最后,我觉得可能是Android Studio又抽风了,代码提示没了,所以没法 ctrl + enter 引入依赖。既然没有,那我 ctrl shift + F 全局搜索一下“BR”,看看那里用到了,把它的依赖 import 进来不就行了。
实际上就是按上面方法就解决了,当然你也可以直接输入你的模块加上 BR 解决:
import com.silencefly96.module_plan.BR
像上面这样就可以了。