Java 安卓;“简单拍照”;教程不适合我

Java 安卓;“简单拍照”;教程不适合我,java,android,android-camera,android-camera-intent,Java,Android,Android Camera,Android Camera Intent,所以,我尝试在我的应用程序中实现拍照 我遵循官方的“简单拍照”教程,但它只会给我错误 唯一不同的是,我使用的是弹出对话框片段 下面是我得到的错误: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=131073, result=-1, data=null} to activity {com.myapp.demo/com.myapp.demo.MainActivity}: java.

所以,我尝试在我的应用程序中实现拍照

我遵循官方的“简单拍照”教程,但它只会给我错误

唯一不同的是,我使用的是弹出对话框片段

下面是我得到的错误:

java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=131073, result=-1, data=null} to activity {com.myapp.demo/com.myapp.demo.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3605)
        at android.app.ActivityThread.handleSendResult(ActivityThread.java:3648)
        at android.app.ActivityThread.access$1400(ActivityThread.java:154)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1370)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5289)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.Intent.getExtras()' on a null object reference
        at com.paulcanning.mote.NoteDialogFragment.onActivityResult(NoteDialogFragment.java:179)
        at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:153)
        at android.app.Activity.dispatchActivityResult(Activity.java:6192)
        at android.app.ActivityThread.deliverResults(ActivityThread.java:3601)
            at android.app.ActivityThread.handleSendResult(ActivityThread.java:3648)
            at android.app.ActivityThread.access$1400(ActivityThread.java:154)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1370)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5289)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
按钮单击侦听器

takePhoto.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            if (takePictureIntent.resolveActivity(getContext().getPackageManager()) != null) {
                //startActivityForResult(takePictureIntent, 1);

                File photoFile = null;
                try {
                    photoFile = createImageFile();
                } catch (IOException ex) {
                    // Error occurred while creating the File
                }
                // Continue only if the File was successfully created
                if (photoFile != null) {
                    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                            Uri.fromFile(photoFile));
                    startActivityForResult(takePictureIntent, 1);
                }
            }
        }

    });
onActivityResult(注意,它不允许我使用受保护的)


您正在提供额外的输出。因此,摄像头应用程序不需要提供
getExtra(“数据”)
,因此通常为
null

引述:

调用者可能会传递一个额外的_输出,以控制将在何处写入此图像。如果额外_输出不存在,则在额外字段中以位图对象的形式返回一个小尺寸图像。这对于只需要小图像的应用程序非常有用。如果存在额外_输出,则全尺寸图像将写入额外_输出的Uri值


您的图像(希望)位于您在
EXTRA\u OUTPUT

中提供的位置,请提供一个,在这种情况下,它将是
NoteDialogFragment
的来源,特别是
onActivityResult()
方法。另外,请确保显示您在哪里调用
startActivityForResult()
@Rami。我不是在问如何解决空指针问题,而是为什么官方教程不起作用我遇到了类似的问题,错误出现在
createImageFile
中,这行代码产生了问题:
mCurrentPhotoPath=“file:+image.getAbsolutePath()
我必须删除
“文件:”
prefixSo如何从
onActivityResult
中的额外输出/uri获取图像?@MrPablo:保留
照片文件,包括跨配置更改。然后,使用您的收藏夹将图像加载到您的
ImageView
?我如何在活动结果中获取照片文件?@Pablo先生:嗯,使用一个字段。好的,对不起,我真的不明白你的意思。我读了你的答案,这是有道理的。但是如何从额外的输出变量获取图像呢?你能给我看一段代码吗?
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1 && resultCode == getActivity().RESULT_OK) {
        Bundle extras = data.getExtras();
        Bitmap imageBitmap = (Bitmap) extras.get("data");
        imageView.setImageBitmap(imageBitmap);
    }
}