2012-12-24 9 views
7

ich eine Tätigkeit annehmen „Activity A“ habe, die ich von zwei Möglichkeiten
a) StartActivity()
b beginnen) StartActivityForResult()
Jetzt habe ich einige Methoden haben, die unterschiedliche Verhaltensweisen haben für die Art und Weise Aktivität gestartet. Jetzt möchte ich erkennen, dass "Activity A" für das Ergebnis gestartet wird. Also meine Frage, wie wir erkennen können, dass die Aktivität für das Ergebnis gestartet wird? Ich möchte keine Daten durch Absicht senden. Jeder andere Weg verallgemeinert?Erkennen von Aktivität ist für Ergebnis begann

Vielen Dank.

+1

'Daten durch senden intent' sich die optimierte Art und Weise ist. –

Antwort

-1

einige boolean Extra- senden, wenn

intent.putExtra("mBool", true); 
startActivityForResult(intent); 

Abhängig von diesem Wert entsprechenden Aktionen werden durchgeführt unter Verwendung seiner genannt.

if(getIntent().hasExtra("mBool")){ 

//ForResult 
}else{ 

//default 
} 
+1

Imho, schlechte Lösung. Warum fügen Sie der Anwendung Komplexität hinzu, wenn Sie 'this.getCallingActivity()! = Null 'einfach überprüfen können? –

+0

Wie ich verstehe, können Sie die aufrufende Aktivität nur abrufen, wenn sie nach einem Ergebnis ruft. Falls die Aktivität keinen Ergebniswert aufruft, konnten Sie das Verhalten in Abhängigkeit von der aufrufenden Aktivität nicht ändern. Also, wenn Sie mehr als eine Aktivität haben, die eine andere anruft, können Sie nicht unterscheiden – Goot

+0

Bad anwser, da es keine native Android-Lösung –

1

Sie brauchen keine falschen Daten in Intent passieren. Aktivität hat Verfahren für Activity Start checking it getCallingPackage()

Aus der Dokumentation genannt wird:

Rückkehr der Name des Pakets, das diese Aktivität aufgerufen. Dies ist wer die Daten in SetResult() gesendet werden soll. Sie können diese Information verwenden, um zu überprüfen, dass der Empfänger die Daten empfangen darf.

10

Von this answer

Wenn Ihre Aktivität gestartet wurde gerade von startActivity() ein getCallingActivity() -Methode in Zielaktivität wird null zurück. Wenn es von startActivityForResult() aufgerufen wurde, wird der Name der Aufrufaktivität zurückgegeben.

Beispiel:

if (getCallingActivity() == null) { 
    //This Activity was called by startActivity 
} else { 
    //This Activity was called by startActivityForResult 
} 
+2

Sollte die richtige Antwort gewesen sein;) –

+0

Danke, es funktioniert perfekt +1 –

+0

es funktioniert nicht, wenn Intent.FLAG_ACTIVITY_NEW_TASK gesetzt ist – Hector

Verwandte Themen