在这个问题上浪费了两个小时。尝试了一切,但没有一个解决方案有效。我使用 firebase onChildAdded 的数据读取代码来获取用户数据,然后使用 if else 条件确定它。
在 onCreate
mFirebaseDatabase=FirebaseDatabase.getInstance();
mMessagesDatabaseReference=mFirebaseDatabase.getReference().child("user").child(root).child(id);
attachDatabaseReadListener();
监听器方法
private void attachDatabaseReadListener() {
if ( mChildEventListener == null) {
mChildEventListener = new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
User u = dataSnapshot.getValue(User.class);
mUser=u.GetUser();
mEmail=u.GetEmailId();
Toast.makeText(getApplicationContext(),"here"+mUser,Toast.LENGTH_SHORT).show();
}
public void onChildChanged(DataSnapshot dataSnapshot, String s) {}
public void onChildRemoved(DataSnapshot dataSnapshot) {}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {}
public void onCancelled(DatabaseError databaseError) {}
};
mMessagesDatabaseReference.addChildEventListener( mChildEventListener);
}
}
条件检查,它可以是任何东西。
if(mUser==null&&mEmail==null) {
//do something here
}
else
{
//do nothing
}
注意:在添加的子节点上执行需要一些时间,所以添加适当的延迟
我只有一个节点,所以这段代码对我来说非常有效。如果有任何其他解决方案或更简单的解决方案可用,请告诉我。
如果根节点不存在,那么它也会显示为 null,因此在部署应用程序推送根节点之前请记住这一点。