我想使用自定义适配器在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相同