7

Mam zagnieżdżony fragment, który próbuję przywrócić stan z uwagi na zmianę orientacji.Nie można zapisać i przywrócić zagnieżdżonego fragmentu?

Więc po pierwsze moja konfiguracja jest następująca:

Activity -> ParentFragment (SetRetainInstance(true)) -> ChildFragment 

W moje dziecko fragmentu mam kod onSaveInstance następująco:

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    // Serialize the current dropdown position. 
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActivity().getActionBar() 
      .getSelectedNavigationIndex()); 
} 

Jednak kiedy orientacji urządzenia we wszystkich wydarzeniach Lifecycle powrotu stan savedInstance o wartości NULL.

Czy robię to niepoprawnie w przypadku funkcji ChildFragment? Dlaczego mój stan nie jest zapisywany i nie jest zwracany?

Odpowiedz

7

To z powodu setRetainInstance(true) twojego fragmentu macierzystego. Android zachowuje fragment ze wszystkimi jego fragmentami podrzędnymi. Tak więc twoja funkcja ChildFragment nie zostanie zniszczona i dlatego otrzymasz wartość null w savedInstanceState. Dokumentacja onCreateView stanów:

savedInstanceState Jeśli niezerowe, ten fragment jest ponownie wykonana z poprzedniego zapisanego stanu, jak podano tutaj.

Możesz spróbować skomentować setRetainInstance(true) i upewnić się, że otrzymałeś poprawną wartość dla savedInstanceState.

+0

Czy to rozwiązanie działa u Ciebie? –

+0

Tak, ale dwa lata temu. :) Może coś się zmieniło od tego czasu. – Ayzen

Powiązane problemy