【问题标题】:onDataChange() method not getting called. Android FirebaseonDataChange() 方法没有被调用。安卓火力基地
【发布时间】:2021-05-25 04:23:36
【问题描述】:

我是 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"
  }
}

这是我的数据库结构:

【问题讨论】:

  • System.out.println("Firebase Error"+ error.toException()); 是否在 logcat 中显示某些内容?您的 onDataChange 或 onCancelled 是否已触发?
  • @AlexMamo 不,logcat 中没有任何内容。 onDataChange 或 onCancelled 甚至没有被触发。这就是我要说的。甚至没有执行过 System.out.println("I am in onDataChange()"); System.out.println("Firebase Error"+ error.toException());
  • 您很可能无法连接到 Firebase 服务器,或者您的用户设备上没有互联网连接。
  • @AlexMamo 问题已解决。我没有在 getInstance() 方法中指定数据库 url。

标签: android firebase firebase-realtime-database


【解决方案1】:

在 onDataChanged() 方法中你应该像这样添加一个 if 条件,然后将你的代码粘贴进去。

if(snapshot.exists()){}

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

【讨论】:

  • 但是连System.out.println("I am in onDataChange()");这个声明都没有打印出来。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 1970-01-01
  • 1970-01-01
  • 2016-09-17
  • 2020-10-20
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多