Savedstateviewmodelfactory 是finall,不能继承

Savedstateviewmodelfactory is finall, cannot inherit

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 下方看到一条红色下划线,表示该类型是最终类型,不能从中继承。我该怎么办?文档太模糊了。 另外,我应该将什么状态放入 return?

如果您想创建自己的允许使用 SavedStateHandle 构造函数参数的工厂,您可以扩展 AbstractSavedStateViewModelFactory, not SavedStateViewModelFactory as per the explicit note on the documentation:

When providing a custom ViewModelProvider.Factory instance, you can enable usage of SavedStateHandle by extending AbstractSavedStateViewModelFactory.

但是,您不需要任何自定义工厂来支持具有零参数构造函数的 ViewModel - 这是默认支持的。如果需要将自定义参数传递给 ViewModel,则只需要一个自定义工厂。对于您的代码,您可以完全删除自定义工厂。