안드로이드 startActivityForResult 질문입니다.
조회수 7501회
안드로이드에서 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으로만 들어옵니다.ㅠ
1 답변
-
수정답변
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값이 들어가고 있는것 같네요.
댓글 입력