2016-11-03 2 views
-2

onActivityResult()가 올바른 요청 코드 및 null 의도 매개 변수로 호출되는 프로그램이 있습니다. 그리고 해당 활동이 setResult()를 호출하면 onactivityresult가 호출되지 않습니다. 에 startActivityForResult 다음에 호출하여 onActivityResult()()onActivityResult가 setResult 전에 호출되었습니다.

public void placeListActivity(View view) { 

    Intent placeListIntent = new Intent(this, 
      PlaceListActivity.class); 
    // startActivity(placeListIntent); 
    this.startActivityForResult(placeListIntent, 5); 
} 

protected void onActivityResult(int request, int result, Intent arg2) { 
    super.onActivityResult(request, result, arg2); 


    if (request == 5 && result == Activity.RESULT_OK) { 
     handleOnActivityResult(); 
    } 

두 번째 활동 : 당신은 너무 의도의 resultCode를 보내는

@Override 
public void onBackPressed() { 

    if(status){ 
     setResult(Activity.RESULT_OK); 
     finish(); 
    }else{ 
     super.onBackPressed(); 
    } 




} 
+0

[예] (http://www.javatpoint.com/android-startactivityforresult-example)를 확인하십시오. 당신이 뭔가 잘못하고있다, 여전히 당신이 코드를 게시하고 더 많은 설명, 안드로이드 onActivityResult() 버그없이 제대로 호출됩니다. –

+0

아래의 API 레벨 17에 대해서만이 문제가 발생합니다. –

+0

코드를 게시하십시오. 당신의 설명은 이해하기 어렵습니다. 무슨 일이 일어나고 어떤 일이 일어나야한다고 생각하는지 설명하십시오. –

답변

0
setResult(Activity.RESULT_OK); 

는 null를받을 수 있습니다. setResult 메소드의 resultCode와 함께 Intent를 두 번째 매개 변수로 전송하십시오. 당신은 첫 번째 활동에서 그 의도를 얻을 것입니다.

setResult method signature

참고 : - 활동의 발사 모드가 singleTask 또는 singleTop 경우, onActivityResult를가 즉시 활동이 데이터 null를 시작으로 호출됩니다. 이를 방지하려면 Intent.setFlags (0)를 사용하여 기본 플래그를 재설정하십시오.

+0

내 문제는 setResult 전에 호출 된 onActivityResult –

+0

이 문제는 일부 API 수준에 대해서만 ..이 작업을 시작했을 때 내 작업 실행 모드가 singleTop에서 singleTask.is로 변경되었습니다.이 corrct 방법? 대신 마무리'의 –

+0

는()') (super.onBackPressed'쓰기,' –

관련 문제