首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NullPointer on onActivityResult

NullPointer on onActivityResult
EN

Stack Overflow用户
提问于 2013-11-29 09:13:02
回答 2查看 1.2K关注 0票数 0

使用相机,我有一个选项,可以让用户拍照,也可以从他们的图库浏览照片。然后将图像加载到应用程序屏幕中。我目前遇到的问题是使用拍照选项。

在使用KitKat的设备上,拍照选项工作得很好,但除此之外,这是一场灾难。

守则如下:

代码语言:javascript
复制
takePhoto.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View view) {
        // TODO Auto-generated method stub

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // file to save the image
        fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

        // set the image file name
        intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

        startActivityForResult(intent, TAKE_PICTURE);

    }

其中getOutputMediaFileUri函数类似于这里的密码。

onActivityResult()方法上:

代码语言:javascript
复制
if (requestCode == TAKE_PICTURE) {
    if (resultCode == activity.RESULT_OK) {             
        String path = fileUri.getPath().toString(); 
        previewImage(path);
        try {
            getPictureDetails(path);
        } catch (FileNotFoundException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

错误日志:

代码语言:javascript
复制
11-29 14:42:12.750: E/AndroidRuntime(18570): FATAL EXCEPTION: main
11-29 14:42:12.750: E/AndroidRuntime(18570): java.lang.RuntimeException: Unable to resume activity {com.developmentcheck.dcforpublic/com.developmentcheck.dcforpublic.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=262344, result=-1, data=null} to activity {com.developmentcheck.dcforpublic/com.developmentcheck.dcforpublic.MainActivity}: java.lang.NullPointerException
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2658)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2686)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2159)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3595)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.access$800(ActivityThread.java:146)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.os.Handler.dispatchMessage(Handler.java:99)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.os.Looper.loop(Looper.java:137)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.main(ActivityThread.java:4949)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at java.lang.reflect.Method.invokeNative(Native Method)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at java.lang.reflect.Method.invoke(Method.java:511)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1043)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at dalvik.system.NativeStart.main(Native Method)
11-29 14:42:12.750: E/AndroidRuntime(18570): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=262344, result=-1, data=null} to activity {com.developmentcheck.dcforpublic/com.developmentcheck.dcforpublic.MainActivity}: java.lang.NullPointerException
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3224)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2645)
11-29 14:42:12.750: E/AndroidRuntime(18570):    ... 13 more
11-29 14:42:12.750: E/AndroidRuntime(18570): Caused by: java.lang.NullPointerException
11-29 14:42:12.750: E/AndroidRuntime(18570):    at com.developmentcheck.dcforpublic.Fragment_comment.onActivityResult(Fragment_comment.java:358)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:166)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.Activity.dispatchActivityResult(Activity.java:5369)
11-29 14:42:12.750: E/AndroidRuntime(18570):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3220)
11-29 14:42:12.750: E/AndroidRuntime(18570):    ... 14 more

错误发生在以下行:

代码语言:javascript
复制
String path = fileUri.getPath().toString(); 
EN

回答 2

Stack Overflow用户

发布于 2013-11-29 10:13:50

在onActivityResult中,首先从返回的数据意图获取fileUri

代码语言:javascript
复制
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == TAKE_PICTURE) {
    if (resultCode == activity.RESULT_OK) {             
 fileUri =data.getExtras(MediaStore.EXTRA_OUTPUT);       
String path = fileUri.getPath().toString(); 
        previewImage(path);
        try {
            getPictureDetails(path);
        } catch (FileNotFoundException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }


    }

     }
票数 0
EN

Stack Overflow用户

发布于 2013-11-29 11:05:44

将fileUri更改为

代码语言:javascript
复制
 fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);

代码语言:javascript
复制
            String fileName = "temp.jpg";  
            ContentValues values = new ContentValues();  
            values.put(MediaStore.Images.Media.TITLE, fileName);  
            fileUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20281993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档