2016-07-31 10 views
2

Ich verwende Firebase als Backend-Dienst. Ich füge Daten in meine Firebase-Datenbank ein und überprüfe mit dem folgenden Code, ob das Einfügen erfolgreich ist oder nicht.Firebase isSuccessful() gibt immer false zurück

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

Was könnte Grund sein? Ich habe es debugged Daten wurden Firebase hinzugefügt, aber es immer noch immer falsch. Jede Hilfe würde geschätzt.

Antwort

7

Es ist, weil die Task noch nicht abgeschlossen ist, fügen Sie einestattdessen als zweiter Parameter von 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); 
     } 
    } 
}); 

Above-Code ist der empfohlene Weg, eine Alternative ist

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 
     } 
    } 
}); 
Verwandte Themen