#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, а не модель просмотра