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

Joc*_*lin 3 android repository kotlin android-mvvm android-viewmodel

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

//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")
    }
}


Run Code Online (Sandbox Code Playgroud)

Hen*_*ist 5

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

相反,你的 return 语句可能应该是这样的:

return HomeViewModel(homeRepository) as T
Run Code Online (Sandbox Code Playgroud)

本文ViewModel更详细地介绍了 a 的基础知识。