android - java.lang.ClassCastException : com. eng.bt_eng_mobility.viewmodel.HomeViewModelFactory 无法转换为 androidx.lifecycle.ViewModel

标签 android kotlin repository android-viewmodel android-mvvm

我收到此错误。我在同一个 ViewModel 类文件中创建了 ViewModelFactory 类。 当我尝试初始化 View 模型时,我收到此错误。

//Code written in fragment class in onCreateView after binding code//
homeViewModelFactory = HomeViewModelFactory((requireActivity().application as Application).repository)
        homeViewModel = ViewModelProvider(this, homeViewModelFactory)
                .get(HomeViewModel::class.java)


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


最佳答案

ViewModelProvider.Factory 的工作是创建 ViewModel 类的实例。目前您要做的就是返回工厂的一个新实例。

相反,您的返回语句可能应该是这样的:

return HomeViewModel(homeRepository) as T

This article更详细地介绍了 ViewModel 的基础知识。

关于android - java.lang.ClassCastException : com. eng.bt_eng_mobility.viewmodel.HomeViewModelFactory 无法转换为 androidx.lifecycle.ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66834890/

相关文章:

android - 解码位图返回 null

android - 如何使用 koin 在 vi​​ewmodel 中注入(inject) Room

interface - 带有接口(interface)样板的 Kotlin 数据类

svn - 如何在不破坏任何内容的情况下替换 SVN 存储库中的目录

git - 将 Git 存储库内容移动到另一个保留历史记录的存储库

java - 为什么我的 GridView 在末尾中断?

android - picasso 在尝试在 Android 上加载图像时从不调用完成处理程序

android - Activity 被销毁后是否可以保持显示警报对话框?

java - 在 Kotlin 中使用 setter 实现 Java getter 接口(interface)

repository - Alpine 从 Edge 存储库添加包