如何让MutableLiveData<String>触发onChanged?
How to make MutableLiveData<String> to trigger onChanged?
请帮帮我。
我想使用 LiveData
.
观察一些字符串
OnChanged()
在应用程序启动时触发一次,但是当我通过单击按钮更改 string1
的值时,onChange()
不会触发并且信息不会更新。 TextView
一直显示"Wow"
我所做的一切都完全按照描述 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"
}
Obs:您可以删除 string1
,因为它没用!
请帮帮我。
我想使用 LiveData
.
观察一些字符串
OnChanged()
在应用程序启动时触发一次,但是当我通过单击按钮更改 string1
的值时,onChange()
不会触发并且信息不会更新。 TextView
一直显示"Wow"
我所做的一切都完全按照描述 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"
}
Obs:您可以删除 string1
,因为它没用!