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

Lesezeit: 2 Minuten

Benutzer-Avatar
TiagoM

Ist es möglich zu wissen, ob eine Aktivität als Ergebnis aufgerufen wurde, indem Sie verwenden startActivityForResult() oder wenn nur mit der Verwendung begonnen wurde startActivity()?

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

Benutzer-Avatar
Lopisan

Als Ihre Aktivität gerade gestartet wurde startActivity() a getCallingActivity() -Methode in der Zielaktivität zurück null.

Als es angerufen wurde startActivityForResult() Es gibt den Namen der Anrufaktivität zurück.

Siehe Dokumente für getCallingActivity():

Gibt den Namen der Aktivität zurück, die diese Aktivität aufgerufen hat. Hier sind die Daten setResult() wird zugeschickt. Sie können diese Informationen verwenden, um zu überprüfen, ob der Empfänger die Daten erhalten darf.

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

Kehrt zurück

Der Komponentenname der Aktivität, die Ihre Antwort erhält, oder null, wenn keine vorhanden ist.

  • Wenn Sie die Aktivität mit: FLAG_ACTIVITY_NEW_TASK starten, funktioniert es nicht 🙁 (Ich musste die Anmeldeaktivität in einem Fehlerbehandler außerhalb des Kontexts starten). Irgendwelche anderen Ideen? Danke!

    – Benzy

    25. Juni 2014 um 12:26 Uhr

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

    – Mario Lenci

    25. August 2015 um 10:00 Uhr

  • @MarioLenci Bei mir funktioniert es richtig. Egal ob ich es von Aktivität oder Split starte.

    – Robyer

    24. Februar 2017 um 17:04 Uhr

  • @MarioLenci, denn wenn Sie sich in einem Fragment befinden, müssen Sie nicht anrufen getActivity().startActivityFor… aus einem Fragment, das Sie tun müssen startActivityForResult direkt.

    – Martin Marconcini

    28. August 2018 um 21:16 Uhr

Sie können einen booleschen Wert analysieren, indem Sie extra in eine Absicht einfügen.

//First Activity
Intent i = new Intent(FirstActivity.this, SecondActiviy.class);   
boolean isForResult = true;
i.putExtra("for-result", isForResult);

Dann erhalten Sie bei der zweiten Aktivität den Wert:

//Second Activity
boolean isForResult = getIntent().getBooleanExtra("for-result" , false);

Auf diese Weise wissen Sie mit einem globalen booleschen Wert, ob Sie eine Aktivität starten, um ein Ergebnis zu erhalten. Wenn Sie kein boolesches Extra setzen, ist der Standardwert falsch. Wich bedeutet.

//Not necesary at all.
boolean isForResult = false;

Sie müssen einen falschen booleschen Wert nicht analysieren.

1297760cookie-checkÜberprüfen Sie, ob die Aktivität als Ergebnis aufgerufen wurde

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy