안드로이드 startActivityForResult 질문입니다.


안드로이드에서 startActivityForResult로 A라는 엑티비티에서 B라는 엑비티비로 보냈습니다.

B엑티비티에서 화면이 종료될때 setResult로 result값을 설정해서 보내줬는데

A엑티비티에서 result값이 0으로만 나옵니다

실제로 보낸값은 1000 / 1001 두개중에 하나만 나와야 하는데

인텐트값도 null로 나오는데 로그상으로는 이상한로그가 찍히는게 없는데

어떤문제인지 도무지 감이 안잡힙니다..

혹시 이런경험이 있으신분은 도움쫌 부탁드립니다.

Blockquote 스타트 액티비티 보내는부분

    Intent cIntent = new Intent(Activity_searchs.this, Activity_Search_Result.class);
    cIntent.putExtra("SearchWord", s);
    cIntent.putExtra("is_store", isStore);
    startActivityForResult(cIntent, 7777);

Blockquote setResult부분

    mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (LMain.refreshFlag) {
                        setResult(nResult);
                    }
                    finish();
        }
    });

onActivityResult부분

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Log.e("SJW", "RequestCode > "+requestCode+" / resultCode > "+resultCode);
        if(requestCode == 7777){
            if(resultCode == 1001){
                finish();
            }
        }
    }

이렇게 되있습니다.

onActivityResult부분에 resultCode가 항상 0으로만 들어옵니다.ㅠ

  • 2016년 04월 25일에 작성됨

  • 답변을 수정했습니다.    정두식   2016.4.25 18:30     
조회수 959


1 답변


좋아요
2
싫어요
채택취소하기

수정답변

setResult의 첫번째 매개변수는 RESULT_CANCELED나 RESULT_OK같은 값을 전달하기 위한 값입니다. 결과를 값으로 전달하고 싶다면 아래와 같이 setResult하세요.

Intent returnIntent = new Intent();
returnIntent.putExtra("result",1000);
setResult(RESULT_OK,returnIntent);
finish();

값을 읽어오는 쪽에서는 data.getIntExtra("result",0);로 읽어오시면 됩니다. 0은 값을 못읽어올 경우의 default값이에요.


질문을 수정해서 SetResult하는 부분의 코드와 onActivityResult 코드를 올려주실 수 있을까요? result값이 0으로 나오는걸 보면 getIntExtra에서 default값이 들어가고 있는것 같네요.

  • 2016년 04월 25일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 감사합니다~ 제가 setResult에 대해서 잘 모르고 사용 했었나보네요 ㅠㅠ 덕분에 많이 알게됬습니다~ 감사합니다~    손진우   2016.4.26 08:58     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close