当前位置: 首页 > 知识库问答 >
问题:

将图片添加到图库时出现NullPointerException

尉迟华翰
2023-03-14

错误:

致命异常:main
java。java上的lang.NullPointerException。木卫一。文件java上的fixSlashes(File.java:185)
。木卫一。文件(文件:java:134)在ua。罗曼波塔普斯基。安提霍克。普罗卡顿。交付活动。ua的galleryAddPic(DeliverActivity.java:308)。罗曼波塔普斯基。安提霍克。普罗卡顿。交付活动。android上的onClick(DeliverActivity.java:246)。看法看法android上的performClick(View.java:3511)
。看法查看$PerformClick。在android上运行(View.java:14105)
。操作系统。处理程序。android上的handleCallback(Handler.java:605)
。操作系统。处理程序。android上的dispatchMessage(Handler.java:92)
。操作系统。活套。android上的loop(Looper.java:137)
。应用程序。活动线程。java上的main(ActivityThread.java:4424)
。朗。反思。方法java上的invokenactive(本机方法)
。朗。反思。方法在com上调用(Method.java:511)
。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:784)。Android内部的操作系统。合子体。dalvik的main(ZygoteInit.java:551)
。系统原生艺术。主(本机方法)

代码:

private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent("android.media.action.IMAGE_CAPTURE");
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
                Toast.makeText(this, "Error!", Toast.LENGTH_SHORT).show();
            }
            if (photoFile != null) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
                startActivityForResult(takePictureIntent, 0);
            }
        }
    }

private File createImageFile() throws IOException {
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        imageFileName = "JPEG_" + timeStamp + "_";
        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES + "/Prokaton/Big");
        File image = File.createTempFile(imageFileName, ".jpg", storageDir);

        mCurrentPhotoPath = image.getAbsolutePath();
        imageName = image.getName();
        ...
        return image;
    }

private void galleryAddPic() {
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    File f = new File(mCurrentPhotoPath);
    Uri contentUri = Uri.fromFile(f);
    mediaScanIntent.setData(contentUri);
    this.sendBroadcast(mediaScanIntent);
}

此行出错:文件f=新文件(mCurrentPhotoPath);

在Android 4.0.3错误。在其他版本的作品罚款。

共有2个答案

冀鸿才
2023-03-14

形象getabsolutePath();在代码中为null。

阮轶
2023-03-14

根据您发布的代码,我猜您在调用DispatchTakePictureContent()之前遇到了错误,因为正是该方法调用了createImageFile()方法,该方法将mCurrentPhotoPath变量设置为非空值。

一个简单的修复方法是使用如下的NOTNULL检查更新galleryAddPic()方法:

    private void galleryAddPic() {
        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        if (mCurrentPhotoPath == null) {
            return;
        }
        File f = new File(mCurrentPhotoPath);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        this.sendBroadcast(mediaScanIntent);
    }
 类似资料:
  • 我试图通过调用:来添加视图和删除视图,具体取决于我的需要从我的 ListView 适配器 和 根据我的需要,当转换视图为空(第一次加载)它的工作原理找到,但当我刷新那个(转换视图不为空)我得到这个错误: 顺便说一句,最后一行是RelativeLayout。onLayout,但如果我的xml是带有LinearLayout子级的FrameLayout的话,这正常吗? 这是我的代码: 这些方法就是错误发

  • 编辑文档时,还可以插入图片。每个主题下可以添加多张图片,支持多种插入方式,以及方便的编辑功能。 如何插入 1、使用快捷键「Alt + Enter」呼出菜单; 2、鼠标悬停在主题的圆点上,在出现的菜单中选择添加图片; 3、直接将电脑中的图片,拖到某一个主题下; 4、直接从剪切板粘贴图片,使用快捷键「Ctrl + V」。 注:高级版用户才可以使用图片功能,支持 jpg、png、gif 等格式的图片,单

  • 关于图表设计 使用图表设计将插图添加到柱形和标记。图表设计可以是图表中表示值的简单绘图、徽标和其他符号;它们还可以是包含图案和参考线对象的复杂对象。 Illustrator 包含许多预设的图表设计。此外,您还可以创建新的图表设计,并将它们存储在 “图表设计 ”对话框中。 您可以通过以下方式对柱形应用图表设计:垂直缩放设计在垂直方向进行伸展或压缩。它的宽度没有改变。一致缩放设计在水平和垂直方向同时缩

  • 6.9.1.添加图片 先给界面加上背景图片。在Android中,多数图片都是放在一个名为drawable的资源目录中。可以留意,我们有三个这样的目录: /res/drawable-hdpi 用于较高分辨率的设备 /res/drawable-mdpi 用于中等分辨率的设备 /res/drawable-ldpi 用于较低分辨率的设备 我们新建另一个目录,名为/res/drawable。右键单击res目

  • 问题内容: 我有一个在matplotlib中生成的大图。我想在此图的某些(x,y)坐标处添加一些图标。我想知道在matplotlib中是否有任何方法可以做到这一点 谢谢 问题答案: 绝对有可能。这是一个开始: 图标重叠http://up.stevetjoa.com/iconoverlap.png 在此示例中,未根据图的(x,y)坐标定义图标的位置。也许其他人可以帮助您。不过,我希望这个例子对您有所

  • 问题内容: 我试图将背景图像添加到我的框架中,但是我没有做任何工作。 我设计了一种老虎机,该老虎机由添加到容器中的几个面板组成。现在,我正在尝试为框架添加漂亮的背景。 我尝试使用绘画方法。但是,由于我已经在使用绘制方法绘制卷轴图像,因此它无法在背景上运行。 我还尝试添加JLabel,但是当我这样做时,它会覆盖所有内容或被覆盖,这取决于我如何称呼它。以下是我的代码;任何帮助都感激不尽: 问题答案: