更新 ViewModel 和 View 失败

Update ViewModel and View fails

我正在尝试使用 FragmentViewModel 通过 ViewModel 更新我的视图中的值。

问题是我没有更新我想通过 viewModel 发送的值(现在它是硬编码的,但我正在考虑 API 请求知道一个数字以使用 postValue 将其设置到我的 viewModel这并没有像我预期的那样工作)

这是我的代码:

片段

  private var numberedValue = 0.0  

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        setupObservers()
        setupView()
    }


    private fun setupObservers(){
        viewModel.obtainNumberedValue()
        viewModel.getNumberedValue().observe(viewLifecycleOwner, { it ->
            numberedValue = it
        })
    }

    private fun setupView(){
        binding.tvValue.text = numberedValue.toString()
    }

ViewModel

private val numberedValue = MutableLiveData<Double>().apply { value = 0.0 }

fun obtainNumberedValue() {
    numberedValue.postValue(200.00)
}


fun getNumberedValued(): LiveData<Double> = numberedValue

Ps。我得到 0.0 而不是 200.0

我认为如果你这样做可以改进你的代码

  override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        setupObservers()
    }


    private fun setupObservers(){
        viewModel.obtainNumberedValue()
        viewModel.getNumberedValue().observe(viewLifecycleOwner, { it ->
            setupTextView(it)
        })
    }

    private fun setupTextView(value: Double) {
        binding.tvValue.text = "$value"
    }

我们删除这一行 private var numberedValue = 0.0 然后我们将方法添加到观察者方法中,在我们得到值的任何更新时,ui 将被更新