Ändern Absicht Bündeldaten, bevor eine Aktivität neu erstellt wird, nachdem Orientierungsänderung
-
05-07-2019 - |
Frage
Ich habe eine Benachrichtigung, dass meine Tätigkeit beginnt und übergibt eine Nachricht der Absicht des putExtra () Funktion. Die Nachricht wird dann in der Tätigkeit der onCreate Funktion für den Benutzer angezeigt. Wenn die Anwendung aufgrund einer Orientierungsänderung neu gestartet wird, wird die Nachricht wieder angezeigt, wie es noch in der Absicht der gebündelten Daten vorhanden ist.
Wie kann ich die zusätzlichen Daten entfernen?
Ich habe versucht, die folgenden:
Bundle bundle = getIntent().getExtras();
if (bundle.getBoolean("showMessage")) {
// ... show message that is in bundle.getString("message")
// remove message
bundle.remove("showMessage");
}
Aber die Botschaft wird noch gezeigt werden, nachdem die Ausrichtung geändert, scheint, wie die verwendete Absicht nicht derjenige ist, ich geändert, aber die ursprüngliche. Die einzige Abhilfe, die ich gefunden ist, die zusätzlich in onSaveInstanceState()
showmessage zu speichern.
Gibt es eine andere Art und Weise? Oder ist dies der Weg zu gehen?
Lösung
Die (einfache) Lösung ist:
Statt Aufruf
bundle.remove("showMessage");
ich jetzt verwenden
getIntent().removeExtra("showMessage");
, die wie erwartet funktioniert. Scheint, wie getIntent (). GetExtras () eine Kopie zurückgibt, keine Referenz.
Andere Tipps
Ihr onSaveInstanceState()
Ansatz ist die richtige Antwort, AFAIK.