I'm creating an Activity with ViewPager that using FragmentStatePagerAdapter. But when I'm trying to rotate my phone, it crash and come with error "Fragment has not been attached yet"
Here's my adapter:
public class SalesPagingAdapter extends FragmentStatePagerAdapter {
private CharSequence[] titles;
private int tabCount;
private List<Fragment> fragmentList = new ArrayList<>();
public SalesPagingAdapter(Context ctx, FragmentManager fm, CharSequence[] titles, int tabCount) {
super(fm);
this.titles = titles;
this.tabCount = tabCount;
for (int x = 0 ; x < tabCount ; x++) {
if (x == 0) fragmentList.add(new BaseFragment(new DashboardSales()));
else fragmentList.add(new BaseFragment());
}
}
@Override
public Fragment getItem(int pos) {
return fragmentList.get(pos);
}
@Override
public CharSequence getPageTitle(int position) {
return titles[position];
}
@Override
public int getCount() {
return tabCount;
}
public void SetTab(int idx, Fragment frag) {
BaseFragment basicFrag = (BaseFragment)fragmentList.get(idx);
basicFrag.getChildFragmentManager().beginTransaction().replace(R.id.container, frag).commit();
}
public void SetLoadTab(int idx, Fragment frag) {
BaseFragment basicFrag = (BaseFragment)fragmentList.get(idx);
basicFrag.SetLoadFragment(frag);
}
public FragmentControl GetFragment(int idx) {
return (FragmentControl)fragmentList.get(idx).getChildFragmentManager().findFragmentById(R.id.container);
}}
In my activity, onCreate, I have called salesPagingAdapter = new SalesPagingAdapter(PreMainActivitySales.this, getSupportFragmentManager(), tabTitles, tabCount); viewPager.setAdapter(salesPagingAdapter); viewPager.setOffscreenPageLimit(1);
And then when I swipe the ViewPager, I call int i = viewPager.getCurrentItem(); FragmentControl baseFrag = salesPagingAdapter.GetFragment(i);
If I rotate the phone without swipe the ViewPager, it'll be fine. But when I rotate it, even get back to previous orientation, when I swipe, it'll crash and give "Fragment has not been attached yet" error.