Firebase isSuccessful()始终返回false

时间:2016-07-31 07:41:04

标签: android firebase firebase-realtime-database

我正在使用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但它仍然是假的。任何帮助将不胜感激。

1 个答案:

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