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:
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.
getActivity().startActivityFor…
z fragmentu, który musisz zrobić startActivityForResult
bezpośrednio.