无法从 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 有啥区别?