【发布时间】:2019-12-06 04:55:40
【问题描述】:
我有一个方法,如果数据库中存在孩子,则返回 true,否则返回 false。它看起来像这样:
boolean subscriber;
public boolean checkChatRoomMembership(String chatRoomUid) {
mChatRoomMembers.child(chatRoomUid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild(mAuth.getUid())) {
subscriber = true;
} else {
subscriber = false;
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return subscriber;
}
即使该节点存在于数据库中,它也会在第一次运行该方法时返回 false。以下时间它应该返回true。 Activity 第一次启动时总是返回 false。任何想法为什么?
【问题讨论】:
-
您可能在操作完成之前返回它,因为它是异步的
-
您不能返回尚未完成加载的现在。因此,您要么需要将需要数据的代码移动到
onDataChange,要么实现自定义回调。请参阅stackoverflow.com/questions/33203379/…、stackoverflow.com/questions/38456650/… 和 stackoverflow.com/questions/50434836/…
标签: java android firebase firebase-realtime-database