【问题标题】:Java/Android Studio - Failure delivering result ResultInfoJava/Android Studio - 传递结果 ResultInfo 失败
【发布时间】:2018-07-19 04:55:21
【问题描述】:

在我的应用中,用户可以选择从照片库中选择图像或使用相机拍照。但是,当用户选择要使用的照片时(当他们点击它时),应用程序崩溃并且日志中出现此错误 -

java.lang.RuntimeException: 传递结果失败 ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.google.android.apps.photos.contentprovider/- 1/1/content://media/external/images/media/46/ORIGINAL/NONE/859067274 flg=0x1 clip={text/uri-list U:content://com.google.android.apps.photos。 contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F46/ORIGINAL/NONE/859067274}}}活动{com.veterinarysedations.georgeberdovskiy.veterinarysedations/com.veterinarysedations.georgeberdovskiy.veterinarysedations。 DogDetailActivity}:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.ImageView.setImageURI(android.net.Uri)”

这是我的代码 -

 public void PickImage(View view) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    final String[] weightUnitOptions = {"Camera", "Gallery"};
    builder.setTitle("Pick Image from")
            .setItems(weightUnitOptions, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (which == 0) {
                        Intent takePicture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                        startActivityForResult(takePicture, 0);
                    } else {
                        Intent pickPhoto = new Intent(Intent.ACTION_PICK,
                                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                        startActivityForResult(pickPhoto , 1);
                    }
                }

            });

    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {

        }
    });

    AlertDialog dialog = builder.create();
    dialog.show();
}

protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
    if (resultCode != RESULT_CANCELED) {
        if (requestCode == 0) {
            Uri selectedImage = imageReturnedIntent.getData();
            imageView.setImageURI(selectedImage);
        } else if (requestCode == 1) {
            Uri selectedImage = imageReturnedIntent.getData();
            imageView.setImageURI(selectedImage);
        } else {
            super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
        }
    }
}

这是我尝试使用的 StackOverflow 上的答案之一 -

有人知道我需要做什么来修复这个错误吗?提前致谢!

【问题讨论】:

  • 实际问题是该日志行末尾的NullPointerException。 imageView 在 onActivityResult() 中为空。
  • 一定有异常。关注This 使用MediaStore.EXTRA_OUTPUT 获取完整尺寸图片。
  • 你是否正确初始化了你的 imageView 对象?

标签: java android imageview onactivityresult


【解决方案1】:

你可以试试这个方法从相机获取图像:-

    File destination;

    public void cameraIntent() {
    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    try {
        Uri mImageCaptureUri;
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            destination = new File(Environment
                .getExternalStorageDirectory(),"IMG_"+System.currentTimeMillis() + ".jpg");
            mImageCaptureUri = Uri.fromFile(destination);
        } else {
            destination = new File(getFilesDir(), "IMG_" + System.currentTimeMillis() + ".jpg");
            mImageCaptureUri = Uri.parse("content://<Your package name or Diractory name where you want to store>/");
        }
        intent.putExtra(MediaStore.EXTRA_OUTPUT,
                mImageCaptureUri);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, 0);
    } catch (ActivityNotFoundException e) {
        e.printStackTrace();
    }
}

并将这一行添加到您的 onActivityResult 方法中:-

       if (requestCode == 0) {
            Uri selectedImageUri = Uri.fromFile(destination);
        }

【讨论】:

    【解决方案2】:

    原来问题很简单,居然在cmets中得到了解答——我没有注意错误,没有注意到最后提到的空对象引用确实是ImageView,我忘记初始化了。但是,我要感谢无论如何回答了这个问题的用户 - 这可能对其他在这个主题上有类似问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-04-07
      • 1970-01-01
      • 2014-01-13
      • 2021-06-18
      • 1970-01-01
      • 2013-10-16
      • 1970-01-01
      • 1970-01-01
      • 2017-03-27
      相关资源
      最近更新 更多