Search code examples
androidkotlinmvvmviewmodel

Cannot create an instance of class - ViewModel kotlin


i have bee practicing Kotlin mvvm and on creating view model i got an error of i see lots of stack overflow solutions but couldn't find solution

Cannot create an instance of class - View Model

here is my model class

public class MainViewModel(application: Application,
                           
                          
) :  AndroidViewModel(application) {


    fun first(): LiveData<Boolean> {
        return database
                .locationDao()
                .getLocationFlow()
                .flowOn(Dispatchers.IO)
                .map {

                    when {
                        it.isEmpty() -> {
                            true
                        }
                        else -> false
                    }
                }.asLiveData()
    }
}

MainActivity

class MainActivityK : AppCompatActivity() {

lateinit var viewModel:MainViewModel

oncreate method

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        LocalUtil.setLocal(this)
        mainBinding = ActivityMainKBinding.inflate(layoutInflater)
        setContentView(mainBinding.root)
        viewModel=ViewModelProvider(this).get(MainViewModel::class.java)

thanks.


Solution

  • You should obtain MainViewModel like:

     viewModel = ViewModelProvider(this, ViewModelProvider.AndroidViewModelFactory.getInstance(this.getApplication())).get(MainViewModel::class.java)
    

    instead of

    viewModel=ViewModelProvider(this).get(MainViewModel::class.java)