단순히 Activity 를 호출 할 때에는 startActivity(Intent intent)를 사용 하지만, Activity 호출 후 호출한 Activity 종료 시 결과 값을 호출한 Activity가 받기 위해서는 startActivityForResult(Intent intent, int requestCode) 를 사용 해야 합니다.
startActivityForResult(Intent intent, int requestCode) 사용 예제
MainActivity 에서 종료 버튼을 누르거나, 메뉴 하드 키를 누르는 2가지 경우 모두 Password Actvity를 호출 하여 암호를 입력 할 수 있도록 하고자 startActivity() 메소드를 사용 하니 Password Activity가 호출은 되나 종료 버튼을 눌러서 호출이 된건지, 메뉴 하드 키를 눌러서 호출이 된 건지 구분 할 방법이 없었습니다. (물론 방법이야 있지만요 ㅎ)
따라서 이런 경우 사용 하기에 적합한 startActivityForResult(Intent intent, int requestCode)를 사용 하였습니다.
Intent로 호출할 Activity를 지정 하고, int requestCode를 Parameter 로 전달
전달된 requestCode 값을 확인 하여 Password Activity를 누가 호출 했는지 확인 하고, 그에 맞는 처리를 할 수가 있었습니다.
지금 제가 사용한 예는 호출된 Activity가 누구로 부터 호출이 되었는지 확인한 예이고,
실제로 data를 넘기기 위해서는 Intent.putExtra() 메소드를 사용 합니다.
ex). Intent intent = getIntent(); // 이 인텐트를 호출한 인텐트를 반환
Intent 객체를 생성 하고,
intent.putExtra(String password, _value);
Intent에 들어 가는 data는 "key" 역할을 하는 password와 그에 해당 하는 값인 _value가 작을 이루어 저장이 됩니다.
호출 당한 Activity가 정상적으로 끝났음을 알리기 위해서는 setResult(RESULT_OK, intent) 호출로 이루어 집니다.
이런 과정을 진행 후 호출 당한 Activity가 finish() 메소드에 의해 종료 된다면, onActivityResult() 가 호출 됩니다.
사용 예제 소스)
Intent 객체를 생성 하고,
intent.putExtra(String password, _value);
Intent에 들어 가는 data는 "key" 역할을 하는 password와 그에 해당 하는 값인 _value가 작을 이루어 저장이 됩니다.
호출 당한 Activity가 정상적으로 끝났음을 알리기 위해서는 setResult(RESULT_OK, intent) 호출로 이루어 집니다.
이런 과정을 진행 후 호출 당한 Activity가 finish() 메소드에 의해 종료 된다면, onActivityResult() 가 호출 됩니다.
사용 예제 소스)
- resultCode는 호출된 Activity 가 정상적으로 종료가 되었을 경우에 RESULT_OK 값을 갖습니다.
이는 위에서 말한 setResult() 메소드에 의해 셋팅 됩니다.
- requestCode 값을 이용해 password Activity가 호출된 위치를 확인 하고, 각 호출 위치에 맞는 다음 메소드를 호출 할 수가 있습니다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드] Google Cloud Messaging For Android(GCM)(1) (0) | 2012.08.01 |
---|---|
[안드로이드] 클릭 한 번으로 Default Home 해제 (0) | 2011.01.13 |
[안드로이드] String 문자열 공백 제거 및 언어 구분 (0) | 2010.12.17 |
[안드로이드] 키즈락 (0) | 2010.12.14 |
[안드로이드] 안드로이드 어플리케이션의 특징 과 아키텍쳐 (0) | 2010.12.13 |