【问题标题】:Android Fragment onactivity result null pointer exceptionAndroid Fragment onactivityresult空指针异常
【发布时间】:2015-09-20 05:58:32
【问题描述】:

我是android初学者,我的目标是选择图像并显示在我的ImageView上,我使用下面的代码但在片段onActivity结果中返回空指针异常。

这是我的fragmentA.java

@Override
public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);


    switch(requestCode) {
        case SELECT_PHOTO:
            if(resultCode == getActivity().RESULT_OK) {
                try {
                    final Uri imageUri = imageReturnedIntent.getData();

                    Log.v("imageUri", imageUri.toString());

                    final InputStream imageStream = getActivity().getContentResolver().openInputStream(imageUri);
                    final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
                    image.setImageBitmap(selectedImage);
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
            break;
        default:
            initImage();
            break;
    }
}

我将以下代码用于调用库意图

image.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            if( Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT )
            {
                Intent intent = new Intent();
                intent.setType("image/*");
                intent.setAction(Intent.ACTION_GET_CONTENT);
                startActivityForResult(intent.createChooser(intent,"Select Picture"), SELECT_PHOTO);

            }
            else
            {
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                photoPickerIntent.setType("image/*");
                startActivityForResult(photoPickerIntent, SELECT_PHOTO);
            }


        }
    });

这是我的错误报告..

java.lang.RuntimeException: Unable to resume activity {citycenter.caneda.com.citycenter/com.caneda.citycenter.myaccount.AccountMainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65537, result=-1, data=Intent { dat=content://media/external/images/media/506 }} to activity {citycenter.caneda.com.citycenter/com.caneda.citycenter.myaccount.AccountMainActivity}: java.lang.NullPointerException


 Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65537, result=-1, data=Intent { dat=content://media/external/images/media/506 }} to activity {citycenter.caneda.com.citycenter/com.caneda.citycenter.myaccount.AccountMainActivity}: java.lang.NullPointerException


 Caused by: java.lang.NullPointerException
        at com.caneda.citycenter.myaccount.FragmentTabProfile.onActivityResult(FragmentTabProfile.java:217)
        at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:163)
        at com.caneda.citycenter.myaccount.AccountMainActivity.onActivityResult(AccountMainActivity.java:102)
        at android.app.Activity.dispatchActivityResult(Activity.java:5305)

【问题讨论】:

标签: java android android-fragments onactivityresult


【解决方案1】:

我觉得行

resultCode == getActivity().RESULT_OK

导致问题 使用

resultCode == Activity.RESULT_OK

因为 RESULT_OK 是静态的

但是您可以调试以测试导致 NullPointerException 的代码

【讨论】:

  • 这一行导致错误.. image.setImageBitmap(selectedImage);
【解决方案2】:

其实答案真的很傻,我已经初始化了 基于条件的

if(saveInstaceState == null) { ivUpload  = (ImageView) }

它应该在条件之外。

这就是为什么它会引起 ivUpload 的 nullPointerException

非常感谢您的支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    相关资源
    最近更新 更多