마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onActivityResult()의 return parameter들의 관하여.

0 추천

안녕하세요. 저는 안드로이드를 공부하고 있는 학생인데요,

이제까지는 그냥 썼는데 코딩을 하다가 갑자기 궁굼해서 질문 드립니다. 

 

onActivityResult()의 parameter로 requestCode, resultCode, intent 이렇게 3개를 받게 되는데, 

각 parameter의 용도가 궁굼합니다. 

 

책에보면 

if문으로 requestCode를 검사하기도 하고, 어떨땐 resultCode로 검사하기도 하더라구요. 

제 생각으로는 requestCode 하나만와도 intent를 잘 받았는지 유무를 판단할 수 있을것 같거든요. 

 

감사합니다. 

uuni (770 포인트) 님이 2016년 4월 20일 질문

1개의 답변

+2 추천
 
채택된 답변

requestCode : startActivityForResult의 요청 파라미터로 넘긴 값입니다.

따라서, 여러 startActivityForResult호출이 있을 때 어떤 요청인지 구분할 때 쓰이겠죠.

resultCode : 요청한 결과값입니다.

이는 startActivityForResult로 호출한 액티비티에서 setResult로 설정한 값입니다

뭐, 간단히는 실패 성공여부를 판별할 수 있겠지만, 쓰기 나름이죠.

intent : setResult에 intent를 넘길 수 있는데, 이때 넘어오는intent입니다.

단순히 결과 여부 말고, 다른 값들을 이전 액티비티에 전달할 때 쓰일수 있겠네요.

 

모나미153 (17,540 포인트) 님이 2016년 4월 20일 답변
uuni님이 2016년 4월 21일 채택됨
답변 감사합니다!
그런데 제가 궁굼한 포인트는 좀 다릅니다.
(질문을 좀더 상세히 했어야 했는데 죄송합니다..)

각각이 어떤 '의미'를 지니는지는 알고 있는데
어떤 상황에서 requestCode, resultCode가 각각 쓰이는지 궁굼합니다.

좀더 상세하게 말씀드리자면,
제 생각으로는 parameter로 requestCode와 intent만 있어도 'intent를 성공적으로 받았다'라고 판별할 기준이 될것 같은데 굳이 resultCode가 parameter로 존재하는 이유가 궁굼합니다.

좀더 세부적인 사례가 궁굼해요.
'반드시 '이런 상황'에 '이런 parameter'를 쓰는 경우가 있습니다~' 같이요.

감사합니다.
예를들면, 한 액티비티에서 startActivityForResult를 세번 호출하는데
이 호출이 각각 로그인, 정보 수정, 기타 작업이라고 가정하면
requestCode가 없을 경우, onActivityResult에서는 어떤 작업인지 알 수 없게 됩니다.
requestCode 1이 로그인, 2가 정보 수정, 3이 기타작업이라고 정해놓으면
onActivityResult에서 각각의 requestCode를 받아서 별도의 처리가 가능하겠죠.
이 부분에서 requestCode가 사용될수 있겠구요.

resultCode같은 경우, 단순히 성공 실패 외에도 여러 상황을 받는 경우가 생깁니다. 정하기 나름이기 때문이죠.
굳이 따지자면, startActivityForResult로 띄운 액티비티에서
성공 실패 외에 여러 분기 처리를 하고 싶을떄, resultCode를 사용할수 있습니다.
아아아 여러 activity를 처리하는경우 그런 일들이 일어날수 있네요!
명쾌한 답변 감사드립니다! :)
...