2012-06-25 31 views
0

在我的應用程序中,它捕獲了一些圖像,當我點擊一個按鈕。當我第一次點擊這個按鈕後,相機意圖打開之後,onActivityResult被應用程序調用,然後onResume方法被應用程序調用,每件事情都很好。但是當我第二次點擊按鈕時,應用程序會調用相機意圖,但在應用程序調用onCreate方法之後,再調用onActivityResult方法。我不知道爲什麼onCreate方法被程序調用。正因爲如此,我的程序出現了一些錯誤。Android:調用第二次onActivityResult拋出錯誤

代碼(當按鈕被點擊的調用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 
+1

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

回答

1

它看起來像你不救out1上的活動生命週期回調。使用onSaveInstanceState()onRestoreInstanceState()保存/恢復其值。

以下是有關活動狀態處理的更詳細說明:Saving Activity State

+0

thanx @Arhimed ..你能解釋一下嗎? –

+0

我添加了一個指向的鏈接,你在哪裏可以找到解釋。 –

+1

基本上,操作系統重新創建您的活動實例(有很多原因 - 比如設備配置更改或內存需求)是正常的,您只需要正確保存和恢復狀態以避免空指針異常。 –

相關問題