У меня есть viewpager с 5 вкладками. В каждом фрагменте на странице просмотра у меня есть список, заполненный данными, которые я получаю с сервера (вызовы сервера выполняются с помощью AsyncTask).
Я также использую Fragmentstatepageradapter, чтобы иметь максимально плавную навигацию, но кажется, что что-то не работает должным образом, когда я перехожу от фрагмента, имеющего список, к другому фрагменту со списком.
Мне интересно, почему, поскольку данные уже сохранены, и я хочу, чтобы просмотрщик выталкивал эти фрагменты из стека.
Вот мой адаптер:
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
public TabsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int index) {
switch (index){
case 0:
return new Fragment1();
case 1:
return new Fragment2();
case 2:
return new Fragment3();
case 3:
return new Fragment4();
case 4:
return new Fragment5();
}
return null;
}
@Override
public int getCount() {
return 5;
}
}
После небольшого исследования я увидел, что getItem() всегда должен возвращать новый экземпляр фрагмента, но я все еще не могу плавно сохранять/восстанавливать состояния. Я пытался использовать myViewPager.setOffscreenPageLimit(4);
, который дает лучшую производительность, но навигация по вкладкам все еще немного запаздывает.
Нужно ли переопределять instanceItem/destroyItem, чтобы сохранить состояния фрагментов?