Mam fragmenty, które trzymam w backstackach FragmentManager. Każdy stan fragment jest zapisywany do zmiany orientacji zmiennych składowych, jak to na przykład:Używanie onSaveInstanceState z fragmentami w backstacku?
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putLong("userId", mUserId);
outState.putString("username", mUsername);
}
Moim problemem jest to, że jeśli jest zmiana orientacji, ponieważ każdy fragment w backstack jest wywoływana poprzez onSaveInstanceState, otrzymuję null wyjątek wskaźnika, ponieważ zmienne składowe już nie istnieją.
Wszelkie pomysły na rozwiązanie tego problemu?
Czy możesz podać swój komunikat o błędzie logcat? –
Funkcja onSaveInstanceState jest wywoływana przed zastosowaniem obowiązującej zmiany, więc zmienne powinny istnieć po ich wywołaniu, chyba że są one puste z powodu innych błędów w kodzie. Dodaj trochę więcej kodu wraz z formularzem wyjściowym błędu Logcat. – Shade
Mogę zapewnić, że moje zmienne są w porządku. Myślę, że problem polega na tym, że moje fragmenty w backstacku nie są wywoływane na SaveInstanceState, gdy są zrywane; Parametr onSaveInstanceState jest wywoływany tylko wtedy, gdy działanie jest niszczone, ale moje zmienne już nie istnieją. Więc moje obecne rozwiązanie to: "if (mUserId! = Null && mUsername! = Null) ...". Nie jest ładny, ale rozwiązuje problem. Uważam to za dziwne, gdy używam metody onSaveInstanceState dla fragmentów, jeśli nie zostanie ona wywołana, gdy fragment zostanie zburzony. –