2013-05-25 5 views
55

Ist es möglich zu wissen, ob eine Aktivität für ein Ergebnis aufgerufen wurde, unter Verwendung von startActivityForResult() oder wenn nur mit startActivity() gestartet wurde?Prüfen, ob Aktivität für Ergebnis aufgerufen wurde

Ich muss dies steuern, wenn es für Ergebnis aufgerufen wird, wird das Verhalten anders sein.

Antwort

117

Wenn Ihre Aktivität nur durch startActivity() gestartet wurde, wird eine getCallingActivity() Methode in der Zielaktivität null zurückgeben.

Wenn es von startActivityForResult() aufgerufen wurde, wird der Name der aufrufenden Aktivität zurückgegeben.

Siehe Text & Tabellen für getCallingActivity():

Rückkehr der Name der Aktivität, die diese Aktivität aufgerufen. Dies ist , an die die Daten in setResult() gesendet werden. Sie können diese Information verwenden, um zu überprüfen, dass der Empfänger die Daten empfangen kann.

Hinweis: Wenn die anrufende Aktivität nicht ein Ergebnis erwartet (dass es nicht die startActivityForResult(Intent, int) Form verwendet hat, dass einen Anforderungscode enthält), dann das anrufende Paket null sein wird.

Returns

Die Component der Aktivität, die Ihre Antwort erhalten wird, oder null, wenn keine.

+0

das ist was ich brauche :) Danke! – TiagoM

+0

Wenn Sie die Aktivität mit: FLAG_ACTIVITY_NEW_TASK starten, funktioniert es nicht :((Ich musste die Login-Aktivität in einem Fehler-Handler aus dem Zusammenhang starten.) Irgendwelche anderen Ideen? Danke! – bentzy

+0

dies funktioniert nicht, wenn die Aktivität ist gestartet mit einem Fragment: fragment.getActivity(). startActivityForResult (intent, requestCode); –