我试图做一个测试:
String==null
或String.equals(null)
。但是它不起作用,我也绑了String!=uriBook
并且我检查了uriBook它在我不从图库中选择图像时返回null。
更新来源:
我使用的是Bundle,因为imagePath是我的第一个片段,我在片段2中进行上传
片段1:
if(filePath!=null){bundle.putString("uRI", filePath.toString());}
Frgment 2:
uriBook =将String.valueOf(bundle.getString(" URI&#34));
private void uploadFile() {
if(uriBook == null ) {
Uri imageUri = Uri.parse(ContentResolver.SCHEME_ANDROID_RESOURCE +
"://" + getResources().getResourcePackageName(R.mipmap.ic_launcher)
+ '/' + getResources().getResourceTypeName(R.mipmap.ic_launcher) + '/' + getResources().getResourceEntryName(R.mipmap.ic_launcher));
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle("Uploading");
progressDialog.show();
StorageReference storageRefDef = storageDef.getReference();
getRiversRefDef = storageRefDef.child("images/" + nomstaockageImage);
getRiversRefDef.putFile(imageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressDialog.dismiss();
pathStoageInFirebase = getRiversRefDef.getPath();
Log.e(TAG, "path image" + pathStoageInFirebase);
createBook(titreBook, descBook, prixBook, regionBook, viileBook, currentDateandTime, catBook, typeBook, pathStoageInFirebase);
Toast.makeText(getActivity().getApplicationContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getActivity(), AccueilActivity.class);
startActivity(intent);
}
});}
else {
final ProgressDialog progressDialog = new ProgressDialog(getActivity());
progressDialog.setTitle("Uploading");
progressDialog.show();
StorageReference storageRef = storage.getReference();
riversRef = storageRef.child("images/"+nomstaockageImage);
riversRef.putFile(Uri.parse(uriBook))
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
progressDialog.dismiss();
pathStoageInFirebase= riversRef.getPath();
Log.e(TAG, "path image"+pathStoageInFirebase);
createBook(titreBook, descBook, prixBook, regionBook, viileBook, currentDateandTime, catBook, typeBook, pathStoageInFirebase);
Toast.makeText(getActivity().getApplicationContext(), "File Uploaded ", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getActivity(), AccueilActivity.class);
startActivity(intent);
}
});
} }
的例外错误
riversRef.putFile(Uri.parse(uriBook))
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>(){}
No content provider: null
java.io.FileNotFoundException: No content provider: null
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:710)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:614)
at android.content.ContentResolver.openInputStream(ContentResolver.java:449)
at com.google.firebase.storage.UploadTask.<init>(Unknown Source)
at com.google.firebase.storage.StorageReference.putFile(Unknown Source)
at com.mydreambook.AddBookFinalFragment.uploadFile(AddBookFinalFragment.java:283)
at com.mydreambook.AddBookFinalFragment.access$000(AddBookFinalFragment.java:39)
at com.mydreambook.AddBookFinalFragment$2.onClick(AddBookFinalFragment.java:174)
如果uriBook为null,为什么if语句之间没有执行源?
**使用Image debuger更新**
答案 0 :(得分:2)
首先是你的代码:
if(uriBook.equals(null))
会在某个时刻给你nullPointerException
,因为如果你的uriBook
为null,那么它会尝试从空对象调用metohd(相等)。将其更改为。
if(uriBook == null)
如果问题仍然存在,请告诉我们错误是什么,错误信息是什么。
==更新
是的,您将值为“null”的字符串设置为uriBook
变量。与图片类似,n1
是一个值为“null”的字符串,而n2
实际上是null
要将null设置为变量,您必须设置:
uriBook = null;
uriBook = "null"; //gives you a string with value "null"
要检查变量是否具有“null”值,您必须检查它:
if (uriBook.equals("null")){
//do something
}
答案 1 :(得分:0)
检查变量是否为空:
if(uriBook == null) /*is null*/
您只能调用对象的方法,例如&#39; equals()&#39;如果你有一个对象实例。如果您的变量是&#39; uriBook&#39;为null,您没有任何实例,并将抛出NullPointerException。
此外,如果您调试代码,这种事情很容易解决。在&#39;中设置一个断点。行,并检查变量内容。您可能理解错误的情况,例如您的变量可能不为null,但它们的属性确实如此。
答案 2 :(得分:0)
尝试
if (yourString == null){
}
如果您确定不能为nullPointerException,请尝试
if (yourString.isEmpty()){
}