无法提供结果结果信息

时间:2015-01-04 02:41:15

标签: java android

我在Stack Overflow上已经研究了很多,但问题仍然存在。我有main个活动,并为我的startActivityForResult活动调用takeapicture。以下是我在takeapicture中返回结果的代码:

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        pictureFile = null;
        try {
            pictureFile = createImageFile(1);
        } catch (Exception e) {System.out.println(e.getCause());
            System.out.println("lol");}
        if (pictureFile == null){
            System.out.println("lol");
            return;
        }

        try {
            System.out.println(Arrays.toString(data));
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
        } catch (FileNotFoundException e) {
            System.out.println(e.getCause());
        } catch (IOException e) {
            System.out.println(e.getCause());
        }
        System.out.println(pictureFile.getAbsoluteFile());
        Intent intent = new Intent();
        intent.putExtra("SavedImageDirectory", pictureFile);
        setResult(RESULT_OK, intent);
        finish();
    }
};

运行此操作时,我在使用SavedImageDirectory额外内容的第一行上收到以下错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{...
...
Caused by: java.lang.NullPointerException
....

看起来额外有null vaue,但我看不出它可能出错的地方。有小费吗?提前谢谢。

2 个答案:

答案 0 :(得分:0)

Intent.putExtra(name,value)上的所有文档都说'name'应该包含一个包前缀,而不仅仅是一个像“SavedImageDirectory”这样的字符串

答案 1 :(得分:0)

你怎么读这个额​​外的,getStringExtra()?这可能是问题,因为您在该额外设置File对象,因此将值作为String Extra将为NULL。

我不确定,但我认为putExtra("",File)将是Serializable valueputExtra(),因此您需要将其作为getSerializableExtra()阅读,或者只需添加文件名额外的

i.putExtra("SavedImageDirectory", pictureFile.getAbsolutePath());

或者更具体地说,您也可以添加文件名

i.putExtra("SavedImageDirectory", pictureFile.getAbsolutePath() + pictureFile.getName());

这样,您可以将其作为String Extra读取。