2012-06-25 30 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

基本上,操作系统重新创建您的活动实例(有很多原因 - 比如设备配置更改或内存需求)是正常的,您只需要正确保存和恢复状态以避免空指针异常。 –

相关问题