无法将不可为null的LiveData值设置为null
下面代码返回title的错误,没有意义
private val _error = MutableLiveData<String?>()
val error: LiveData<String?> get() = _error
_error.postValue(null) //Error Cannot set non-nullable LiveData value to null [NullSafeMutableLiveData]
参数String的_error 显然是空的,我做错了什么?
回答
这似乎与已经针对androidx.lifecycle2.3.0 https://issuetracker.google.com/issues/169249668 的预发布版本 报告的错误有关。
我发现的解决方法:
- 关闭或降低
NullSafeMutableLiveDatain 的严重程度
build.gradle
android {
...
lintOptions {
disable 'NullSafeMutableLiveData'
}
}
或lint.xml在根目录中
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue severity="warning" />
</lint>
MutableLiveData通过支持属性跳舞来完成封装工作(这真的很伤我的眼睛)。
class ExampleViewModel : ViewModel() {
private val _data1 = MutableLiveData<Int>()
val data1: LiveData<Int> = _data1
private val _data2 = MutableLiveData<Int?>()
val data2: LiveData<Int?> = _data2
fun funct() {
_data1.value = 1
_data2.value = null
}
}