Cannot Create An Instance Of Class Viewmodel In The New Project
I have two different projects. In the first one I use ViewModel with my activity and Room database. Everything works. Then I just created new project for different purposes and the
Solution 1:
Your ViewModel requires an argument application: Application
which can only be provided by using a ViewModelFactory like so:
ViewModelFactory
classMainViewModelFactory(
privateval application: Application
) : ViewModelProvider.Factory {
@Suppress("unchecked_cast")overridefun<T : ViewModel?>create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(MainViewModel::class.java)) {
return MainViewModel(application) as T
}
throw IllegalArgumentException("Unknown ViewModel class")
}
}
MainActivity
privatefunapplyAdapterAndViewModel() {
// Not so kotlinic
mainViewModel = ViewModelProvider(this,MainViewModelFactory(application)).get(MainViewModel::class.java)
}
Also, in MainActivity, replace
private lateinit var mainViewModel: MainViewModel
with
privateval viewModel by viewModels<MainViewModel> {
MainViewModelFactory(application) }
Post a Comment for "Cannot Create An Instance Of Class Viewmodel In The New Project"