Попробуйте использовать это простое решение из анимации папки аним.
Замените это
fragmentTransaction.replace(R.id.frame, firstFragment, "fragment_class_name");
на
fragmentTransaction.add(R.id.frame, firstFragment, "fragment_class_name");
Пример
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.slide_up, R.anim.slide_up);
fragmentManager.addOnBackStackChangedListener(this);
fragmentTransaction.add(R.id.frame, firstFragment, "fragment_class_name");
fragmentTransaction.addToBackStack("fragment_class_name");
fragmentTransaction.commit();
Причина использования добавить фрагмент Важное отличие:
replace
удаляет существующий fragment
и добавляет новый fragment
..
, но add
сохраняет существующие фрагменты и добавляет новый фрагмент, что означает, что существующий фрагмент будет активным, и они не будут находиться в состоянии «приостановлено», поэтому при нажатии кнопки «назад» onCreateView()
не вызывается для существующего fragment
(fragment
, который был там до добавления нового fragment
).
См. скриншот