2014-10-03 3 views
0

저는 잠시 동안 setResult (RESULT_OK, intent)를 사용하여 이상한 것을 경험했습니다. 활동에setResult는 시간의 대부분을 작동합니다

Intent intent = new Intent(); 
intent.putExtra(KEY_ENVIRONMENT_SURVEY, esurvey);  
setResult(RESULT_OK, intent); 
finish(); 

에 반환되는 대부분의 : 시간, 나는 다음과 같은 항상 실행되는 코드를 사용하여 그것에서 다음 종료 활동을 입력 시간의 약 3/4의 대부분은

시간은 RESULT_OK이 반환되지만, 때로는 매우 임의적으로 RESULT_CANCELLED가 반환됩니다. 무엇이 이것을 일으킬 수 있습니까? 설문 조사가 첨부되기 전에 finish()를 호출 할 수 있었는지 (parcelable) 기본값은 RESULT_CANCELLED입니까? 그렇다면 어떻게 해결할 수 있습니까? 처리기를 사용하여 postDelayed를 사용하거나 RESULT_OK가 설정되었는지 확인하십시오 (이 작업을 수행하는 방법을 모르므로 솔루션인지 확인하십시오).

감사합니다.

+0

"어떤 이유로 든 (예 : 충돌) 하위 활동이 실패하면 상위 활동은 RESULT_CANCELED 코드의 결과를 받게됩니다." http://developer.android.com/reference/android/app/Activity.html –

+0

네,하지만 그 활동은 대부분의 시간에 (내가 본 것에서 logcat에서 이상한 것이 없습니다) 무엇을 해야하는지를합니다. 이것이 원인인지 더 자세히 조사 할 필요가 있습니다. –

답변

-1

내 응용 프로그램에서 결함이 발견되어 다시 방문합니다. "뒤로"버튼은 내가 다음 활동으로 이동하도록 지정한 버튼에 매우 가깝습니다. 첫 단추 다음에 단추 누름이 등록되도록 허용 했으므로 때로는 활동이 "완료"단추를 눌러 완료 한 것처럼 보이지만 사실은 "뒤로"단추로 다시 탐색됩니다.

부울 플래그를 사용하여이 문제를 해결하고 butotn 프레스에서 true 였는지 확인한 다음 false와 같으면 true로 설정합니다.

0

이 코드를 오버라이드 finish() 메서드로 옮기십시오. 이렇게하면 활동이 끝날 때마다 호출됩니다.

@Override 
public void finish() { 
    Intent intent = new Intent(); 
    intent.putExtra(KEY_ENVIRONMENT_SURVEY, esurvey);  
    setResult(RESULT_OK, intent); 
    super.finish(); 
} 
+0

나는 이것을 시도 할 것이다. 이 코드 줄에있는 모든 것이 활동을 중단시킬 수 있다고 생각합니까? –

+1

@TomMcFarlin 아니요. 그들은 안전합니다. –