无法从 ViewModelProvider 创建 ViewModel

Posted

技术标签:

【中文标题】无法从 ViewModelProvider 创建 ViewModel【英文标题】:Can't create ViewModel from ViewModelProvider 【发布时间】:2022-01-20 07:21:06 【问题描述】:

最近,我尝试开发在不同模块中具有相同视图的应用程序,因此我尝试重用 ViewModel。 这是 viewModel 类

class ChooseDataViewModel<T: DataSelectable>(application: Application) :
    androidViewModel(application) 
    val title = MutableLiveData<String>()
    private val mData = MutableLiveData<List<T>>() 
class ClassA: DataSelectable
class ClassB: DataSelectable

在片段中,我尝试通过这种方法创建数据类型为 ClassB 的 viewModel:

viewModel = ViewModelProvider(navBackStackEntry).get(ChooseDataViewModel::class.java)

但是编译器显示错误信息

Type mismatch.
Required:
ChooseDataViewModel<T>?
Found:
ChooseDataViewModel<*>

我搜索了很多,但找不到解决此问题的解决方案。

你能帮我解决这个问题吗?提前致谢

【问题讨论】:

【参考方案1】:

请更新您的 ViewModel 类,如下所示。

class ChooseDataViewModel(application: Application) :
    AndroidViewModel(application) 
    val title = MutableLiveData<String>()
    private val mData = MutableLiveData<List<DataSelectable>>() 

希望对你有帮助!

【讨论】:

谢谢兄弟。我为问题添加了更多文字,您能帮我再次检查问题吗?

以上是关于无法从 ViewModelProvider 创建 ViewModel的主要内容,如果未能解决你的问题,请参考以下文章

无法解析片段中的 ViewModelProvider 构造?

Cannot create an instance of class AndroidViewModel (androidx ViewModelProvider AndroidViewModel)

Cannot create an instance of class AndroidViewModel (androidx ViewModelProvider AndroidViewModel)

[Android ViewModel] public ViewModelProvider(@NonNull ViewModelStore store, @NonNull Factory 问题

ViewModelProvider.Factory 和 ViewModelProvider.NewInstanceFactory 有啥区别?

Flutter 中 ViewModelProvider 中的 onModelReady 和 builder 是啥?