안녕하세요
FLAG_ACTIVITY_FORWARD_RESULT를 사용중에 의문이 생겨서 질문드립니다.
흔히 예를 드는..
Activity A, B, C 가 있고
A가 B로 startActivityForResult(intent, 0);
B가 C로 FLAG_ACTIVITY_FORWARD_RESULT 하면..
당연히 c의 setResult()는 A가 받게 되는데..
이때 C에서 back key로 B로 이동하게 되면
위의 관계가 깨어지더군요.
이럴때에는 어떻게 처리를 해야 하는걸까요??????
다음검색
댓글
댓글 리스트-
작성자슈퍼성근 작성시간 14.02.17 안녕하세요.
A -> B -> C 에서 C가 A에게 인텐트를 전달하고 싶다면
이전키 등과는 무관합니다.
setResult를 최종적으로 어디서 했냐가 중요하지요.
만일 B ->C에서 FLAG_ACTIVITY_FORWARD_RESULT 설정한 상태에서
이전키를 눌러 B에서 다시 setResult()를 했다면 C에서 받은 인텐트를
최종으로 처리한 인텐트로 바뀌어 버립니다.
즉 C에서 setResult를 했고 A까지 가야 한다면
B에서 setResult를 하시면 안됩니다.
A->B->C 상태에서
C(setResult and finish) -> B(finish) -> A( C의 intent를 받게됨)
C(setResult and finish) -> B(setResult and finish) -> A( B의 intent를 받게됨)
이렇겠네요. -
작성자주룩주룩 작성자 본인 여부 작성자 작성시간 14.02.17 B에서는
Intent intent = new Intent(getActivity(), C.class);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
getActivity().startActivity(intent);
이렇게 C에게 결과를 넘기도록 되어 있습니다.
C에서만 setResult를 하게 (이때 B를 finish()) 되어 있구요.
C(finish [back key] ) -> B (다시 C에게 FLAG_ACTIVITY_FORWARD_RESULT)전달 -> 결과는 A가 result를 못 받음..
이렇게 되고 있네요.