Próbuję zapisać podklasę ListFragment przez zmianę orientacji, więc dodałem setRetainInstance (true) na końcu mojej funkcji onCreate. Dodałem metodę onSaveInstanceState, aby dodać wszystkie dane do pakietu, a następnie dodałem kod do onActivityCreated, aby załadować te dane z powrotem. Niestety, to nie zadziała.setRetainInstance nie działa dla ListFragment przy użyciu biblioteki compatibiltiy
Kiedy dodałem kilka komunikatów do debugowania za pomocą Log.d Stwierdziłem, że nie tylko nie był wywoływany onSaveInstanceState, ale onCreate był (który wydaje się twierdzić, że dokumentacja nie powinna się zdarzyć, gdy wartość retainInstance jest prawdziwa). Ani onCreate, ani onActivityCreated nie zawierają pakietów z moimi danymi (nieoczekiwanie).
Zgaduję, że to może być problem z biblioteką kompatybilności, chociaż nie mam urządzenia Android 3.0+, aby to przetestować.
Każda pomoc jest doceniana i mogę opublikować niektóre fragmenty kodu, jeśli to konieczne, ale nie robię nic skomplikowanego.
Aktualizacja: onDestroy nie jest wywoływana podczas zmiany orientacji (co jest jak powinno być), więc wydaje się, że niektóre z setRetainInstance pracuje
Proponuję debugowanie kompatybilnej biblioteki, aby zobaczyć, co się dzieje. Z jakiej wersji biblioteki kompatybilnej korzystasz? Używam r1 i unikałem r2, ponieważ występuje co najmniej jeden błąd regresji z tym, że onDestroy nie jest wywoływany, gdy fragment jest zamieniany. – PJL
Używam r3, będę szukać starszej wersji, aby sprawdzić, czy to pomaga. Wszelkie sugestie dotyczące debugowania biblioteki compat? Jestem bardzo nowy, aby debugować Javę. – rofer
Po prostu spróbuj przejść do jednej z metod kompatybilnej biblioteki i powinieneś otrzymać monit o lokalizację źródeł. – PJL