onDataChange() 方法没有被调用。安卓火力基地

时间:2021-05-25 04:23:36

标签: android firebase firebase-realtime-database

我是 Firebase 的新手,在使用 onDataChange() 方法时遇到了问题。 onDataChange() 没有被调用。

这是我的代码:

DatabaseReference mref = FirebaseDatabase.getInstance().getReference("songs");
        System.out.println("I am in Oncreate()");

        ValueEventListener event = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {

                System.out.println("I am in onDataChange()");

                for(DataSnapshot ds:snapshot.getChildren()){
                    String name  =ds.child("name").getValue(String.class);
                    System.out.println("I am printing name: "+name);

                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
            System.out.println("Firebase Error"+ error.toException());

            }
        };
    
        mref.addListenerForSingleValueEvent(event);
    System.out.println("I called mref.addlistner...()");

Firebase 访问规则如下:

{
  "rules": {
    ".read": "true",
    ".write": "true"
  }
}

这是我的数据库结构: enter image description here

1 个答案:

答案 0 :(得分:0)

在 onDataChanged() 方法中,您应该添加这样的 if 条件,然后将代码粘贴到其中。

if(snapshot.exists()){}

这将确保您的快照确实存在。