2011-08-08 2 views
10

requestCode 및 resultCode의 개념을 제대로 이해하고 있는지 궁금합니다. 기본적으로, 나는 활동과 연관된 임의의 정수 (requestCode)를 가졌다. 예를 들어, Notepad tutorial, 우리는Android : requestCode 및 resultCode

private static final int ACTIVITY_CREATE=0; 
private static final int ACTIVITY_EDIT=1; 

우리는 다음 예를 활동을 시작하기에 startActivityForResult (의도, requestCode가)를 사용하여이 "노트 작성"활동. 우리는 그 활동에서 무언가를하고 resultCode를 반환합니다.

상위 액티비티에서는 onActivityResult (requestCode, resultCode, intent)를 사용하여 resultCode를 감지합니다. 그런 다음 requestCode를 사용하여 반환되는 활동을 확인하고 resultCode를 사용하여 해당 활동의 결과를 확인하고 intent의 "extras"를 사용하여 반환 된 데이터를 가져올 수 있습니다.


RESULT_CANCELED와 같은 내장 resultCodes에 특별한 것이 있습니까? documentation on the developer site은 내장 된 결과가 단순히 정수임을 제시합니다.

그리고이게 정말 지저분해질 수 있다고 생각합니까? 예를 들어, 실행할 수있는 10 가지 활동이있는 경우 거대한 onActivityResult 함수를 사용하여 반환되는 활동을 확인할 수 있습니까?

답변

11

RESULT_CANCELED와 같은 내장 resultCode에 특별한 것이 있습니까? 개발자 사이트의 설명서에 따르면 은 내장 된 결과가 정수라고 제안합니다.

예. 이 코드는 "표준"응답입니다. 예를 들어, 시작한 활동이 RESULT_CANCELED (특히 OS 활동 또는 카메라와 같은 표준 응용 프로그램)을 반환하면 활동이 취소되었음을 의미합니다. 이 표준 결과는 문서에 따라 해석되어야합니다. 사실 그렇게하지 않을 강력한 이유가없는 한, 귀하의 활동은 이러한 표준 결과를 사용해야합니다 (다른 앱 개발자가 활동을 시작하는 것이 더 쉽도록).

그리고이게 정말 지저분해질 수 있다고 생각합니까? 예를 들어, 내가 에 실행할 수있는 10 가지 활동이 있다면, 거액의 onActivityResult 함수를 사용하여 어떤 활동이 반환되는지 확인해야합니다 ( ).

예. switch 문을 사용하여 처리하십시오.

+0

감사합니다. 정말 저를 위해 그것을 정리했습니다! –

+0

2 가지 이상의 표준 결과 코드를 사용해야하는 경우 첫 번째 사용자 정의 결과 코드를 'Activity.RESULT_FIRST_USER' 즉'static final int MY_RESULT = Activity.RESULT_FIRST_USER' 및 'static final int MY_OTHER_RESULT = MY_RESULT + 1'과 함께 시작하십시오. – kap

1

정수에는 특별한 것이 없습니다. 이러한 상수는 단순한 규칙입니다. onActivityResult는 결과를 처리 할 메서드에 전달하는 단일 switch 문일 수 있습니다 ... 거대한 필요가 없습니다. 물론 상징 상수를 사용하는 것이 당연합니다.

관련 문제