请帮帮我。我想观察一些使用LiveData的String。应用程序启动时会触发一次OnChanged(),但是当我通过单击按钮更改string1
的值时,onChange()不会触发,信息也不会更新。 TextView不断显示“哇”我所做的一切都完全按照here的描述进行。ViewModel:
class CurrentViewModel : ViewModel() {
val currentName: MutableLiveData<String> by lazy {
MutableLiveData<String>()
}
}
片段:
class CurrentFragment : Fragment(R.layout.current_fragment) {
private val viewModel: CurrentViewModel by viewModels()
var string1 = "Wow!"
override fun onActivityCreated(savedInstanceState: Bundle?)
val nameObserver = Observer<String> { newName ->
textview.text = newName }
viewModel.currentName.value = string1
viewModel.currentName.observe(activity!!, nameObserver)
button.setOnClickListener {
string1 = "some new string"
}
}
您不更新viewModel.currentName
的值,应始终更新MutableLiveData
的值以通知观察者。
在您的OnClickListener
内部:
button.setOnClickListener {
// update viewModel value to notify listeners/observers
viewModel.currentName.value = "some new string"
}
提示:您可以删除string1
,因为它没有用!