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类型,不能从其继承。 我该怎么办? 文件太模糊了。 还有,我把什么状态放入返回?
如果要创建允许使用SavedStateHandle
构造函数参数的自己的工厂,则应扩展AbstractSavedStateViewModelFactory
,而不是扩展SavedStateViewModelFactory
:
提供自定义ViewModelProvider.Factory
实例时,可以通过扩展AbstractSavedStateViewModelFactory
启用SavedStateHandle
。
但是,您不需要任何自定义工厂来支持具有零参数构造函数的ViewModel--默认情况下支持该构造函数。 只有当需要将自定义参数传递给ViewModel时,才需要自定义工厂。 在您的代码中,您可以完全删除自定义工厂。