2014-05-04 99 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

我試過你的代碼它有同樣的問題。一旦我在視圖中滾動,碎片消失。只有第二個片段始終可見,但第一個和第二個片段不見了。 –