viewpager使用自定义适配器返回错误的索引

时间:2018-09-23 04:09:15

标签: android indexing android-viewpager fragment adapter

我想使用自定义适配器在viewpager中使用6个片段(1、2、3、4、5、6)。

另外,我使用android.support.v4.app。

但是getItem()方法返回错误的索引。

例如,在myApp首次加载时显示第二个片段。

然后反复向右滑动

2-> 3-> 4-> 5-> 6-> 6

然后反复向左滑动

6-> 4-> 3-> 2-> 1-> 1

然后反复向右滑动

1-> 3-> 4-> 5-> 6-> 6

....请帮助我...我不知道为什么.....

源代码在这里。

  • mainAcitivity.java

    //viewPager
    viewPager = (ViewPager)findViewById(R.id.viewPager);
    final MyViewPagerAdapter adapter = new MyViewPagerAdapter(getSupportFragmentManager());
    getFragmentManager().beginTransaction().commitNow();
    
    viewPager.setAdapter(adapter);
    
  • MyViewPagerAdapter

    public class MyViewPagerAdapter extends FragmentStatePagerAdapter {
    
    public Fragment Fragment1;
    public Fragment Fragment2;
    public Fragment Fragment3;
    public Fragment Fragment4;
    public Fragment Fragment5;
    public Fragment Fragment6;
    String [] output = new String[5];
    
    public MyViewPagerAdapter(FragmentManager fm) {
        super(fm);
    
        fm.executePendingTransactions();
    }
    
    @Override
    public Fragment getItem(int arg0) {
    
        if(arg0==0){
            return new Fragment1();
        } else if(arg0==1){
            return new Fragment2();
        } else if(arg0==2){
            return new Fragment3();
        } else if(arg0==3){
            return new Fragment4();
        } else if(arg0==4){
            return new Fragment5();
        } else if(arg0==5){
            return new Fragment6();
        }
    
        return new Fragment1();
    }
    
    @Override
    public int getCount() {
        return 6;
    }
    
    @Override
    public int getItemPosition(Object object) {
        return POSITION_NONE;
    }
    
    
    }
    
  • Fragment1

    public class Fragment1 extends Fragment {
    
    public Fragment1(){
    
    }
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    
        return inflater.inflate(R.layout.activity_fragment1, container, false);
    
    }
    
    public void onStart() {
        super.onStart();
    }
    
    }
    
  • Fragment2、3、4、5、6相同

0 个答案:

没有答案