У меня есть ViewPager, и его дочерние фрагменты динамичны. Я использую их в одном классе фрагментов и динамически меняю значение поля. Но когда я меняю позицию ViewPager, он не обновляет фрагмент. Мне нужно немедленно изменить значения.
Спасибо.
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.
Android по умолчанию сохраняет по одной странице с обеих сторон текущей страницы для оптимизации загрузки. Поскольку вам нужно, чтобы страницы обновлялись каждый раз, вам нужно использовать viewpager.setOffScreenPageLimit(0)
, чтобы настроить все страницы, которые будут воссоздаваться каждый раз при их просмотре.
Похожие вопросы
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .