2017-03-20 41 views
0

我試圖做一個測試:如果statment不工作

  1. 如果String==null或者String.equals(null)
  2. 然後上傳圖片,我從畫廊獲得。
  3. else然後從mipmap上傳圖片。

但它不工作,我綁也String!=uriBook和我檢查了uriBook它返回null,當我不從圖庫中選擇圖像。

更新來源:

我使用捆綁因爲ImagePath的是我的第一個片段和我做上傳的片段2

片段1:

if(filePath!=null){bundle.putString("uRI", filePath.toString());} 

Frgment 2:

uriBook = String.valueOf(bundle.getString(「uRI」));在

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) 

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


       } 
      }); 
} } 

異常錯誤如果uriBook爲null爲什麼源if語句之間不執行?

**更新與圖片debuger **

enter image description here

+0

你的問題還不清楚。還要注意,任何非空對象'equals(null)'返回'false' – nandsito

+0

不完全確定問題是什麼? –

+0

嘗試'uriBook.equals == null'而不是'uriBook.equals(null)' –

回答

2

首先的所有代碼:

if(uriBook.equals(null)) 

將讓你在nullPointerException某一點,因爲如果你的uriBook將是無效的,那麼它會嘗試從空對象調用metohd(equal)。將其更改爲。

if(uriBook == null) 

如果問題仍然存在,告訴我們什麼是錯的,什麼是錯誤消息。

==更新

enter image description here

呀,你設置字符串值 「空」 你uriBook變量。像圖片,n1是「零」值和n2字符串實際上是null

要設置空變量,你必須設置:

uriBook = null; 
uriBook = "null"; //gives you a string with value "null" 

要檢查變量「空」值你有要檢查它像這樣:

if (uriBook.equals("null")){ 
    //do something 
} 
+0

我更新了問題,請檢查它@Mij – Amal

+0

跟蹤說沒有文件'Uri.parse(uriBook)'檢查出來,記住路徑必須包含'.jpg'或'.png'等文件的擴展名。 – miljon

+0

'Uri.parse(uriBook)'在else語句中,我在問爲什麼執行source else語句?通常它是if語句mut被執行。我確定我的變量uriBook = null – Amal

0

要檢查,如果一個變量爲空:

if(uriBook == null) /*is null*/ 

如果您有對象實例,則只能調用Object的方法(如「equals()」)。如果變量'uriBook'爲空,那麼您沒有任何實例,並且會拋出NullPointerException。

此外,如果您調試您的代碼,這種事情很容易解決。在'if'行放置一個斷點,然後檢查變量內容。你可能會理解錯誤的情況,比如你的變量可能不是null,但是它們的屬性可以。

+0

我把喙放在if行,我的變量uriBook = null – Amal

0

嘗試

if (yourString == null){ 

} 

,如果你肯定不能NullPointerException異常嘗試

if (yourString.isEmpty()){ 

}