2015-05-28 4 views
1

У меня проблема с андроидным фрагментом backstack. Это моя ситуация.Назад от третьего к первому фрагменту в android

enter image description here

// Я не могу добавлять изображения, поэтому я принял ссылку на него.

Как вы можете видеть, я хочу, чтобы перейти от фрагмента 1 до фрагмента 2 и в конце фрагмент 3, но когда я нажимаю кнопку назад на фрагменте 3, я хочу вернуться к фрагменту 1.

I делайте это, как я описываю на рис., но когда я нажимаю кнопку «Назад», ничего не происходит, и когда я нажимаю его второй раз, приложение закрывается.

My BackStack выглядит так, как ожидалось, у меня есть только запись «Главная». Кроме того, когда я добавляю фрагмент фрагмента Backstack 2, я могу нормально вернуться с Frag3 до Frag2 в Frag1 (но это не то, что я хочу).

// Edit:

Первое:

отладить мое приложение немного, и я заметил, что, когда я нажимаю кнопку назад, фрагмент poped из backstack и его методы жизненного цикла вызывались, а текущий фрагмент (Фрагмент 3) ничего не делает (я записал его методы onPause и onStop, и они не были вызваны). Может быть, это проблема?

Второе:

Я нашел решение, которое я реализую onBackStackChange слушателя и в методе onBackStacChange я просто заменить Fragment3 с Fragment1. Это работает, но правильно ли?

+1

где ваш код? –

+0

Добавить первый фрагмент в backstack – DDsix

+0

Возможный дубликат [Это правильный способ очистки стопы фрагмента при выходе из глубоко вложенного стека?] (Http://stackoverflow.com/questions/5802141/is-this-the -right-way-to-clean-up-fragment-back-stack-when-leave-a-deep -nest) –

ответ

0
@Override 
public void onPageScrollStateChanged(int state) { 
    int currentPage = mChannelPager.getCurrentItem(); 
    if (currentPage == mChannelsList.size() - 1 || currentPage == 0) { 
      previousState = currentState; 
      currentState = state; 
      if (previousState == 1 && currentState == 0) { 
       mChannelPager.setCurrentItem((currentPage == 0 ? mChannelsList.size() - 1 : 0), false); 
      } 
     } 
    } 
}); 

Написать этот код в onPageScrollStateChanged (INT состояние) вашего onPageChangeListner в