当我尝试使用翻新上载图像时,我得到的是空值。这实际上仅发生在Xioami A2 Lite中。我不明白这里是什么问题。
这是我的代码
public void setFinalResponseMutableLiveData(final Context context, Uri fileuri, final PhotoView photoView, final String title) {
photoView.onPhotoLoading();
if (NetworkHelper.hasNetworAccess(context)){
// create upload service client
File file=new File(FileUtils.getPath(context,fileuri));
RequestBody requestFile =
RequestBody.create(
MediaType.parse(context.getContentResolver().getType(fileuri)),
file
);
// MultipartBody.Part is used to send also the actual file name
MultipartBody.Part body =
MultipartBody.Part.createFormData("file", file.getName(), requestFile);
// add another part within the multipart request
String descriptionString = title;
RequestBody description =
RequestBody.create(
okhttp3.MultipartBody.FORM, descriptionString);
RetrofitClient.getInstance().getApi().getImageResponse(description,body).enqueue(new Callback<PhotoUploadResponse>() {
@Override
public void onResponse(Call<PhotoUploadResponse> call, Response<PhotoUploadResponse> response) {
photoView.onPhotoLoaded();
if (response.isSuccessful()){
finalResponseMutableLiveData.setValue(response.body());
}
else {
new CustomMessage((Activity)context,response.message());
}
}
@Override
public void onFailure(Call<PhotoUploadResponse> call, Throwable t) {
photoView.onPhotoLoaded();
new CustomMessage((Activity)context,t.getMessage());
Log.d("CURRENT", "onFailure: "+t.getMessage());
}
});
}
else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
photoView.onPhotoLoaded();
photoView.onInternetError();
}
},100);
}
}
根据您对空值错误出处的答复,检查位置:
setFinalResponseMutableLiveData(final Context context, Uri fileuri, final PhotoView photoView, final String title)
正在接到电话。在其调用点,通过设置断点并观察调试器中显示的值来确保fileuri不为空。当您将fileuri定义为不可为空的字段时,向其传递null值将使应用程序崩溃。