Firebase isSuccessful()始终返回false

Zee*_*bir 2 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);
            }
Run Code Online (Sandbox Code Playgroud)

可能是什么原因?我已调试它数据已被添加到firebase但它仍然是假的.任何帮助将不胜感激.

Wil*_*lik 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);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

以上代码是推荐的方式,另一种方法是

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
        }
    }
});
Run Code Online (Sandbox Code Playgroud)