2016-07-31 49 views
2

我正在使用firebase作爲後端服務。我將數據插入到我的firebase數據庫,並檢查插入是否成功,但是它總是返回false。Firebase isSuccessful()總是返回false

boolean issucessfull = ref.child("universities").setValue(university).isSuccessful(); 

      if (issucessfull) { 
       Toast.makeText(UniversityActivity.this, "added to database successfully", Toast.LENGTH_SHORT).show(); 
       clearViews(); 
       enableViews(true); 
      } else { 
       Toast.makeText(UniversityActivity.this, "Some error occured, try again", Toast.LENGTH_SHORT).show(); 
       enableViews(true); 
      } 

可能是什麼原因?我已經調試過它將數據添加到Firebase中,但它始終是假的。任何幫助將不勝感激。

回答

7

這是因爲Task尚未完成,請將CompletionListener添加爲setValue的第二個參數。

ref.child("universities").setValue(university, new DatabaseReference.CompletionListener() { 
    @Override 
    public void onComplete(DatabaseError databaseError, DatabaseReference databaseReference) { 
     if (databaseError != null) { 
      Toast.makeText(UniversityActivity.this, "Some error occured, try again", Toast.LENGTH_SHORT).show(); 
      enableViews(true); 
     } else { 
      Toast.makeText(UniversityActivity.this, "added to database successfully", Toast.LENGTH_SHORT).show(); 
      clearViews(); 
      enableViews(true); 
     } 
    } 
}); 

以上代碼是推薦的方式,另一種是

Task<Void> task = new FireDatabaseRole().ref.setValue(university); 
task.addOnCompleteListener(new OnCompleteListener<Void>() { 
    @Override 
    public void onComplete(@NonNull Task<Void> task) { 
     if (task.isSuccessful()) { 
      // success 
     } else { 
      // error 
     } 
    } 
});