2015-07-13 11 views
7

Mam kontener FrameLayout, w którym używam metody replace, aby wstawić fragment po wybraniu elementu z szuflady nawigacji.Android ViewPager nie wywołuje poleceniaDetach/onDestroy/onDestroyView w przypadku wymiany w kontenerze

getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment, fragment.getFragmentTag()).commit(); 

Mam fragment, który ma w sobie ViewPager. Mam 3 fragmenty, które są wyświetlane w układzie kart z ViewPager. Gdy wybiorę inny element z szuflady nawigacji, fragment z ViewPagerem zostanie zastąpiony, ale fragmenty w nim zawarte nie zostaną oderwane. System wywołuje tylko fragment za pomocą metod ViewPager onDetach/onDestroy itd., Ale nie zawiera metod zawartych w nim fragmentów.

Używam FragmentPagerAdapter i próbowałem z adapterem FragmentStatePager. Nic się nie zmienia. Używam domyślnego setOffscreenPageLimit (1);

Jak mogę wywołać metody fragmentów ViewPager w wywołaniuDetach/onDestroy?

Dzięki!

Odpowiedz

7

Czy używasz programu FragmentManager lub podrzędnego menedżera fragmentów? Jeśli utworzysz Fragment wewnątrz innego Fragmentu i chcesz, aby wewnętrzny Fragment zachowywał się jak zewnętrzny, powinieneś pobrać menedżer fragmentów potomnych z zewnętrznego fragmentu i użyć go do utworzenia wewnętrznych fragmentów. Zobacz this.

+0

Kupię ci piwo, naprawdę! :) Wielkie dzięki, to było rozwiązanie! – NMP

+0

Dwa piwa! Dzięki! – cylon