如https://stackoverflow.com/a/61166665/3286489所示,我们可以将LiveData保存在savedStateHandle中。
我可以轻松做到这一点https://stackoverflow.com/a/61166665/3286489
private val textLiveData: MutableLiveData<String>
init {
textLiveData = savedStateHandle.getLiveData(KEY)
}
但是,当尝试按以下方式保存它时,
savedStateHandle.set(KEY, textLiveData)
我得到了错误
java.lang.IllegalArgumentException: Can't put value with type class androidx.lifecycle.SavedStateHandle$SavingStateLiveData into saved state
我在哪里弄错了?
显然,更好的答案是,我们甚至不需要
savedStateHandle.set(KEY, textLiveData.value)
虽然那是允许的,但当我们开始做
textLiveData.value = "Some data"
这已经保存到状态。正如textLiveData
从检索savedStateHandle
如下。
textLiveData = savedStateHandle.getLiveData(KEY)
因此,textLiveData
早已存储在中savedStateHandle
,而对的更改textLiveData.value
则无意中保存在中savedStateHandle
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句