2012-11-14 11 views
10

Diese Frage ähnelte meiner ursprünglichen Frage, aber ich denke, es gibt einen besseren Weg, eine Lösung zu erreichen.So erhalten Sie getIntent(), um null zurückzugeben, nachdem die Aktivität mit einem Intent-Satz aufgerufen wurde

getIntent returns wrong intent when setIntent is followed by a rotation

Grundsätzlich in meinem Haupt Activity, die FragmentActivity erstreckt, gibt es zwei Fälle, in denen in einem Fragment ich eine Absicht dieser Aktivität übergeben.

Dies ist der Code, der das Problem mit:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(...); 

    if (getIntent() != null && getIntent().getData() != null) { 
     String data = getIntent().getDataString(); 
     //setIntent(null); 

Der setIntent war ein Versuch, mein Problem zu lösen, aber es versäumt zu arbeiten.

Was passiert, wenn ich auf einen Link klicke, der zu meiner Aktivität als Absicht zurückkehrt, dann gehe ich zum nächsten Fragment, dann drehe ich das Telefon, die Absicht, die zwei Fragmente vor sich gebracht hat, taucht wieder auf, wenn ich Anruf getIntent.

Also, wenn ich die Daten aus dem Intent bekomme, wie kann ich es so einstellen, dass der nächste Anruf an Null zurückgibt? Oder wäre es sinnvoll, die Daten in der Absicht stattdessen null zu haben?

Ich versuche zu vermeiden, Informationen in den SharedPreferences zu aktualisieren, um damit umzugehen.

Antwort

12

Ich fand eine Lösung, die zu funktionieren scheint, aber ich erwarte, dass es einen besseren Weg gibt, es zu tun.

if (getIntent() != null && getIntent().getData() != null) { 
     String data = getIntent().getDataString(); 
     getIntent().setData(null); 
     setIntent(null); 

Ich denke, die setIntent nicht von Nutzen ist, aber die setData(null) scheint den Trick zu tun.

Verwandte Themen