2016-04-15 2 views
1

У меня есть 3 фрагмента в ViewPager. Когда я отскакиваю от фрагмента 1 до 3, фрагмент 3 обновляет данные (повторите все методы), но когда я сдвигаю от 1 до 2 или от 2 до 3, следующий фрагмент не обновляет данные.Обновить фрагмент в слайдере

Можете ли вы помочь мне понять, почему? Как я могу освежать каждый раз?

Моя активность расширяет базовый класс FragmentActivity и фрагмент расширяет базовый класс Фрагмент.

ответ

1

ViewPager по умолчанию использует setOffscreenPageLimit(1), что означает, что он «кэширует» один вид влево, а другой - вправо, поэтому, если вы находитесь на втором фрагменте и переходите на 1-й или 3-й, он не перезагружается. Если вы вернетесь на 1-й и 2-й, третий будет перезагружен.

setOffscreenPageLimit(0) выдает предупреждение (минимум должно быть 1).

Решение состоит в том, чтобы загрузить setUserVisibleHint в ваши фрагменты, чтобы обнаружить, когда они становятся видимыми, и обрабатывать данные по загрузке/обновлению там.

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // load data here 
    }else{ 
     // fragment is no longer visible 
    } 
} 

Ответ получен от this SO answer.

-1

Во-первых, в структуре фрагментов андроид ранее загружает фрагмент левой и правой сторон. Например, во втором фрагменте 1 и 2 уже установлено. Для этого есть функция setOffscreenPageLimit.

Ваш второй вопрос: это возможно, но сложным способом. Для этого я обычно использую адаптер уведомлений. После каждого прокрутки вы можете использовать notifyDataSetChanged(); или перезагрузить свои данные в адаптеры.

Смежные вопросы