gpt4 book ai didi

android - 为什么我使用相机传递结果 ResultInfo 失败?

转载 作者:行者123 更新时间:2023-11-29 15:23:27 25 4
gpt4 key购买 nike

我是 android 开发的菜鸟,我无法返回相机拍摄的图像。当我垂直/纵向拍照时,我的应用程序运行正常,但是当我水平/横向拍照时,应用程序崩溃并出现错误,提示 Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null } 。我调整了输出图片的宽度和高度,但没有成功。非常感谢任何帮助。

我的代码

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (resultCode == RESULT_OK) {
//check if we are returning from picture selection
if (requestCode == PICKER) {

//the returned picture URI
// Uri pickedUri = data.getData();

//declare the bitmap
Bitmap pic = null;
//declare the path string
String imgPath = "";

//retrieve the string using media data
String[] medData = { MediaStore.Images.Media.DATA };
//query the data
Cursor picCursor = managedQuery(outputFileUri, medData, null, null, null);
if(picCursor!=null)
{
//get the path string
int index = picCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
picCursor.moveToFirst();
imgPath = picCursor.getString(index);
}
else
imgPath = outputFileUri.getPath();

//if and else handle both choosing from gallery and from file manager

//if we have a new URI attempt to decode the image bitmap
if(outputFileUri!=null) {

//set the width and height we want to use as maximum display
int targetWidth = 600;
int targetHeight = 400;

//sample the incoming image to save on memory resources

//create bitmap options to calculate and use sample size
BitmapFactory.Options bmpOptions = new BitmapFactory.Options();

//first decode image dimensions only - not the image bitmap itself
bmpOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imgPath, bmpOptions);

//work out what the sample size should be

//image width and height before sampling
int currHeight = bmpOptions.outHeight;
int currWidth = bmpOptions.outWidth;

//variable to store new sample size
int sampleSize = 1;

//calculate the sample size if the existing size is larger than target size
if (currHeight>targetHeight || currWidth>targetWidth)
{
//use either width or height
if (currWidth>currHeight)
sampleSize = Math.round((float)currHeight/(float)targetHeight);
else
sampleSize = Math.round((float)currWidth/(float)targetWidth);
}
//use the new sample size
bmpOptions.inSampleSize = sampleSize;

//now decode the bitmap using sample options
bmpOptions.inJustDecodeBounds = false;

//get the file as a bitmap
pic = BitmapFactory.decodeFile(imgPath, bmpOptions);

if(currentPic<=10){
//pass bitmap to ImageAdapter to add to array
imgAdapt.addPic(pic);
currentPic++;
}

//redraw the gallery thumbnails to reflect the new addition
picGallery.setAdapter(imgAdapt);

//display the newly selected image at larger size
picView.setImageBitmap(pic);
//scale options
picView.setScaleType(ImageView.ScaleType.FIT_CENTER);
}
}
}
//superclass method
super.onActivityResult(requestCode, resultCode, data);
}

洛格卡特

04-03 08:26:46.113: E/AndroidRuntime(15318): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=null} to activity {com.example.pickenssurvey/com.example.pickenssurvey.PictureGallery}: java.lang.NullPointerException
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.app.ActivityThread.deliverResults(ActivityThread.java:3179)
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2534)
04-03 08:26:46.113: E/AndroidRuntime(15318): ... 13 more
04-03 08:26:46.113: E/AndroidRuntime(15318): Caused by: java.lang.NullPointerException
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.content.ContentResolver.acquireProvider(ContentResolver.java:913)
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.content.ContentResolver.query(ContentResolver.java:305)
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.app.Activity.managedQuery(Activity.java:1742)
04-03 08:26:46.113: E/AndroidRuntime(15318): at com.example.pickenssurvey.PictureGallery.onActivityResult(PictureGallery.java:241)
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.app.Activity.dispatchActivityResult(Activity.java:4723)
04-03 08:26:46.113: E/AndroidRuntime(15318): at android.app.ActivityThread.deliverResults(ActivityThread.java:3175)

最佳答案

当您的屏幕方向发生变化时,您的 Activity 将被销毁并以新的方向重新创建。因此,在 Activity 的生命周期中获得引用的任何变量将不再引用任何内容,如果您随后尝试访问它们引用的对象而不重新分配它们的值,您将得到 NullPointerException。

方法 onSaveInstanceState() 用于保存配置更改之间的临时数据。这会创建一个 Bundle,当 Activity 再次启动时,它会传递给 onCreate()。

没有任何代码,我不知道这是不是你的问题,但值得一看。

参见 http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges了解更多信息(毫无疑问,比我提供的信息更准确)。

不是我从其他帖子复制过来的

关于android - 为什么我使用相机传递结果 ResultInfo 失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15787915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com