如果声明不起作用

时间:2017-03-20 15:33:12

标签: android if-statement uri

我试图做一个测试:

  1. 如果String==nullString.equals(null)
  2. 然后上传我从图库中获取的图片。
  3. else然后从mipmap上传图片。
  4. 但是它不起作用,我也绑了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更新**

    enter image description here

3 个答案:

答案 0 :(得分:2)

首先是你的代码:

if(uriBook.equals(null))

会在某个时刻给你nullPointerException,因为如果你的uriBook为null,那么它会尝试从空对象调用metohd(相等)。将其更改为。

if(uriBook == null)

如果问题仍然存在,请告诉我们错误是什么,错误信息是什么。

==更新

enter image description here

是的,您将值为“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()){

}