Как уничтожить фрагменты, которые я хочу
Мой вопрос немного сложно объяснить. У меня много фрагментов, я буду называть их F1, F2, F3...
В MainActivity
загружает F1 (фрагмент 1). Есть кнопка. Когда пользователь нажимает, это заменяется на F2. В F2 тоже есть кнопка. После нажатия заменяется на F3. Хорошо, теперь смотрите здесь. В F3 есть кнопка с названием languages и справа от него 6 imageViews.
Поэтому, когда пользователь нажимает кнопку "Языки", F3 заменяется на F4. В FD у меня есть listView с пользовательским адаптером (checkbox
, imageView
, textView
). Когда пользователь устанавливает флажки и нажимает кнопку "Далее", F4 заменяется на F3, но в действительности это новый фрагмент (F5).
В MainActivity я написал этот код.
@Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() == 1) {
finish();
} else if (getFragmentManager().getBackStackEntryCount() >= 5) {
getFragmentManager().popBackStack(fragmentLanguage.getClass().getName(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
} else {
super.onBackPressed();
}
}
Все работает хорошо, в F5, когда я нажимаю назад, он возвращается к F3. Это все, что мне нужно. Но у меня есть один вопрос. Когда я нажимаю на кнопку языков F5 еще раз, это означает, что F5 заменяется на F6, а когда в F6 я нажимаю следующий, тогда F6 заменяет на F7. В F7, когда я нажимаю назад, он возвращается к F5, затем, если я нажимаю назад еще раз, это будет к F3. Мне нужно, когда пользователь нажимает обратно на F7, или в F9, или в F11, то после нажатия обратно он возвращается к F3. Прямо сейчас, если я вернусь с F11, он перейдет к F9, затем F7, затем F5 и затем F3. Как я могу сделать эту часть?
FragmentLanguage - это F4 (или F6 или F8). И F3 или F5 или F7 названы как personalInfoFragment.
В моем коде вы видите метод OnBackPressed да? Теперь смотрите, он получает, сколько фрагментов находится в backStack, и если в backStack 5 или более фрагментов, он удаляет F4 (языковым фрагментом является F4). Это нормально, мой вопрос в том, что если я открою фрагмент F6, мне нужно удалить фрагмент F5. Но F5 - это тот же F3, поэтому у них одинаковый тег, если я скажу удалить фрагмент с этим тегом, F3 удалит тоже. Это моя проблема. Если я открываю F6, мне нужно удалить F5, но F3 и F5 имеют одинаковый тег.
Извините за плохое объяснение. Я не могу объяснить мою проблему хорошо. НУЖНО, ЧТО НА НАЗАД НАЖМИТЕ, ЧТО ПОЛУЧИЛСЯ В ФК ИЗ ВСЕХ ФРАГМЕНТОВ (FD, FE, FG...).