2014-05-04 101 views
3

我已经实现了使用FragmentStatePagerAdapter的视图寻呼机。我在视图中使用了3个片段。视图寻呼机显示所有3个视图,因为它应该是,现在我的问题是,第三个片段不可见,但我可以滚动,直到第三个标签,当我向后滚动,我看到第二个片段,但再次第一个片段消失了,我剩下的就是第二个片段。android - FragmentStatePagerAdapter片段不可见

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; 
    } 
} 

我被困在这一段时间,我真的很感激一些help.Thank你。

+0

不重写getItemPosition()方法并尝试.. – Shiva

+0

什么也没有发生......早些时候我尝试过的代码,但没有奏效。 –

+0

添加片段的代码 – Mus

回答

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是您的清单。

+0

我试过你的代码它有同样的问题。一旦我在视图中滚动,碎片消失。只有第二个片段始终可见,但第一个和第二个片段不见了。 –