티스토리 뷰
뒤로가기 버튼이 내 앱을 죽인다!!
이상한 현상이다. 액티비티가 전환된 후 뒤로가기 버튼을 누르면 앱이 종료된다. 그런데 앱 안에 만들어논 뒤로가기 버튼을 누르면 별 이상이 없는 것이다. 분명히 제대로 잘 동작하던 기능이었는데 무엇이 문제일까?? 난 아무잘못이 없다고....(정말?)
일단 뒤로가기 버튼을 막아보자
이유는 뭔지 잘 모르겠고 앱이 죽어버리는 건 짜증이 나고...일단은 뒤로가기 버튼 기능을 막던지 수정하던지 해봐야 겠다.
@Override public void onBackPressed() { // super.onBackPressed(); setResult(RESULT_OK, callIntent); finish(); }
onBackPressed()를 오버라이드 하고, super.onBackPressed()는 막아버리고, 취소버튼을 눌렀을 때 동작부분을 복사하고...
일단 동작은 제대로 굴러가는데....뭔가 찜찜하다....
가만히 살펴보니 뒤로가기 버튼이 안먹히는 부분은 startActivityForResult 로 호출한 액티비티에서였다....그렇다면 혹시...
onActivityResult 니가 문제였어!!
혹시나 했던것이 역시나였다...ㅎㅎ
onActivityResult 부분에서 호출했던 액티비티를 처리할 때 resultCode 값을 고려하지 않았던 것이다.
수정전
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case EDIT: long id = data.getLongExtra("EDIT_ID", -1); ....... break; default: break; } }
수정 후
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case EDIT: if(resultCode==RESULT_OK){ long id = data.getLongExtra("EDIT_ID", -1); ........ } break; default: break; } }
원인은 뒤로가기 버튼을 눌렀을 경우 Intent data 가 null 인데, 거기서 data.getLongExtra("EDIT_ID", -1); 하니 에러가 날 수 밖에 없었던 것이다.
음..어찌됐던 원인을 발견해서 답답함이 풀렸다. 필요없는 onBackPressed() 오버라이드는 다시 삭제한다.
댓글