gpt4 book ai didi

kotlin - SavedState 模块 Android Kotlin with View Model - 值似乎没有保存

转载 作者:行者123 更新时间:2023-12-02 13:19:29 24 4
gpt4 key购买 nike

我已按照 Google Codelab 中有关保存状态模块的说明进行操作。

我的gradle依赖是:

implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:1.0.0-rc03"

我的 View 模型工厂是:
class MyViewModelFactory(val repository: AppRepository, owner: SavedStateRegistryOwner,
defaultArgs: Bundle? = null) : AbstractSavedStateViewModelFactory(owner, defaultArgs) {

override fun <T : ViewModel?> create(
key: String,
modelClass: Class<T>,
handle: SavedStateHandle): T {
return MyViewModel(repository, handle) as T
}
}

我的 View 模型:
 class MyViewModel constructor(val repository: AppRepository, private val savedStateHandle: SavedStateHandle): ViewModel() {
fun getMyParameter(): LiveData<Int?> {
return savedStateHandle.getLiveData(MY_FIELD)
}

fun setMyParameter(val: Int) {
savedStateHandle.set(MY_FIELD, val)
}
}

我的片段:
      class MyFragment : androidx.fragment.app.Fragment() {
override fun onCreate(savedInstanceState: Bundle?) {
arguments?.let {
var myField = it.getInt(MY_FIELD)
activitiesViewModel.setMySavedValue(myField ?: 0)
}

}
}

使用应用程序时,已保存状态字段的实时数据会正确更新。但是,一旦我将应用程序置于后台(并且我在开发人员选项中设置了“不保留事件”),然后重新打开应用程序,实时数据就会显示一个值,就好像它从未设置过一样。换句话说,保存的状态句柄似乎忘记了我要保存的字段。

有什么想法吗?

最佳答案

我有同样的问题。通过我停止在 onRestoreInstanceState 方法中从 SavedStateHandle 请求保存的值这一事实解决了这个问题。此调用在 onCreate 方法中正确使用。

关于kotlin - SavedState 模块 Android Kotlin with View Model - 值似乎没有保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59781038/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com