【发布时间】:2022-01-21 11:42:53
【问题描述】:
当我们有如下的 liveData 时,我们不能 _liveData.value++,因为 value 可以为空。
class MainViewModel(savedStateHandle: SavedStateHandle): ViewModel() {
private val _liveData: MutableLiveData<Int> =
savedStateHandle.getLiveData("SomeKey", 0)
val liveData: LiveData<Int> = _liveData
fun triggerLiveData() {
_liveData.value++
}
}
文章https://proandroiddev.com/improving-livedata-nullability-in-kotlin-45751a2bafb7提供了解决方案,即
@Suppress("UNCHECKED_CAST")
class SafeMutableLiveData<T>(value: T) : LiveData<T>(value) {
override fun getValue(): T = super.getValue() as T
public override fun setValue(value: T) = super.setValue(value)
public override fun postValue(value: T) = super.postValue(value)
}
但这不支持 savedState。
我们怎样才能得到一个非空的 LiveData 也有已保存状态?
【问题讨论】:
标签: android android-livedata viewmodel-savedstate