2011-07-03 9 views
7

사용자가 항목을 선택하려고하지만 사용자가 대신 항목을 선택하지 않고 뒤로 버튼을 클릭하도록 선택할 수있는 활동이 있습니다. 이 "항목 선택"활동은 startActivityForResult()로 시작됩니다.setResult를 RESULT_CANCELED로 명시 적으로 설정해야합니까?

두 가지가 궁금합니다. 첫째, 항목이 실제로 선택되었을 때 setResult (RESULT_OK)만으로 충분합니까? 즉, 명시 적으로 설정하지 않으면 결과가 RESULT_OK로 설정되지 않을 수 있습니까?

둘째, (초기화되지 않은) 결과에 의존하기에 충분하지 않은 경우 setResult()를 여러 번 호출 할 수 있습니다. 처음으로 결과를 RESULT_CANCELED로 "초기화"한 다음 SetResult (RESULT_OK) 사용자가 항목을 선택하고 활동을 마치기 전에? documentation에서

답변

9

는 :

(예 : 충돌과 같은) 자식 활동이 어떤 이유로 실패 할 경우

의 부모 활동은 코드 RESULT_CANCELED로 결과를 받게됩니다.

그래서 결과는 명시 적으로 다른 코드를 지정하지 경우, 이미 RESULT_CANCELED입니다. 사용자가 앱을 '뒤로'버튼을 통해 종료하면 RESULT_CANCELED도 수신됩니다.

+0

나는 설명서에서이 질문을 보았습니다. 내가 기술하고있는 경우는 그 활동이 "실패"하는 것이 아니다. 안드로이드 API 문서에서는 RESULT_CANCELED가 기본값이라는 안전한 가정이며 setResult를 두 번 이상 호출해도 괜찮은지 명확하지 않습니다. –

+0

onActivityResult 메서드에 대한 문서의 또 다른 줄은 "활동이 명시 적으로이를 반환하거나 결과를 반환하지 않았거나 작업 중에 충돌 한 경우 resultCode는 RESULT_CANCELED가됩니다." 따라서 결과를 반환하지 않으면 사용자가 뒤로 버튼으로 활동을 종료하기 전에 결과가 RESULT_CANCELLED입니다. – Dirol

+0

setResult를 두 번 이상 호출하려고합니다. 실제로는 doc에서 정의되지 않았습니다. 그래서 나는 그것에 의지하지 않을 것입니다. 현재 API에서 작동 할 수 있다고해도 향후에는 작동 할 것이라는 보장은 없습니다. – Dirol

1

ActivitysetResult(RESULT_CANCELED)을 사용할 수 있으며 finish()으로 전화 할 수 있습니다.

결과 코드가 취소 된 경우 앞에서 설명한대로 OnActivityResult을 재정의하십시오.

관련 문제