如何让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,因为它没用!