Можно ли заменить текущий просматриваемый фрагмент в FragmentStatePagerAdapter, не переходя сначала к другим страницам?
Мне удалось заменить фрагменты в FragmentStatePagerAdapter, но для его уничтожения требуется смахивание фрагмента и повторное создание другого фрагмента, таким образом заменяя фрагмент.
Что мне нужно, это заменить текущий просматриваемый фрагмент адаптера другим фрагментом без изменения текущего просматриваемого фрагмента.
Пример:
Страница1 Страница2 Страница3Страница4
Страница4 является активным фрагментом. Когда я щелкну что-то в Page4, это будет заменено другим фрагментом
Page1 Page2 Page3 Page3 Page3
fragmentDataSource[3] = page3Fragment;
adapter.notifyDataSetChanged();
Работает только из-за onChange()
метод. (Грубое предположение)
Это возможно? Я рассмотрел использование FrameLayout и просто установил видимость макетов, но не думаю, что это будет лучшим выбором.
Спасибо!
1 ответ
Это не самый эффективный способ создания экземпляра фрагмента в ViewPager, но он самый простой:
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Или создайте метод во фрагменте и вызовите его, если фрагмент имеет правильный тег:
@Override
public Fragment getItem(int position) {
if (position == some position) {
YourFragment myFragment = YourFragment.newInstance(someObject);
myFragment.setmTag("some tag");
return myFragment;
}
//some code
}
@Override
public int getItemPosition(Object object) {
YourFragment frag = ((YourFragment) object);
if (frag.getmTag()!="some tag") {
((YourFragment) object).update(someObject);
}
return super.getItemPosition(object);
}