情况:我想从我的功能参数与网址从我的火力实时数据库中检索比较一网址。检索工作,但是,我不知道如何从我的if-else语句中的字符串比较中获取布尔值,其中我得到一个错误:“无法将值赋给最终变量'bool'”。如何从onDataChange方法获取数据?
比较()代码:
private boolean compare(String url) {
mDatabaseReference = mFirebaseDatabase.getReference("Executive Branch");
final String newUrl = url;
final boolean bool = false;
mDatabaseReference.limitToFirst(1).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount() > 0) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
ExecutiveOrder executiveOrder = snapshot.getValue(ExecutiveOrder.class);
if (executiveOrder.getUrl().equals(newUrl)) {
bool = true;
} else {
bool = false;
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.e("Executive Order", "The read failed: " + databaseError.getDetails());
}
});
return bool;
}
不能从void结果类型的方法返回true或false虽然 –
您是否知道任何其他可能的方式返回true或false? –
我改变了我的答案,现在应该没问题。但是我建议你提前做firebase检索,这样你就不需要阻止或等待结果。 –