2016-07-22 2 views
5

У меня есть активность с фрагментом A внутри него. Фрагмент A имеет внутри него вложенный фрагмент B. Я переключение B с C, используя следующий код:Android анимированные вложенные фрагменты

  getChildFragmentManager() 
       .beginTransaction() 
       .setCustomAnimations(R.anim.move_left_in, R.anim.move_left_out,R.anim.move_right_in, R.anim.move_right_out) 
       .replace(R.id.container, fragmentC) 
       .addToBackStack("nested") 
       .commit(); 

после этого Im делает

 getChildFragmentManager().popBackStack(); 

, что возвращает меня к фрагменту Б. После этого я переключаю фрагмент А с фрагментом D с использованием коды

 getSupportFragmentManager() 
      .beginTransaction() 
      .setCustomAnimations(R.anim.move_up_in, R.anim.move_up_out, R.anim.move_down_in, R.anim.move_down_out) 
      .replace(R.id.fragment_holder, fragmentD) 
      .addToBackStack("fragments") 
      .commit(); 

И пока эта анимация на A-> D-игре играет, B воспроизводит анимацию транзакции C-> B, и, выбирая backstack im, получает тот же результат, почему?

+0

Какую версию поддержки вы используете? – azizbekian

+0

Я не понимаю, чего вы на самом деле хотите. Можете ли вы немного подробнее рассказать об этой части », и пока эта анимация на транзакции A-> D воспроизводится, B воспроизводит анимацию транзакции C-> B, а при загрузке backstack im получает тот же результат, почему?»? –

ответ

-1

Не используйте getChildFragmentManager(),

Использование поддержки fragmnetManager означает использование getSupportFragmentManager почему?

BCZ вложенного фрагмента

Я надеюсь, что ваша проблема решена с помощью этого решения. Спасибо :)

+0

Почему он не должен использовать диспетчер фрагментов детей? – RadekJ

+0

Потому что я тоже столкнулся с этой проблемой, пока я делаю анимацию с фрагментами. Поэтому я просто меняю ее с дочернего менеджера на менеджер поддержки, после чего получаю мои результаты, которые я хочу. –

+0

вы можете проверить здесь https://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations%28int,%20int,%20int,%20int%29 –

0

При переключении фрагмента А с фрагментом Д.

Содержание в пределах фрагмента А отделяться от своего родителя, а затем операции А -> D имеет место,

Поскольку вы уже установили анимацию к вашим фрагментам, задержка из-за этой анимации является причиной того, что вы, видите, что в левой части анимации в B сначала , тогда анимация A -> D.

Смежные вопросы