My MainActivity содержит viewPager.Заменить фрагмент в Viewpager (notifyDataSetChanged не работает)
В MainActivity.java, я установил адаптер для viewpager. Адаптер расширяет FragmentStatePagerAdapter. Фрагмент, который я хочу заменить, - это cameraFragment. Поэтому, когда пользователь нажимает кнопку переключателя камеры, я хочу показать фрагмент камеры, на этот раз с фронтальной камерой.
При нажатии кнопки «Камера» я удаляю фрагмент из массива фрагментов, которые я передал пользовательскому адаптеру. Я добавляю новый фрагмент и вызываю notifydatasetchanged. Однако это не приводит к добавлению нового фрагмента. Как добиться динамической замены фрагментов в представлении, который поддерживает мой пользовательский адаптер пейджера состояния? Код:
mainPageFragments = new ArrayList<>();
mainPageFragments.add(new ResultsFragment_());
mainPageFragments.add(DemoCameraFragment_.newInstance(false));
pagerAdapter = new MainViewPagerAdapter(getSupportFragmentManager(),mainPageFragments);
Для замены фрагмента: Получив соответствующее событие, что я делаю,
mainPageFragments.remove(1);
if (event.getCameraState().equals(CameraSwitchButton.CameraTypeEnum.BACK)) {
mainPageFragments.add(DemoCameraFragment.newInstance(false));
} else {
mainPageFragments.add(DemoCameraFragment.newInstance(true));
}
// Not Working...
pagerAdapter.notifyDataSetChanged();
Adapter Код:
public class MainViewPagerAdapter extends FragmentStatePagerAdapter {
ArrayList<Fragment> fragmentsArray;
public MainViewPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmentsArray) {
super(fm);
this.fragmentsArray = fragmentsArray;
}
@Override
public Fragment getItem(int position) {
return fragmentsArray.get(position);
}
@Override
public int getCount() {
return fragmentsArray.size();
}
@Override
public int getItemPosition(Object object) {
return super.getItemPosition(object);
}
}
post какой-либо код что вы сделали – Mano
@Mano. Любые мысли о том, как обновлять/заменять фрагмент? Ясно, что я что-то пропускаю. Я не хочу перезагружать адаптер. Похоже, что это дорогостоящая операция (если количество страниц/фрагментов увеличивается. Также мне нужно только заменить один фрагмент, поэтому повторная копирование всех остальных не имеет никакого смысла. – Rohan
Сообщение о приятности также для кода MainViewPagerAdapter. – Okas