onActivityResult 를 알아보기
Android 2015. 4. 1. 17:54http://developer.android.com/reference/android/app/Activity.html
1 | protected void onActivityResult (int requestCode, int resultCode, Intent data) | cs |
말 그대로 다른 Activity가 종료될 경우에 그 Activity로부터 requestCode, resultCode, data를 받아와 처리할 수 있는 메소드.
각 인자들의 의미는 아래에.
requestCode - startActivityForResult를 통해 전달된 requestCode로 결과값이 어떤 Activity로부터 전달되었는지 판단할 수 있게 한다.
resultCode - 자식 Activity의 setResult()를 통해 전달된 resultCode로 처리상태를 전달.
data - activity로부터 전달받은 data
요 메서드와 함께 사용하는 다른 친구메서드가 있는데 그 놈이 바로
1 | public void startActivityForResult (Intent intent, int requestCode) | cs |
Activify를 시작하면서 구분자 requestCode를 함께 전달할 수 있다.
구글 예제를 보면
1 2 3 4 5 6 7 | static final int PICK_CONTACT_REQUEST = 1; // The request code ... private void pickContact() { Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST); } | cs |
요런 식으로 Intent를 생성하여 startActivityForResult 메서드를 통해 intent, requestCode를 함께 전달하고 있다.
activity에서 전달받은 값들을 처리하는 코드를 보면..
1 2 3 4 5 6 7 8 9 10 11 12 13 | @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // Check which request we're responding to if (requestCode == PICK_CONTACT_REQUEST) { // Make sure the request was successful if (resultCode == RESULT_OK) { // The user picked a contact. // The Intent's data Uri identifies which contact was selected. // Do something with the contact here (bigger example below) } } } | cs |
앞서 startActivityForResult를 통해 전달한 requestCode의 처리결과 resultCode를 받기 위해 대기하고 있다.
RESULT_OK 뿐만 아니라 RESULT_CANCELED 정상처리가 되지 않았을 경우에 대응하는 코드도 작성할 수 있다.