如何将LiveData保存到saveStateHandle?

艾莉

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章