根据事件更新已在ViewPager中创建的片段

时间:2018-02-04 10:42:29

标签: java android android-fragments android-viewpager rx-java

我有一个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);
        }
    });

0 个答案:

没有答案