재훈재훈
FLAG_ACTIVITY_FORWARD_RESULT - 세번째 액티비티에서 첫번째 액티비티로 결과 전달하기 본문
FLAG_ACTIVITY_FORWARD_RESULT - 세번째 액티비티에서 첫번째 액티비티로 결과 전달하기
jaehoonx2 2018. 4. 15. 18:39API에서 FLAG_ACTIVITY_FORWARD_RESULT 를 찾아보면 이렇게 적혀있다.
FLAG_ACTIVITY_FORWARD_RESULT : int
If set and this intent is being used to launch a new activity from an existing one,
then the reply target of the existing activity will be transferred to the new activity.
응답 타겟을 기존 존재하는 액티비티에서 새로운 액티비티로 넘겨준다는 주는 플래그이다.
어떤 의미인지 다시 쉽게 풀어써보자.
액티비티 A, B, C 가 존재한다.
A에서 startActivityforResult를 통해 B를 불러오면 B는 A에 대해 응답 타겟을 갖고 있다.
그런데 지금 이 B (existing activity)에서 FLAG_ACTIVITY_FORWARD_RESULT 를 사용해서
새로운 액티비티 C를 만들 수 있다. 이 때 A에 대한 응답 타겟도 C로 같이 넘어간다.
StartActivityForResult() // 원래대로라면
A에서 StartActivityForResult()로 B를 실행시켰다면,
B에서 setResult() 메소드를 통해 인텐트를 전달하고
A에서 onActivityResult()로 그 인텐트를 받는다.
FLAG_ACTIVITY_FORWARD_RESULT // 이 플래그를 사용한다면
A에서 B로는 넘어갈 때 StartActivityForResult()를 사용하고
B에서 C로 넘어갈 때는 이 플래그를 설정해주고 StartActivity()를 사용한다.(C에서 B로 돌아가지 않으니)
이렇게 되면 액티비티 A가 응답을 받고자 하는 대상을 B에서 C로 바꿀 수 있다.
즉 응답 타겟을 B에서 C로 넘기는 것이다.
그리고 최종적으로 C에서 setResult()를 호출하여 인텐트를 A로 보내고
A는 기존 onActivityResult() 메소드 그대로 사용하여 C에서 온 인텐트를 받을 수 있다.
다음은 FLAG_ACTIVITY_FORWARD_RESULT 를 사용했을 때 흐름이다.
Nav flow is: A => B => C => A with results from C If you're using fragments please note that "onActivityResult" will be called according to where "startActivityForResult" is called (method "startActivityForResult" is available in both, activity and fragment) ActivityA startActivityForResult(intentB, 22); ActivityB intentC.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(intentC); finish(); ActivityC setResult(99); finish(); 출처 : https://gist.github.com/mcelotti/cc1fc8b8bc1224c2f145
FLAG_ACTIVITY_FORWARD_RESULT 를 사용한 예시
https://github.com/operando/Intent-FLAG_ACTIVITY_FORWARD_RESULT-Sample
'Computer Engineering > Android' 카테고리의 다른 글
책 정보 입력기능 앱 만들기 (0) | 2018.05.06 |
---|---|
고객 정보 입력 화면 만들기 예제 (1) | 2018.04.15 |
프래그먼트(Fragment) (0) | 2018.04.09 |
Intent로 데이터 전달하기 (0) | 2018.04.07 |
SMS 문자 전송 화면 만들기 예제 ver.2 - 최대 바이트 수 제한 기능 (0) | 2018.04.07 |