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

조회수 7499회

안드로이드에서 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.4.25 18:30

1 답변

  • 좋아요

    3

    싫어요
    채택 취소하기

    수정답변

    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값이 들어가고 있는것 같네요.

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

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)