У меня есть ViewPager, и его дочерние фрагменты динамичны. Я использую их в одном классе фрагментов и динамически меняю значение поля. Но когда я меняю позицию ViewPager, он не обновляет фрагмент. Мне нужно немедленно изменить значения.

Спасибо.

-2
Afinas EM 13 Мар 2018 в 11:54

2 ответа

Лучший ответ

Объявите метод refreshFragment в своем классе фрагмента, затем

В методе перезаписи класса ViewPagerAdapter

@Override
    public int getItemPosition(@NonNull Object object) {
       MyFragment f = (MyFragment ) object;
        if (f != null) {
           f.refreshFragment();
        }
        return super.getItemPosition(object);
    }

Когда ты звонишь

viewPagerAdapter.notifyDataSetChanged();

Он вызовет метод getItemPosition в классе адаптера и обновит ваш фрагмент с помощью метода refreshFragment.

0
MJM 13 Мар 2018 в 09:02

Android по умолчанию сохраняет по одной странице с обеих сторон текущей страницы для оптимизации загрузки. Поскольку вам нужно, чтобы страницы обновлялись каждый раз, вам нужно использовать viewpager.setOffScreenPageLimit(0), чтобы настроить все страницы, которые будут воссоздаваться каждый раз при их просмотре.

0
Anuraag Baishya 13 Мар 2018 в 09:04