如何制作MutableLiveData 以触发onChanged?

问题描述 投票:0回答:1

请帮帮我。我想观察一些使用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"
        }
}
android kotlin android-livedata mutablelivedata
1个回答
0
投票

您不更新viewModel.currentName的值,应始终更新MutableLiveData的值以通知观察者。

在您的OnClickListener内部:

button.setOnClickListener {
    // update viewModel value to notify listeners/observers
    viewModel.currentName.value = "some new string"
}

提示:您可以删除string1,因为它没有用!

© www.soinside.com 2019 - 2024. All rights reserved.