Моя Activity
содержит ViewPager
и пользовательский Adapter
который расширяет FragmentStatePagerAdapter
. ViewPager
содержит 3 фрагмента
Код для удаления фрагментов из ViewPager
MainActivity
public void deleteElement(){ final int currentItem = mViewPager.getCurrentItem(); mPagerAdapter.removeItem(currentItem); mPagerAdapter.notifyDataSetChanged(); }
CustomPagerAdapter
private ArrayList<Item> data; public void removeItem(int index){ data.remove(index); }
При удалении среднего Fragment
(индекс 1):
data
я удаляю правильный item
. Fragment
3 удаляется после notifyDataSetChanged
а текущий Fragment
по-прежнему является фрагментом, который пользователь видел, а данные, которые загружаются, из пакета SavedInstance
Таким образом, конечный результат заключается в том, что пользователь все еще видит тот же Fragment
который он пытался удалить, что сосать для него.
Идеи?
Попробуйте добавить это:
private class MyPagerAdapter extends FragmentStatePagerAdapter { //... your existing code @Override public int getItemPosition(Object object){ return PagerAdapter.POSITION_NONE; } }