2016-07-31 3 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がまだ完了していないため、代わりにの第2パラメータとしてCompletionListenerを追加します。上記のコード

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 
     } 
    } 
}); 
です
関連する問題