티스토리 뷰

뒤로가기 버튼이 내 앱을 죽인다!!

이상한 현상이다. 액티비티가 전환된 후 뒤로가기 버튼을 누르면 앱이 종료된다. 그런데 앱 안에 만들어논 뒤로가기 버튼을 누르면 별 이상이 없는 것이다. 분명히 제대로 잘 동작하던 기능이었는데 무엇이 문제일까?? 난 아무잘못이 없다고....(정말?)

일단 뒤로가기 버튼을 막아보자

이유는 뭔지 잘 모르겠고 앱이 죽어버리는 건 짜증이 나고...일단은 뒤로가기 버튼 기능을 막던지 수정하던지 해봐야 겠다.

	@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() 오버라이드는 다시 삭제한다.

댓글