Мой 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
, которое он пытался удалить, что для него отстой.
Идеи?
***** ИЗМЕНИТЬ ******
похоже на ViewPager2 Функции могут решить эту проблему, а также многие другие проблемы.
ArrayPagerAdapter
, который этим занимается. Я не очень удивлен, что уFragmentStatePagerAdapter
есть проблемы в этой области, поэтому я накатил кое-что отдельно. - person CommonsWare   schedule 24.01.2015