我正在使用firebase作为后端服务。我正在将数据插入我的firebase数据库,并使用以下代码检查插入是否成功,但它总是返回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但它仍然是假的。任何帮助将不胜感激。
答案 0 :(得分: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
}
}
});