【发布时间】:2011-09-05 18:30:39
【问题描述】:
可能重复:
I'm getting a NullPointerException when I use ACTION_IMAGE_CAPTURE to take a picture
我有一些代码。
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
File photo = new File(CamDir, filename);
imageUri = Uri.fromFile(photo);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
startActivityForResult(intent, 0);
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Bitmap bitmap = null;
if (resultCode == Activity.RESULT_OK && requestCode == 0) {
Uri selectedImage = imageUri;
ContentResolver cr = getContentResolver();
bitmap = android.provider.MediaStore.Images.Media.getBitmap(cr, selectedImage);
}
1.手机处于垂直位置。
2.启动应用程序。
3.按下按钮拍照。
4.按确定。 (保存照片)
一切都很好。
1.手机处于垂直位置。
2.启动应用程序。
3.按下按钮拍照。
4.将手机旋转到水平位置。
5.按确定。 (保存照片)
有错误
E/AndroidRuntime(22779): java.lang.RuntimeException: Failure delivering result
ResultInfo{who=null, request=0, result=-1, data=null} to activity
com.photo/com.photo.PhotoActivity}:
java.lang.NullPointerException
我认为当我将手机旋转到水平位置时,意图被重新加载,而相机没有
知道将结果发送到哪里。
如何解决这个问题。
解决方案:
onActivityResult(...){
...
reload()
}
public void reload()
{ Intent intent = getIntent(); overridePendingTransition(0, 0);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
overridePendingTransition(0, 0);
startActivity(intent);
}
【问题讨论】:
-
你是怎么解决你的问题的,我现在也面临同样的问题。
-
我曾希望重新加载的东西对我有用,但实际上它似乎重新加载了活动,而不是做一些真正有用的事情。它也丢弃了拍照的结果,包括我没有明确保留和重新加载的任何数据,而且它仍然在大约一半的时间内崩溃。
标签: android