【问题标题】:How to handle the addValueEventListener from firebase's realtime database?如何处理来自 firebase 实时数据库的 addValueEventListener?
【发布时间】:2020-12-12 10:11:54
【问题描述】:

我有一个将数据发送到 firebase 实时数据库的应用。另一个应用程序从数据库中获取数据并将其显示在活动中。我使用 addValueEventListener 以便每当添加新数据时,第二个应用程序都会显示它。数据基本上是姓名和电话号码。问题是,当我在显示数据的活动上并从其他应用程序输入数据时,由于空指针异常,活动崩溃。经过一些日志后,我发现问题在于名称字段在快照中,但电话字段不在。数据库已正确更新,因此我认为问题在于第二个应用程序从数据库中获取数据的速度太快,并且没有等待将其全部添加到数据库中。这是问题吗?我该如何解决这个问题?

databaseReference.addValueEventListener(new ValueEventListener() {
 @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                    for (DataSnapshot s: snapshot.getChildren()){
                         Button rent = createButton(s.child("Name").getValue().toString(), s.child("Phone").getValue().toString());
                        }
                    }

@Override
            public void onCancelled(@NonNull DatabaseError error) {
Log.i("ERROR",":C");
            }
});
                    

【问题讨论】:

    标签: firebase firebase-realtime-database


    【解决方案1】:

    发现问题。第一个应用程序是先在数据库中添加姓名,然后再添加电话号码。这个想法是将它们像一个对象一样添加在一起。 例如。 {“姓名”:“迈克”,“电话”:“82741241”}。这样你就不会得到空指针异常,因为应用程序同时添加了姓名和电话,并且没有首先添加姓名,并在缺少电话字段的第二个应用程序中触发 addValueEventListener。

    【讨论】:

      猜你喜欢
      • 2016-12-04
      • 2023-01-11
      • 2019-12-26
      • 1970-01-01
      • 2023-01-08
      • 2020-02-01
      • 2017-01-12
      • 1970-01-01
      • 2020-07-23
      相关资源
      最近更新 更多