android - FragmentStatePagerAdapter片段不可见

时间:2014-05-04 07:16:06

标签: android android-fragments android-viewpager

我使用FragmentStatePagerAdapter实现了view pager。我在视图中使用了3个片段。视图寻呼机显示所有3个带有视图的选项卡,现在我的问题是第三个片段不可见,但我可以滚动到第三个选项卡,当我向后滚动时,我看到第二个片段但是第一个片段消失了,剩下的就是第二个碎片。

mPager = (ViewPager)mContext.findViewById(R.id.viewPager);
mPager.setOnPageChangeListener(this);
mPagerAdapter = new MyPagerAdapter(mContext.getSupportFragmentManager(),mContext);
mPager.setAdapter(mPagerAdapter);

适配器代码

public class MyPagerAdapter extends FragmentStatePagerAdapter {

    private int NUM_PAGES = 3;
    List<Fragment> listFragment = new ArrayList<Fragment>();
    private MyActivity mContext;

    public MyPagerAdapter(FragmentManager fragmentManager, MyActivity mActivity) {
        super(fragmentManager);
        this.mContext = mActivity;
        listFragment.add(new FirstFragment());
        listFragment.add(new SecondFragment());
        listFragment.add(new ThirdFragment());
    }

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

    @Override
    public Fragment getItem(int position) {
        Log.v("fragment position",""+position);
        return listFragment.get(position);
    }

    @Override
    public int getCount() {
        return NUM_PAGES;
    }
}

我被困在这一段时间,我真的很感激一些帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

建议使用FragmentPagerAdapter而不是FragmentStatePagerAdapter,因为这两者非常本质。 FragmentStatePagerAdapter正能够滚动浏览无限视图。如果是固定数量的情况,就像你的情况一样,你应该使用FragmentPagerAdapter。

如果碰巧有上下文问题,请稍后覆盖以下方法:

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Fragment fragment = (Fragment) super.instantiateItem(container, position);
        mFragments.remove(position);
        mFragments.add(position, fragment);
        return fragment;
    }

mFragments是你的名单。