首页 > 解决方案 > Firebase getChildrenCount() 显示 0

问题描述

我已经尝试了一切,但无法解决这个问题。Firebase getChildrenCount() 显示 0,当我重新启动时,Activity 显示 0。但是当我在应用程序打开后第一次启动 Activity 时,它显示正确的数据。我试图为 ValueEventLisener 找到 onCancelled 的日志错误,但它们没有错误。

请帮我解决这个问题。

我的代码

 uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
       friendsRef=FirebaseDatabase.getInstance().getReference("Friends");
       friendsRef.child(uid).addValueEventListener(new ValueEventListener() {
           @Override
           public void onDataChange(@NonNull DataSnapshot snapshot) {
               if (snapshot.exists()) {
                  int Friend = (int) snapshot.getChildrenCount();
                   friendsCountTv.setText(Integer.toString(Friend));
               }else {
                   friendsCountTv.setText("0");
               }
           }

           @Override
           public void onCancelled(@NonNull DatabaseError error) {
               Log.e("ERROR/",error.getMessage());
           }
       });

我的数据库

"Friends" : {
    "QygAGx6eszWENoVvEdaL1uEwFxW2" : {

        "hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true",
        "stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "true"
      },
     "hLEGHsnKunew0NTqOH8dd4TnzfZ2" : {

        "QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
        "stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "true"
      },
     "stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {

        "QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
        "hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
      },
  }

标签: androidfirebasefirebase-realtime-database

解决方案


我认为您的 Database Child Ref 中没有孩子。

"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
        "QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
        "hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
 },

也许如果结构是这样的,它被认为是孩子。

"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
        "CHILD NAME" : {
           "PROPERTY" : "VALUE",
        },
        "QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
        "hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
      },

希望这是问题所在。

如果是这种情况,则使用snapshot.getValue().size()来检索属性长度。


推荐阅读