簡體   English   中英

Android Fragment onactivity結果空指針異常

[英]Android Fragment onactivity result null pointer exception

我是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)

我認為線

resultCode == getActivity().RESULT_OK

導致問題使用

resultCode == Activity.RESULT_OK

因為RESULT_OK是靜態的

但是,您可以調試以測試導致NullPointerException的代碼

Actully的回答確實很愚蠢,我已經初始化了基於條件的

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

它應該在條件之外。

這就是為什么nullPointerException導致nullPointerException的原因。

非常感謝您的支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM