0

내 애플리케이션에서 버튼을 클릭하면 일부 이미지가 캡처됩니다. 이 단추를 처음 클릭하면 카메라 의도가 열리고 그 후에 onActivityResult가 응용 프로그램에 의해 호출 된 다음 응용 프로그램에서 호출되는 onResume 메서드가 제대로 작동합니다. 하지만 단추를 두 번 클릭하면 카메라 의도가 응용 프로그램에 의해 호출되지만 그 응용 프로그램은 onCreate 메서드를 호출 한 다음 onActivityResult 메서드를 호출합니다. onCreate 메서드가 프로그램에서 호출 된 이유는 모르겠다. 그리고이 때문에 내 프로그램이 약간의 오류를 던졌습니다.Android : 두 번째 호출 onActivityResult throw 오류

코드 (버튼 addPhoto 메소드를 호출하는 클릭하면) : 프로그램이 라인 경우에 onActivityResult를 자사 던져 오류 전에 방법에서 onCreate 호출하기 때문에

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    System.out.println("*** onActivityResult() ***"); 

    if (out1 != null && out1.exists()) { 
     // some code 
    } 
    //some code 
    System.out.println("*** End of onActivityResult() ***"); 
} 

:

protected void addPhoto() { 
System.out.println("*** addPhoto() ***"); 

    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    out1 = Environment.getExternalStorageDirectory(); // out1 is initialized as File out1 = null; 
    photoDateString = new DateClass().getCurrentDateAndTime();//this line give current date and time as photo name 
    out1 = new File(out, "xxx/images/" + photoDateString + ".jpg"); 
    i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(out1)); 
    startActivityForResult(i, CAMERA_REQUEST); 

System.out.println("*** End of addPhoto() ***"); 
} 

코드 (onActivityResult를) (out1! = null & & out1.exists()) {

내가 뭘해야할지 모르겠다.

오류 메시지 : 당신이 활동 라이프 사이클 콜백에 out1를 저장하지 않는 것처럼

java.lang.RuntimeException: Unable to resume activity {com.pxxl.android.lxxxy/com.pxxl.android.lxxxy.FirstActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1888, result=-1, data=null} to activity {com.pxxl.android.lxxxy/com.pxxl.android.lxxxy.FirstActivity}: java.lang.NullPointerException 
+1

if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) – SKT

답변

1

것 같습니다. onSaveInstanceState()onRestoreInstanceState()을 사용하여 값을 저장/복원하십시오.

다음은 활동 상태 처리에 대한 자세한 설명입니다. Saving Activity State.

+0

thanx @Arhimed .. 만약 당신이 간단한 설명이나 코드로 설명해 주시겠습니까? –

+0

나는 가이드에 대한 링크를 추가했습니다. 설명을 찾을 수 있습니다. –

+1

기본적으로 OS가 활동 인스턴스를 다시 생성한다는 것은 기본적으로 좋습니다 (장치 설정 변경 또는 메모리 요구와 같은 많은 이유가 있음). 널 포인터 예외를 얻지 못하도록 상태를 올바르게 저장하고 복원하면됩니다. –

관련 문제