Что касается потери состояния или вращения экрана, и когда мой логический флаг является истинным, я хочу воссоздать свой экран. Тем не менее, менеджер фрагментов по-прежнему имеет прикрепленный предыдущий фрагмент и загружается.FragmentManager содержит фрагмент из viewpager после потери состояния
Что я могу сделать, чтобы избавиться от этого фрагмента?
public class ViewPagerAdapter extends FragmentPagerAdapter {
private String[] mData;
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
mData= new String[0];
}
@Override
public Fragment getItem(int position) {
Bundle bundle = new Bundle();
bundle.putInt("key", position);
Fragment fragment = new MyFragment();
fragment.setArguments(bundle);
return fragment;
}
@Override
public int getCount() {
return mData.length;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public CharSequence getPageTitle(int position) {
return mData[position];
}
public void setData(String[] data) {
mData= data;
}
}
Кусок кода активность OnCreate()
mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
mViewPagerAdapter.setData(data);
viewPager.setAdapter(mViewPagerAdapter);
Почему вам нужно явно удалить фрагменты? Вы можете просто подготовить данные и обновить контент. – jobcrazy
Мне нужно удалить старый фрагмент, когда у меня больше нет данных. Я пытаюсь повторно создать экземпляр фрагмента после операции для извлечения обновленных данных. В противном случае это приведет к сбою доступа к нулевому объекту. – awonderer
Просто проверьте фрагмент, чтобы избежать сбоя, когда вы закончите получать обновленные данные, действие будет обрабатывать жизненный цикл фрагментов, вам просто нужно убедиться, что фрагменты получают последние данные, когда они собираются показать (например, в onCreateView()) – jobcrazy