Как вы можете отключить анимацию фрагментов, включая анимацию выхода, при очистке заднего стека, в настоящее время я использую следующий код, но, похоже, он не останавливает анимацию, выходящую из экрана, скорее, это останавливает анимацию нового фрагмента, входящего в экран.Отключить анимацию фрагмента фрагмента - Android
код, который я использую следующим образом:
Меню Фрагмент - код, используемый для очистки обратно стеку
private void clearBackStack() {
FragmentUtils.sDisableFragmentAnimations = true;
getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentUtils.sDisableFragmentAnimations = false;
}
Фрагмент Utils Класс:
public class FragmentUtils {
public static boolean sDisableFragmentAnimations = false;
}
Все фрагменты имеют следующее:
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
if (FragmentUtils.sDisableFragmentAnimations) {
Animation a = new Animation() {};
a.setDuration(0);
return a;
}
return super.onCreateAnimation(transit, enter, nextAnim);
}
навигации код меню (где я хочу, чтобы отключить анимацию)
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.action_events:
replaceFragment(new MainFragment());
break;
case R.id.action_promotions:
replaceFragment(new MainFragment());
break;
case R.id.action_menu:
clearBackStack();
replaceFragment(new MenuFragment());
break;
}
return true;
}
});
Эй, спасибо за ваш вклад с этим кодом, Проблема с этим состоит в том, что я хочу для удаления анимации Фрагмента, хранящегося в фоновом стеке, а не анимации меню навигации. Например, в других частях моего кода я вызываю метод transaction.addToBackStack (null), и что происходит неправильно, когда пользователь нажимает кнопку навигации, он пытается выскочить из стека, и анимация все еще воспроизводится. –