onActivityResult:android.net.Uri android.content.Intent.getData()'在空对象引用上

onActivityResult:android.net.Uri android.content.Intent.getData()'在空对象引用上,android,image,nullpointerexception,uri,onactivityresult,Android,Image,Nullpointerexception,Uri,Onactivityresult,当我在相机上单击“图像”或在相机上按“back press”时,它可以完美地工作 当我从gallery中选择图像时,Ii也可以正常工作,但当我从gallery中按back press时,如果没有在这一行选择任何图像,则会出现错误filePath=data.getData 原因:java.lang.NullPointerException:尝试调用虚拟机 方法“android.net.Uri android.content.Intent.getData”位于空 对象引用 是的,如果您没有选择任何图

当我在相机上单击“图像”或在相机上按“back press”时,它可以完美地工作

当我从gallery中选择图像时,Ii也可以正常工作,但当我从gallery中按back press时,如果没有在这一行选择任何图像,则会出现错误filePath=data.getData

原因:java.lang.NullPointerException:尝试调用虚拟机 方法“android.net.Uri android.content.Intent.getData”位于空 对象引用


是的,如果您没有选择任何图像,只是从图库返回,则在意图数据中它将返回null。检查数据=获取getData之前为null

@Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == PICK_IMAGE_CAMERA) {
                try {
                    bitmap = (Bitmap) data.getExtras().get("data");
                    pro_img.setImageBitmap(bitmap);
                    img = getEncoded64ImageStringFromBitmap(bitmap);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else if (requestCode == PICK_IMAGE_GALLERY) {
                try {
                      if(data!=null)
                     { // user selects some Image
                    filePath = data.getData();
                    if (filePath != null) {
                        bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
                        pro_img.setImageBitmap(bitmap);
                        img = getEncoded64ImageStringFromBitmap(bitmap);
                    }
                   }
                   else
                   { // user simply backpressed from gallery
                   }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

是的,如果您没有选择任何图像,只是从图库返回,则在意图数据中它将返回null。检查数据=获取getDatabitmap=Bitmap data.getExtras.getdata之前为空;这会很好的,谢谢@马之王
@Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == PICK_IMAGE_CAMERA) {
                try {
                    bitmap = (Bitmap) data.getExtras().get("data");
                    pro_img.setImageBitmap(bitmap);
                    img = getEncoded64ImageStringFromBitmap(bitmap);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else if (requestCode == PICK_IMAGE_GALLERY) {
                try {
                    filePath = data.getData();
                    if (filePath != null) {
                        bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
                        pro_img.setImageBitmap(bitmap);
                        img = getEncoded64ImageStringFromBitmap(bitmap);
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
@Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == PICK_IMAGE_CAMERA) {
                try {
                    bitmap = (Bitmap) data.getExtras().get("data");
                    pro_img.setImageBitmap(bitmap);
                    img = getEncoded64ImageStringFromBitmap(bitmap);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else if (requestCode == PICK_IMAGE_GALLERY) {
                try {
                      if(data!=null)
                     { // user selects some Image
                    filePath = data.getData();
                    if (filePath != null) {
                        bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), data.getData());
                        pro_img.setImageBitmap(bitmap);
                        img = getEncoded64ImageStringFromBitmap(bitmap);
                    }
                   }
                   else
                   { // user simply backpressed from gallery
                   }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }