Ich habe Fragmente, die ich im Backstack von FragmentManager aufbewahre. Jedes Fragment Zustand ist für die Orientierung ändert sich mit Membervariablen gespeichert, wie dies zum Beispiel:Verwenden von OnSaveInstanceState mit Fragmenten im Backstack?
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
outState.putLong("userId", mUserId);
outState.putString("username", mUsername);
}
Mein Problem ist, dass, wenn es eine Orientierungsänderung ist, da jedes Fragment im Backstack über onSaveInstanceState aufgerufen wird, ich null erhalten Zeigerausnahme, weil die Mitgliedsvariablen nicht mehr existieren.
Irgendwelche Ideen, wie man das löst?
können Sie Ihre Logcat-Fehlermeldung angeben? –
onSaveInstanceState wird aufgerufen, bevor die tatsächliche Änderung angewendet wird. Daher sollten Ihre Variablen beim Aufruf vorhanden sein, es sei denn, sie sind aufgrund anderer Fehler in Ihrem Code ungültig. Post mehr Code zusammen mit der Fehlerausgabe Formular Logcat. – Shade
Ich kann Ihnen versichern, dass meine Variablen in Ordnung sind. Ich denke, das Problem ist, dass meine Fragmente im Backstack nicht onSaveInstanceState aufgerufen werden, wenn sie abgerissen werden; onSaveInstanceState wird nur aufgerufen, wenn die Aktivität zerstört wird, aber meine Variablen nicht mehr existieren. Meine aktuelle Lösung ist also: "if (mUserId! = Null && mUsername! = Null) ...". Es ist nicht schön, aber es löst das Problem. Ich finde es seltsam, eine onSaveInstanceState-Methode für Fragmente zu haben, wenn sie nicht aufgerufen wird, wenn das Fragment abgebrochen wird. –