마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

startActivityForResult 로 호출한 액티비티에서 Intent 데이터가 안넘어옵니다

0 추천

호출한 액티비티가 A.class 이고 호출된 액티비티가 B.class일 때,

 

B.class의 onDestory() 메소드 안에

@Override
protected void onDestroy() {
    if (result == 999) {
        result = -3;
        ResultObj = makeResultObj();
    }

    Intent intent = new Intent();
    intent.putExtra("result", ResultObj);
    setResult(RESULT_OK, intent);
    super.onDestroy();

}

이렇게 선언해줬습니다 .. 그런데

A.class 의 onActivityResult() 메소드를 통해

resultCode, requestCode는 잘 들어오지만

Intent.getExtra("result") 하면 NullPointException이 발생합니다.

B.class에서 ResultObj를 로그로 찍어보면 데이터가 잘 들어가있습니다.

문제가 뭔가요 ?

 

음무 (17,820 포인트) 님이 2016년 6월 24일 질문
죄송합니다만. 답변이아니라 질문입니다.왜 super.onDestory(); 위에 코드가 선언 되어있죠? 모든 부모선언은 제일 먼저 되어야 하는거 아닌가요? 구조가 이상합니다. 애러 없이  돌아가나요 ?
밑에 썼더니 안되길래 위로 올려봤습니다 .. onDestroy가 처리 되기 전에 실행하면 될까 해서 옮겨서 햇던 소스입니다. 실행은 정상적으로 됩니다
자세히는모르지만 onDestory 는 호출 시점을 보장하지 않아서 onDestory 에서 무엇을 선언하는것은 피해야한다고 알고있습니다 onStop에서도 선언 해보 셨나요 ?
onDestory 밖으로 빼니 정상적으로 작동하네요 감사합니다

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...