Po aktualizacji z biblioteki pomocy Androida 23.1.1
do najnowszej wersji 25.1.0
zachowanie użytkownika popBackStack()
zmieniło się w naszej aplikacji.Zachowanie popBackStack() różni się po uaktualnieniu biblioteki pomocy z 23.1.1 do 25.1.0
Na przykład mam trzy FragmentTransactions
na BackStack. Teraz czwarty FragmentTrsansaction został dodany do BackStack. FragmentTransactions to tak:
FragmentTransaction transaction = fragmentManager.beginTransaction()
.replace(R.id.fragment_container_single, target, CoreActivity.FRAGMENT_TAG_LEFT)
.addToBackStack(<CONCRETE_TRANSACTION_NAME>)
.commit();
Fragment # 4 ma logiki, gdzie drogi fragment # 5 podczas onViewCreated()
automatycznie (wiem, że to brzydki i muszę to zmienić). W każdym razie, kiedy chcę opuścić fragment # 5, chcę wrócić do Fragmentu, który został pokazany przed Fragmentem # 4. Robię to wg nazwy transakcji:
getFragmentManager().popBackStack(“<CONCRETE_TRANSACTION_NAME_4>”, FragmentManager.POP_BACK_STACK_INCLUSIVE);
lub to:
getFragmentManager().popBackStack(“<CONCRETE_TRANSACTION_NAME_3>”, 0);
Ale z tego nazwać onCreateView()
i onViewCreated()
fragmentu # 4 będzie nazwane i Fragment # 5 zostaną dodane bezpośrednio do BackStack . Nawet jeśli powrócę do Fragmentu nr 1 onViewCreated()
jest wywoływany dla każdego Fragmentu w BackStack - dla Fragmentu # 2, Fragmentu # 3 i Fragmentu # 4, nawet jeśli nie mają one znaczenia dla FragmentTransaction, do którego chcę powrócić.
Pod biblioteką wsparcia 23.1.1
Pomyślnie wskoczę z powrotem do Fragmentu # 3. Fragment # 4 jest wstawiany włącznie bez wywoływania onViewCreated()
. Wydawało mi się to bardziej intuicyjne i słuszne, ponieważ wywołanie onViewCreated()
dla Fragmentów "na zewnątrz" mojej FragmentTransaction wydaje się niepotrzebne?
Wiem, addToBackStack()
zapisuje tylko stany transakcyjne, a nie same Fragmenty i może być konieczne odtworzenie Fragmentów.
Do tego jest podobne posts, ale chcę zrozumieć, dlaczego łamie się po aktualizacji biblioteki pomocy technicznej. Nigdzie nie mogę znaleźć zmiany. Czy to był Bug, czy jest to Bug?
Zmieniam mój kod.
Dzięki za pomoc!
UPDATE Mam więcej problemów/zmian w cyklu życia po aktualizacji do biblioteki wsparcia 25.1.0. Jest tam Google issue, gdzie dodatkowo komentowałem moje problemy. Obecnie musiałem wrócić do najnowszego 24.2.1 i mieć oko na ten temat. To tylko moje tymczasowe rozwiązanie. Te problemy zaczynają się od biblioteki pomocniczej 25.0.0.
Mam problem z przyciskiem Wstecz w tej wersji. Zastanawiam się, czy jest to związane z tym zagadnieniem cyklu życia. Instancja działania została utworzona ponownie. –
Sprawdziłem to. Kiedy wrócę, moja aktywność nie zostanie odtworzona. Zostało ono wstrzymane i wznowione zgodnie z oczekiwaniami między działaniami. Ale przez cofnięcie się bahauna fragmentów zmieniła się w kolejności. Wygląda na to, że nie jest to związane z nową wersją biblioteki. Może twoja aktywność jest odtwarzana przez Androida, na przykład z powodu małej ilości pamięci? –
Kiedy używam wsparcia 25.x, mam awarie po użyciu przycisku wstecz. Kiedy wrócę do 24.x, działa dobrze. Kilka urządzeń. Kiedy mam trochę czasu, muszę wydestylować minimalny żywotny test. –