Überprüfen Sie, ob die Aktivität zum Ergebnis aufgerufen wurde

83

Ist es möglich zu wissen, ob eine Aktivität für das Ergebnis aufgerufen wurde, startActivityForResult()ob oder ob nur mit begonnen wurde startActivity()?

Ich muss das kontrollieren, wenn es nach einem Ergebnis verlangt, wird das Verhalten anders sein.

TiagoM
quelle

Antworten:

165

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

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

Siehe Dokumente für getCallingActivity():

Gibt den Namen der Aktivität zurück, die diese Aktivität aufgerufen hat. Dies ist, an wen die Daten setResult()gesendet werden. Mit diesen Informationen können Sie überprüfen, ob der Empfänger die Daten empfangen darf.

Hinweis: Wenn die aufrufende Aktivität kein Ergebnis erwartet (dh das startActivityForResult(Intent, int)Formular, das einen Anforderungscode enthält, nicht verwendet hat ), ist das aufrufende Paket null.

Kehrt zurück

Der Komponentenname der Aktivität, die Ihre Antwort erhalten soll, oder null, wenn keine.

Lopisan
quelle
1
Wenn Sie die Aktivität mit folgender Adresse starten: FLAG_ACTIVITY_NEW_TASK, funktioniert dies nicht :( (Ich musste die Anmeldeaktivität außerhalb des Kontexts in einem Fehlerbehandler starten.) Irgendwelche anderen Ideen? Danke!
bentzy
Dies funktioniert nicht, wenn die Aktivität mit einem Fragment gestartet wird: fragment.getActivity (). startActivityForResult (intent, requestCode);
Mario Lenci
@MarioLenci Es funktioniert richtig für mich. Egal ob ich es von Aktivität oder Fragment starte.
Robyer
@MarioLenci, denn wenn Sie sich in einem Fragment befinden, müssen Sie nicht getActivity().startActivityFor…von einem Fragment aus aufrufen , das Sie startActivityForResultdirekt ausführen müssen .
Martin Marconcini