Kotlin:java.lang.RuntimeException: не удается создать экземпляр класса com.app.datastorepreferences.MyViewModel

#java #android #kotlin

#java #Android #kotlin

Вопрос:

Я получаю эту ошибку

Вызвано: java.lang.RuntimeException: не удается создать экземпляр класса com.app.datastorepreferences.MyViewModel в com.app.datastorepreferences.MainActivity.onCreate(MainActivity.kt:16)

Вызвано: java.lang.Исключение экземпляра: java.lang.КлассMyViewModel> не имеет конструктора с нулевым аргументом

viewmodel

 class MyViewModel(application: Application): AndroidViewModel(application) {
val kotlinDataStore = KotlinDataStore(application)

val readFromDataStore = kotlinDataStore.readPreferences.asLiveData()
fun sendName(name: String) = viewModelScope.launch(Dispatchers.IO){
    kotlinDataStore.writeToDataStore(name)
 }
}
  

Основная деятельность

 class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
    viewModel.readFromDataStore.observe(this, {myNAME ->
        textView.text = myNAME.toString()
    })
    button.setOnClickListener {
        val name = edit_text.text.toString()
        viewModel.sendName(name)
    }
}
  

Зависимости

  // ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// Lifecycles only (without ViewModel or LiveData)
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
// Preferences DataStore
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha01"
  

Комментарии:

1. Можете ли вы также поделиться фрагментом из класса ViewModelProvider?

2. @ShailyGarg Я расширяю модель просмотра Android, а не модель просмотра