Android 如何在ViewModel类中保存文本框中的用户输入?
通过以下教程,我在日志应用程序中建立了一个房间数据库。我使用数据绑定将ViewModel绑定到片段和XML布局文件。在我的ViewModel类中,有一个onSave函数调用我的DAO insert函数。我设置了onclick侦听器,以便在按下save按钮时在ViewModel中调用onSave函数 但是我的用户输入从来没有进入ViewModel,所以onSave什么也不保存。代码如下:Android 如何在ViewModel类中保存文本框中的用户输入?,android,xml,kotlin,mvvm,android-room,Android,Xml,Kotlin,Mvvm,Android Room,通过以下教程,我在日志应用程序中建立了一个房间数据库。我使用数据绑定将ViewModel绑定到片段和XML布局文件。在我的ViewModel类中,有一个onSave函数调用我的DAO insert函数。我设置了onclick侦听器,以便在按下save按钮时在ViewModel中调用onSave函数 但是我的用户输入从来没有进入ViewModel,所以onSave什么也不保存。代码如下: class TextEditorViewModel (val persistenceService: Jour
class TextEditorViewModel (val persistenceService: JournalEntryPersistenceService,
application: Application): AndroidViewModel(application) {
// This is for canceling coroutines when viewModel is destroyed
private var viewModelJob = Job()
private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)
private var journalEntry = MutableLiveData<JournalEntryDataClass?>()
init {
initializeJournalEntry()
}
fun onSave(entry: JournalEntryDataClass) {
uiScope.launch {
persistenceService.insert(entry)
}
}
现在,我意识到我的journalEditTextBox文本在创建片段时被分配,因此没有数据。所以我本质上是向onSave()函数发送一个空字符串。但是我觉得我完全不知道如何才能做到这一点。您需要在setOnClickListener中创建val文本
binding.saveButton.setOnClickListener() {
var text = binding.journalEditTextBox.text.toString()
var journalEntry = JournalEntryDataClass(text)
textEditorViewModel.onSave(journalEntry) }
binding.saveButton.setOnClickListener() {
var text = binding.journalEditTextBox.text.toString()
var journalEntry = JournalEntryDataClass(text)
textEditorViewModel.onSave(journalEntry) }