我有一個帶有TabLayout的ViewPager。我通過擴展FragmentStatePagerAdapter創建了ViewPagerAdapter。當我刷卡ViewPager我得到了以下錯誤java.lang.IllegalStateException:已添加片段:
FATAL EXCEPTION: main
Process: com.anubavam.creatrix, PID: 21388
java.lang.IllegalStateException: Fragment already added: AttendanceViewFragment
下面是ViewPagerAdapter類代碼
private class ViewPagerAdapter extends FragmentStatePagerAdapter {
private List<AttendanceViewFragment> mFragments = new ArrayList<>();
private ArrayList<String> buttons = new ArrayList<>();
ViewPagerAdapter(FragmentManager fm, ArrayList<String> actionButtons) {
super(fm);
this.buttons = actionButtons;
}
void addFragment(AttendanceViewFragment frag) {
mFragments.add(frag);
}
@Override
public Fragment getItem(int position) {
return new AttendanceViewFragment();
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return buttons.get(position);
}
}
這是我加入碎片進入ViewPager適配器的方式:我FragmentPagerAdapter試圖
adapter = new ViewPagerAdapter(getSupportFragmentManager(), titles);
for (int i = 0; i < titles.size(); i++) {
//order of the fragment
if (i == 0) {
adapter.addFragment(AttendanceViewFragment.newInstance(studentList.toString(), "T"));
} else if (i == 1) {
adapter.addFragment(AttendanceViewFragment.newInstance(present.toString(), "P"));
} else if (i == 2) {
adapter.addFragment(AttendanceViewFragment.newInstance(absent.toString(), "A"));
} else if (i == 3) {
adapter.addFragment(AttendanceViewFragment.newInstance(late.toString(), "L"));
}
}
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
而不是FragmentStatePagerAdapter。但沒用。建議我採取其他方法來解決這個問題。
後AttendanceViewFragment.newInstance方法 –
公共靜態AttendanceViewFragment的newInstance(字符串s串T ){ AttendanceViewFragment fragTt = new AttendanceViewFragment(); Bundle bundTottal = new Bundle(); bundTottal.putString(「data」,s); bundTottal.putString(「flag」,t); fragTt.setArguments(bundTottal); return fragTt; (titles.size()> 1){ } –
add this code:if(titles.size()> 1){ viewPager.setOffscreenPageLimit(titles.size() - 1); } viewPager.setAdapter(adapter); –