Я пытаюсь заменить фрагменты из моего адаптера ViewPager, но он не работает. Ошибок нет. Когда я вызываю метод replace (int, Fragment), он ничего не делает. У вас есть какие-то подсказки, почему это не работает?Замена фрагментов ViewPager
public class PagerAdapter extends FragmentPagerAdapter {
private Vector<Fragment> mFragments;
private Stack<Fragment> mHiddenFragments;
public PagerAdapter(FragmentManager fm) {
super(fm);
mFragments = new Vector<Fragment>();
mHiddenFragments = new Stack<Fragment>();
}
// here is the replacement method I'm using
public void replace(int index, Fragment fragment) {
mHiddenFragments.push(mFragments.get(index));
mFragments.set(index, fragment);
notifyDataSetChanged();
}
public void replace(int index) {
mFragments.set(index, mHiddenFragments.pop());
notifyDataSetChanged();
}
public void add(Fragment fragment) {
mFragments.add(fragment);
notifyDataSetChanged();
public void remove(int index) {
mFragments.remove(index);
notifyDataSetChanged();
}
}
EDIT: Часть, которую я не могу добраться до работы является удаление фрагмента. Кажется, я могу удалить только фрагменты в ViewPager, которые находятся после просмотра.
пример: Предположим, что у меня есть фрагменты 0 & 1 => mFragments.size() == 2
mPagerAdapter.add(new GenreListFragment());
mPagerAdapter.remove(1);
Я предполагаю, что это не очень удобно, если мне нужны замены для большего количества фрагментов, мне нужно что-то более общее. – mewa
Но если вы хотите иметь несколько фрагментов на странице, вы можете создать «пустой» фрагмент контейнера, используемый в адаптере пейджера, а затем добавить дочерние элементы к этим «базовым» фрагментам. –
Я уже успел добавить несколько фрагментов на страницу, однако оказалось, что это не то решение, которое я ищу. – mewa