gpt4 book ai didi

java - 如何使用 Bundle 传递 null 对象

转载 作者:行者123 更新时间:2023-12-01 17:49:52 25 4
gpt4 key购买 nike

我正在使用 bundle 将图像 uri 从 Activity 发送到 fragment 。

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

Activity :

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

fragment

Bundle bundle = getArguments();
final String profilePicUri = bundle.getString("USER_PIC_URI");

Logcat

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?

最佳答案

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

一种解决方案是在 bundle 时检查 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 为 null 时,您的错误来自此行

String profilePicUri = mainImageUri.toString();

关于java - 如何使用 Bundle 传递 null 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51572068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com