簡體   English   中英

Android:第二次調用onActivityResult引發錯誤

[英]Android: Calling Second time onActivityResult throw error

在我的應用程序中,當我單擊按鈕時它會捕獲一些圖像。 當我第一次單擊此按鈕時,在應用程序調用onActivityResult之后打開相機Intent,然后由應用程序調用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方法,所以如果(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

看來您沒有在活動生命周期回調中節省out1 使用onSaveInstanceState()onRestoreInstanceState()保存/恢復其值。

這是有關活動狀態處理的更詳細說明: 保存活動狀態

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM