2016-07-20 2 views
0

Я встречаю странное поведение относительно кнопки «Назад» и Fragments. Вот моя ситуация, у меня есть 3 Fragments, f1, f2 и f3 . Существует Buttonf1 в который воспитывает f2:Обратные кнопки Отображает неправильный фрагмент

getSupportFragmentManager() 
    .beginTransaction() 
    .addToBackStack("f1") 
    .replace(R.id.fragHook, f2, 
    TAG).commit(); 

Эта сделка отлично работает. Я могу ударить взад-вперед между двумя фрагментами, которые только что находят. Внутри f2 у меня есть RecyclerView, который пользователь может выбрать ячейку. Когда пользователь выбирает ячейку, я воспитываю f3, но я не добавляю f2 к backstack:

getSupportFragmentManager().beginTransaction() 
    .replace(R.id.fragHook, f3) 
    .commit(); 

Fragmentf3 отображается правильно. И в первый раз с этим процессом я нажимаю кнопку «Назад», а f1 отображается правильно. Проблема теперь возникает, если я повторяю те же самые шаги. Button в пределах f1 щелкнул, что вызывает f2 с RecyclerView. Затем выбирается ячейка, восходящая к f3 во второй раз. Теперь, когда я нажимаю кнопку «Назад», появляется фрагмент f2.

Я проверил и onCreateView вызывается как для f1, так и для f2. Что может вызвать появление f2Fragment?

ответ

0

Вы можете обрабатывать кнопку назад и проверить фрагменты сосредоточиться и сделать правильный поток вручную

0

Да это может быть делать, добавляя все фрагмент к backstack.

Когда BackButton пресса и CurrentFragment является f3 затем написать

super.onbackPressed() два раза в другом месте один раз.