2015-06-29 3 views
0

Я использую ViewPager в своем приложении. Внутри PageAdapter есть три фрагмента, которые установлены в ViewPager. Все работает отлично, и я могу переключаться между всеми тремя фрагментами. У меня есть 3 кнопки, которые позволяют мне переключаться между адаптерами 1 - 3. Проблема наблюдается при одновременном нажатии кнопок 1 и 3. Вот что происходит:Android фрагменты весело с ViewPager

Fragment 1  -  Fragment 3 

        onAttach 
        onViewCreated 
        onResume 
    onPause 
    onAttach 
    onViewCreated 
    onResume 
    onPause 

Как видно из сказанного выше, второй фрагмент никогда не остановился и, следовательно, никогда не возобновляется. Оба фрагмента изменяют один и тот же вид recycler onResume, поэтому с приведенным выше поведением я заканчиваю неправильное состояние моего вида ресайклера.

Любые мысли о том, почему это может происходить и как я могу это исправить?

ответ

0

ViewPager загружает (по умолчанию) текущую страницу, предыдущую страницу и следующую страницу, так как у вас есть только 3 страницы, второй фрагмент всегда возобновляется.

решение создать OnPageChangeListener и изменить вид ресайклер в onPageSelected вместо этого в onResume

+0

является то, что единственным решением? У меня нет доступа к моему viewpager изнутри фрагментов, и они находятся внутри библиотечного модуля, где мой просмотрщик находится в приложении – vkislicins

+0

, думая об этом, я не уверен, что вы правы. Нажимая на фрагменты от 1 до 3 на более медленную скорость, все работает отлично. Это когда клики настолько быстры друг за другом, вот где я вижу, что один из фрагментов не останавливается и, следовательно, не возобновляется. Ваше предположение, вероятно, исправит проблему, но ваше объяснение будет иметь значение только в том случае, если мои клики были 1 - 2 - 1 не 1 - 3 - 1, так как только следующий фрагмент хранится в viewpager – vkislicins

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