0

私のアプリケーションでは、ボタンをクリックするといくつかの画像がキャプチャされます。このボタンを最初にクリックすると、カメラのインテントが開き、その後、アプリケーションによってonActivityResultが呼び出され、アプリケーションによって呼び出されたonResumeメソッドがすべて正常に機能します。しかし、ボタンを2回クリックすると、アプリケーションによってカメラインテントが呼び出されますが、その後、アプリケーションは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() ***");
}

Code(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
4

1 に答える 1

1

out1アクティビティのライフサイクルコールバックを節約していないようです。onSaveInstanceState()およびを使用しonRestoreInstanceState()て、その値を保存/復元します。

アクティビティ状態の処理に関する詳細な説明は次のとおりです。アクティビティ状態の保存

于 2012-06-25T12:57:25.937 に答える