Sprawdź, czy działanie zostało wywołane w celu uzyskania wyniku


83

Czy można wiedzieć, czy jakaś aktywność została wywołana w celu uzyskania wyniku, użycia, startActivityForResult()czy też została dopiero rozpoczęta startActivity()?

Muszę to kontrolować, jeśli wywoływany jest wynik, zachowanie będzie inne.

Odpowiedzi:


166

Gdy działalność rozpoczęła właśnie przez metoda aktywności docelowej wróci .startActivity()getCallingActivity()null

Kiedy został wywołany startActivityForResult(), zwróci nazwę czynności wywołującej.

Zobacz Dokumenty dla getCallingActivity():

Zwróć nazwę działania, które wywołało to działanie. To do kogo setResult()zostaną przesłane dane. Możesz użyć tych informacji, aby potwierdzić, że odbiorca może otrzymać dane.

Uwaga: jeśli działanie wywołujące nie oczekuje wyniku (to znaczy nie używa startActivityForResult(Intent, int)formularza zawierającego kod żądania), pakiet wywołujący będzie miał wartość null.

Zwroty

ComponentName działania, na które zostanie wysłana odpowiedź, lub wartość null, jeśli jej nie ma.


1
Jeśli rozpoczniesz działanie od: FLAG_ACTIVITY_NEW_TASK, to nie działa :( (musiałem rozpocząć aktywność logowania poza kontekstem w module obsługi błędów). Jakieś inne pomysły? Dzięki!
bentzy

to nie działa, jeśli aktywność jest uruchamiana fragmentem: fragment.getActivity (). startActivityForResult (intent, requestCode);
Mario Lenci,

@MarioLenci U mnie działa poprawnie. Nieważne, czy zacznę od działania, czy fragmentu.
Robyer

@MarioLenci, ponieważ kiedy jesteś we fragmencie, nie musisz dzwonić getActivity().startActivityFor…z fragmentu, który musisz zrobić startActivityForResultbezpośrednio.
Martin Marconcini
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.