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 어댑터에 조각을 추가 한 방법입니다
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);
내가 FragmentPagerAdapter와 시도 FragmentStatePagerAdapter 대신. 그러나 사용하지 마십시오. 이 문제를 해결하기위한 다른 방법을 제안하십시오.
포스트 AttendanceViewFragment.newInstance 방법 –
공공 정적 AttendanceViewFragment 위해서, newInstance (String를, 문자열 t이 같은 조각을 추가,
어댑터를 만든 후를) { AttendanceViewFragment fragTt = 새로운 AttendanceViewFragment(); 번들 bundTottal = 새 번들(); bundTottal.putString ("data", s); bundTottal.putString ("flag", t); fragTt.setArguments (bundTottal); return fragTt; } –
다음 코드를 추가합니다. if (titles.size()> 1) { viewPager.setOffscreenPageLimit (titles.size() - 1); } viewPager.setAdapter (어댑터) 이후}; –