【发布时间】:2020-07-11 14:51:00
【问题描述】:
class SettingsViewModelFactory(application: Application, owner: SavedStateRegistryOwner) : SavedStateViewModelFactory(application, owner){
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(SettingsViewModel::class.java)){
return SettingsViewModel() as T
}
throw IllegalArgumentException("Invalid ViewModel class")
}
}
我在 SavedStateViewModelFactory 下方得到一个红色下划线,表示该类型是最终类型,无法继承。我该怎么办?文档太模糊了。 还有我要在退货中输入什么状态?
【问题讨论】:
-
您实际上想用自己的工厂做什么?默认工厂已经支持无参数构造函数。
-
它被标记为 final 意味着你不能扩展它并且必须按原样使用它。更多信息在这里developer.android.com/reference/androidx/lifecycle/…
-
我只是按照我在代码实验室中学到的知识。我不应该建立自己的工厂吗?
-
你在关注什么codelab?不,如果你不做任何事情,你就不需要自己的工厂——默认工厂的存在是有原因的。
-
这个:codelabs.developers.google.com/codelabs/… 在按下后退按钮后,我正在尝试保存一些数据,经过一些研究,我认为 SavedStateHandle 将是我的解决方案,所以我只是尝试将其应用于工厂代码实验室我经历过的。 (更多细节:我有一个设置片段,用户可以在其中选择带有一些单选按钮的主题,我希望在用户离开片段后保存单选按钮选择)
标签: android kotlin android-jetpack android-viewmodel