我想从Firebase内部获取数据,以检查此用户是否存在于数据库中,但是我无法解决这个问题,听众触发这是我的代码: -
如果我继续循环我进入无限循环,我不知道为什么 为什么听众不会触发
DataSnapshot fetched ;
public boolean user_exist(final String user) throws Exception {
users.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
fetched = dataSnapshot ;
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
while (fetched == null){
Log.e("dbController","not fetched yet");
}
return fetched.hasChild(user);
}
答案 0 :(得分:0)
Firebase必须从数据库中获取数据并将其带入您的应用。这可能需要时间,因此应该在后台完成。添加valueEventListener时,提取在后台完成。您可以显示progressBar以显示数据仍在加载,一旦数据在手中,请执行其余代码:
users.child(user).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
funUserExists();
} else {
funNoUser();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});