如何使用 Bundle 传递空对象

我正在使用 bundle 将图像 uri 从活动发送到片段。


问题是用户可能选择不使用图像,然后我会有一个空字符串,这会给我这个错误:


活动:


private Uri mainImageUri = null;


// Image Crop 


@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);


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


            Exception error = result.getError();

        }

    }

}


// OnCreateView


String profilePicUri = mainImageUri.toString();


// OnClickListener


Bundle 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?


Qyouu
浏览 200回答 2
2回答

沧海一幻觉

问题不在于字符串为空,而是 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();

一只萌萌小番薯

String profilePicUri = null;@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);            profilePicUri = mainImageUri.toString();        } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {            Exception error = result.getError();        }    }}profilePicUri 应该是全局变量。你不应该在 onCreate 方法中初始化它,你应该在onActivityResult方法中初始化它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java