为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Bundle 传递空对象

如何使用 Bundle 传递空对象

Qyouu 2021-06-14 09:16:35
我正在使用 bundle 将图像 uri 从活动发送到片段。问题是用户可能选择不使用图像,然后我会有一个空字符串,这会给我这个错误:活动:private Uri mainImageUri = null;// Image Crop @Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {        CropImage.ActivityResult result = CropImage.getActivityResult(data);        if (resultCode == RESULT_OK) {            mainImageUri = result.getUri();            profilePic.setImageURI(mainImageUri);        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {            Exception error = result.getError();        }    }}// OnCreateViewString profilePicUri = mainImageUri.toString();// OnClickListenerBundle bundle = new Bundle();                            bundle.putString("USER_PIC_URI", profilePicUri);                            fragment.setArguments(bundle);                            //fragmentTransaction...etc分段Bundle bundle = getArguments();    final String profilePicUri = bundle.getString("USER_PIC_URI");逻辑猫java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.net.Uri.toString()' on a null object reference我试过这个,但没有运气 Bundle bundle = new Bundle();                            if (mainImageUri != null) {                            bundle.putString("USER_PIC_URI", profilePicUri);                            } else {                            bundle.putString("USER_PIC_URI", "");                            }                            fragment.setArguments(bundle);如何实现if语句来处理不想上传图片的用户创建的NullPointerException?
查看完整描述

2 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

问题不在于字符串为空,而是 uri 为空,因此您无法调用uri.toString()它。


一种解决方案是在捆绑它时检查空 uri(因此不要调用mainImageUri.toString()您当前所在的位置,profilePicUri完全删除)并且仅在非空时才尝试将其转换为字符串


Bundle bundle = new Bundle();

if (mainImageUri != null) {

    bundle.putString("USER_PIC_URI", mainImageUri.toString());

} else {

    bundle.putString("USER_PIC_URI", "");

}

fragment.setArguments(bundle);

当mainImageUri为空时,您的错误来自这一行


String profilePicUri = mainImageUri.toString();


查看完整回答
反对 回复 2021-06-17
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

String profilePicUri = null;


@Override

public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {

        CropImage.ActivityResult result = CropImage.getActivityResult(data);

        if (resultCode == RESULT_OK) {


            mainImageUri = result.getUri();

            profilePic.setImageURI(mainImageUri);

            profilePicUri = mainImageUri.toString();


        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {


            Exception error = result.getError();

        }

    }

}

profilePicUri 应该是全局变量。你不应该在 onCreate 方法中初始化它,你应该在onActivityResult方法中初始化它。


查看完整回答
反对 回复 2021-06-17
  • 2 回答
  • 0 关注
  • 199 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信