【问题标题】:Viewmodelprovider context type missmatchViewmodelProvider 上下文类型不匹配
【发布时间】:2022-08-20 02:57:55
【问题描述】:

当我尝试在列表片段中提供视图模型时,我正在尝试使用 mvvm 使应用程序变得简单输入,我给他一个片段的这个,我已经实现了模型的每一件事,并尝试了每一件事来修复它,但仍然

  • 请发布您的代码

标签: android kotlin mvvm android-room


【解决方案1】:

为什么不尝试使用by viewModels 属性委托? 像这样的东西

private val viewModel: HomeViewModel by viewModels {
    HomeViewModelFactory(AppDatabase.getInstance(requireActivity().application).databaseDao)
}

如果您将参数传递给 viewModel,您应该像我一样拥有一个 ViewModelFactory(我将 Database Dao 传递给 VM)。否则使用属性委托应该非常简单。

这是我的 ViewModelFactory 类的示例

class HomeViewModelFactory(private val dataSource: DatabaseDao) : ViewModelProvider.Factory {
   override fun <T : ViewModel> create(modelClass: Class<T>): T {
        if (modelClass.isAssignableFrom(HomeViewModel::class.java))
            return HomeViewModel(dataSource) as T
        throw IllegalArgumentException("Unknown ViewModel class")
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多