使用FragmentStatePagerAdapter在ViewPager中刷新片段

时间:2014-10-14 11:06:31

标签: java android android-fragments android-viewpager

我正在使用viewPager将其滑动功能在两个片段之间滑动。但是我想在刷卡时刷新片段内容。 FragmentStatePagerAdapter在缓存方面表现非常出色,因此很难让Fragment重新加载。 我已经尝试将所有内容放在onResume方法中,但这没有效果。

我的适配器非常简单:

public class AdapterHomePre extends FragmentStatePagerAdapter {

    ArrayList<Fragment> mFrags = new ArrayList<Fragment>();

    public AdapterHomePre(FragmentManager fm) {
        super(fm);

        mFrags.add(new FragmentOne());
        mFrags.add(new FragmentTwo());
    }

    @Override
    public int getCount() {
        return mFrags.size();
    }

    @Override
    public Fragment getItem(int position) {
        return mFrags.get(position);
    }
}

我已经尝试了堆叠溢出建议的各种事情,包括建议:

@Override
public int getItemPosition(Object object) {
    return POSITION_NONE;
}

这没什么区别。

我不是每次都想要破坏这个片段,但我甚至都没能做到这一点。

2 个答案:

答案 0 :(得分:2)

我最终做的是编辑设置viewPager的片段,以便强制子片段重新加载:

    mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i2) {
            //Not used
        }

        @Override
        public void onPageSelected(int position) {
            //Force the fragment to reload its data
            Fragment f = mAdapter.getItem(position);
            f.onResume();
        }

        @Override
        public void onPageScrollStateChanged(int i) {
            //Not used
        }
    });

答案 1 :(得分:-1)

尝试

mViewPager.setOffscreenPageLimit(1);