Ändern Absicht Bündeldaten, bevor eine Aktivität neu erstellt wird, nachdem Orientierungsänderung

StackOverflow https://stackoverflow.com/questions/1206418

  •  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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top