Ü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.

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.