在Activity中更改LiveData不会通知子Fragment中的观察者

时间:2020-10-07 17:16:43

标签: java android fragment viewmodel android-livedata

我正在尝试在承载片段的活动中更新LiveData对象,然后我想在观察片段后更新其UI。问题是片段的ui仅在片段重新启动时才更新。每当活动中的数据发生更改时,我该怎么做才能实现片段中Ui的实时更新?

//活动代码:

   def gauss(f,0,2,5):

               ^

SyntaxError: invalid syntax

///片段:

   transactionViewModel = ViewModelProviders.of(this, providerFactory).get(TransactionViewModel.class);  
transactionViewModel.getUserValues();

2 个答案:

答案 0 :(得分:0)

为了实现“ Ui的实时更新”,我建议使用data-binding

在您的代码中,我认为您正在观察viewModel的不同引用。

尝试投放活动后尝试观察(这里是使用Kotlin)

        val myActivity = (requireActivity() as MainActivity)
        myActivity.transactionViewModel.viewModel.userValues.observe(getActivity(), userValues -> { 
        if(userValues.data != null){}//update the ui }

答案 1 :(得分:0)

片段代码

${styles.productSizes__title}

应该是

transactionViewModel = ViewModelProviders.of(getActivity(), providerFactory).get(TransactionViewModel.class); 

viewModel.userValues.observe(getActivity(), userValues -> {  
   if(userValues.data != null) {
       //update the UI 
   }
}