我有一个Activity(扩展AppCompatActivity),ViewPager和适配器(扩展FragmentStatePagerAdapter)有8个片段。片段从我使用LiveData的ViewModel获取数据。默认情况下,ViewPager同时创建2个片段,即当第一个片段可见时,第二个片段已经传递了onResume状态。
我的问题是 - 当用户在一个片段中更改RatingBar中的评级时,已经创建的片段不会使用新数据进行更新。其他片段(与更改后的片段不相邻)确实获得了新值。
我的问题是 - 如何更新已创建的片段中的数据?我应该使用Rx Java(订阅者)还是有标准的Android解决方案?
代码:
片段onResume包含:
/* Rating Bar */
ratingBar.setIsIndicator(false);
detailViewModel.getRating().observe(this, new Observer<String>() {
@Override
public void onChanged(@Nullable String s) {
try {
ratingBar.setRating(Float.parseFloat(s));
} catch (NumberFormatException e) {
Log.i("NumberFormatException", e.getMessage());
}
}
});
ratingBar.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() {
@Override
public void onRatingChanged(final RatingBar ratingBar, float v, boolean b) {
ratingBar.setRating(v);
detailViewModel.setRating(v);
}
});