2016-07-22 42 views
5

Mam aktywność z fragmentem A w środku. Fragment A zagnieździł w nim fragment B. Mam przełączania B z C przy użyciu następującego kodu:Android animowane zagnieżdżone fragmenty

  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(); 

potem robię

 getChildFragmentManager().popBackStack(); 

Co sprowadza mnie z powrotem do fragmentu B. Potem przełączyć Fragment A z fragmentu D, przy użyciu kodu

 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(); 

Podczas gdy ta animacja w transakcji A-> D jest odtwarzana, B odtwarza animację transakcji C-> B, a wyskakując z powrotem do tyłu, otrzymując ten sam wynik, dlaczego?

+0

Z jakiej wersji biblioteki pomocniczej korzystasz? – azizbekian

+0

Nie otrzymuję tego, czego naprawdę chcesz. Czy możesz trochę rozwinąć w tej części? "I podczas gdy ta animacja na transakcji A-> D jest odtwarzana, B odtwarza animację transakcji C-> B, i wyskakując z powrotem do tyłu, otrzymując taki sam wynik, dlaczego?"? –

Odpowiedz

-1

Nie używaj getChildFragmentManager()

Zastosowanie wsparcie fragmnetManager oznacza używać getSupportFragmentManager dlaczego?

BCz zagnieżdżonych fragmentu

Mam nadzieję, że problem zostanie rozwiązany z tego rozwiązania. Dziękuję :)

+0

Dlaczego nie powinien używać menedżera fragmentów potomnych? – RadekJ

+0

Ponieważ mam również do czynienia z tym problemem, gdy robię animację z fragmentami, więc po prostu zmieniam go z menedżera potomnego na menedżera wsparcia, więc po tym dostaję moje wyniki, które chcę. –

+0

możesz sprawdzić tutaj https://developer.android.com/reference/android/app/FragmentTransaction.html#setCustomAnimations%28int,%20int,%20int,%20int%29 –

0

Po przełączeniu fragment jest fragmentem D.

Zawartość wewnątrz fragmentu A oderwać od jego rodzica, a następnie transakcja A -> D zachodzi,

Skoro masz już zestaw animacji do twoich fragmentów, opóźnienie z powodu tych animacji jest powodem, dla którego widzisz, że pominięto animację najpierw w B, , a następnie animację A -> D.