Android:如何更新刷卡视图中的缓存片段?
问题描述:
我已经在我的应用中实施了滑动视图。该适配器是一个FragmentStatePagerAdapter。滑动视图片段中的内容可能会相互影响。Android:如何更新刷卡视图中的缓存片段?
问题: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不返回相应的片段,但父活动。
现在,更新缓存片段的推荐方法是什么?
答
我的印象是,我不应该尝试更新缓存片段。我认为这样做会更容易些,如果这样做是要完成的话。
因此,我决定重构我的应用程序,并将我希望修改的元素移到父活动中。片段现在只包含特定于一个片段的元素。无论如何,这可能是一个更清洁的设计。
ViewPager.setOffscreenPageLimit(0)不工作,因为离屏页的最小值为1。 – Sevle
[这](http://*.com/questions/26359308/refresh-fragment-in-viewpager-using- fragmentstatepageradapter)可以帮助你 – Sevle