Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android firebase无数据查询_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java Android firebase无数据查询

Java Android firebase无数据查询,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我正在使用firebase数据库的Android SDK 在数据库中,我有一个按用户排列消息的结构,这样,如果我需要他们的消息,我只需按用户查询 myDatabase -> messages -> JonDoe -> "You forgot your mail" -> "Buy groceries" -> Ja

我正在使用firebase数据库的Android SDK

在数据库中,我有一个按用户排列消息的结构,这样,如果我需要他们的消息,我只需按用户查询

myDatabase -> messages -> JonDoe
                            -> "You forgot your mail"
                            -> "Buy groceries"
                       -> JaneDoe
                            -> "Dog's birthday!"
问题是如果用户不存在,监听器会一直等待,我想在这种情况下显示“你没有消息”。(例如,如果我在上面的示例中查询用户“CharlesDoe”)

有没有办法检查查询之前/之后/期间是否存在引用?

尝试以下方法:

DatabaseReference root =FirebaseDatabase.getInstance().getReference();
DatabaseReference user = root.child("myDatabase").child("messages");
user.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        if (snapshot.child("CharlesDoe").exists()) {
            // run some code
        }else{
        Toast.makeText(this,"no messages",Toast.Length_LONG).show();

        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});
在这里,它将查询节点
消息
,然后检查子节点是否存在,并执行所需操作。

试试这个

DatabaseReference root =FirebaseDatabase.getInstance().getReference();
DatabaseReference user = 
root.child("myDatabase").child("messages").child("CharlesDoe");
user.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
    if (snapshot.exists()) {
        // run some code
    }else{
    Toast.makeText(this,"no messages",Toast.Length_LONG).show();

    }
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

出色,工作得很有魅力!,我用的是“onChildEventListener”,这个答案对那个监听器不起作用,做了一些修改,现在一切都好了。非常感谢。