[英]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.