Android:第二次调用onActivityResult抛出错误

时间:2012-06-25 12:51:42

标签: java android android-intent oncreate android-camera-intent

在我的应用程序中,当我点击按钮时它会捕获一些图像。当我第一次单击此按钮然后相机打开之后,应用程序调用onActivityResult,然后应用程序调用onResume方法,每个工作正常。但是当我第二次点击按钮时,应用程序会调用相机意图,但在该应用程序之后调用onCreate方法然后调用onActivityResult方法。我不知道为什么onCreate方法被程序调用。因此,我的程序会抛出一些错误。

代码(单击按钮时调用addPhoto方法):

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):

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() ***");
}

因为程序在onActivityResult之前调用onCreate方法,所以行 if(out1!= null&& out1.exists()){

的抛出错误

我不知道我需要做什么。

错误讯息:

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 个答案:

答案 0 :(得分:1)

看起来您没有将out1保存在活动生命周期回调中。使用onSaveInstanceState()onRestoreInstanceState()保存/恢复其值。

以下是有关活动状态处理的更详细说明:Saving Activity State