Android: 如何更新滑动视图中的缓存片段?

Android: How to update a cached fragment in swipe views?

我已经在我的应用中实现了滑动视图。适配器是 FragmentStatePagerAdapter。滑动视图片段中的内容可能会相互影响。

问题:ViewPager缓存一个片段到左边,一个片段到右边。在一个片段中所做的更改不会反映在左侧和右侧的缓存片段中。只有在足够的刷卡之后(这样片段就不再在缓存中并且必须重建)更改才会可见。

我试图通过

禁用此行为
viewPager.setOffscreenPageLimit(0);

但这没有用。这也可能会降低滑动性能。

接下来我尝试的是覆盖片段中的 onResume() 以更新内容。但是,看起来在滑动到该片段之前没有调用 onResume()。

最后,我尝试了这个:

    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            Fragment fragment = (Fragment) viewPager.getAdapter().instantiateItem(viewPager, position);
            TextView text = (TextView) fragment.getView().findViewById(R.id.text);
            text.setText("bla");
        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

这会在片段上给出 NullPointerException,因为 instantiateItem 不是 return 对应的片段,而是父片段 Activity。

现在,更新缓存片段的推荐方法是什么?

我的印象是,我不应该尝试更新缓存的片段。我认为如果这样做会更容易。

因此,我决定重构我的应用程序并将我希望修改的元素移动到父级 activity。这些片段现在只包含特定于一个片段的元素。无论如何,这可能是一个更简洁的设计。