-2
我正在開發具有四個頁面滑塊的android應用程序。我有一個包含viewpager和四個片段的活動。當我第二次打開幻燈片時,它只加載了前四張幻燈片和showX無效索引error.I使用了fragmentstatepageradapter,因爲我的幻燈片有很多圖片。 我的活動類具有自定義適配器。Viewpager不正確重繪內容IndexOutOfBoundsException:索引3無效,大小爲2
public class AddKeyActivity extends FragmentActivity
implements ViewPager.OnPageChangeListener, RadioGroup.OnCheckedChangeListener{
private static final int NUMBER_OF_PAGES = 4;
private RadioGroup radioGroup;
ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_key);
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
pager.addOnPageChangeListener(this);
radioGroup = (RadioGroup)findViewById(R.id.radiogroup);
radioGroup.setOnCheckedChangeListener(this);
}
@Override
public void onPageScrolled(int position, float v, int i) {
}
@Override
public void onPageSelected(int position) {
switch(position) {
case 0:
radioGroup.check(R.id.radioButton1);
break;
case 1:
radioGroup.check(R.id.radioButton2);
break;
case 2:
radioGroup.check(R.id.radioButton3);
break;
case 3:
radioGroup.check(R.id.radioButton4);
break;
default:
radioGroup.check(R.id.radioButton1);
}
}
@Override
public void onPageScrollStateChanged(int position) {
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId) {
case R.id.radioButton1:
pager.setCurrentItem(0);
break;
case R.id.radioButton2:
pager.setCurrentItem(1);
break;
case R.id.radioButton3:
pager.setCurrentItem(2);
break;
case R.id.radioButton4:
pager.setCurrentItem(3);
break;
}
}
private class MyPagerAdapter extends FragmentStatePagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
return FirstSlide.newInstance("FirstSlide, Instance 1");
case 1:
return SecondSlide.newInstance("SecondSlide, Instance 1");
case 2:
return ThirdSlide.newInstance("ThirdSlide, Instance 1");
case 3:
return FourthSlide.newInstance("FourthSlide, Instance 1");
default:
return FirstSlide.newInstance("FirstSlide, Default");
}
}
@Override
public int getCount() {
return NUMBER_OF_PAGES;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
super.destroyItem(container, position, object);
notifyDataSetChanged();
}
}
}
歡迎堆棧溢出!你已經在你的問題中發佈了很多代碼,這使得我們(以及未來的讀者)不清楚問題出在哪裏。請將您的問題代碼減少到10行或更少。請參閱:[如何創建最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)和[如何調試小程序](https://ericlippert.com/2014/03/05 /如何調試的小程序/)。 –
也給你的適配器類 –
適配器類是在mainactivity類裏面好心檢查 – Mudassir