android - 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"
},
}
解决方案
我认为您的 Database Child Ref 中没有孩子。
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},
也许如果结构是这样的,它被认为是孩子。
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"CHILD NAME" : {
"PROPERTY" : "VALUE",
},
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},
希望这是问题所在。
如果是这种情况,则使用snapshot.getValue().size()
来检索属性长度。
推荐阅读
- d3.js - 在 D3 sankey 图中更改节点颜色
- java - Java - 地图
> 遍历列表并跳过前 N 个条目 - pos-tagger - POS/NER 能够区分在多个上下文中使用的同一个词吗?
- php - 如何反序列化,然后将生成的多维数组转换为纯文本,去掉代码?
- azure - 将 Azure Sql 数据库限制为只能从不同区域的某些 Azure 应用服务访问
- python - 如何在 Pandas 中更改 MultiIndex 数据框列中某些行的值
- python - 使用 PySimpleGUI 时如何启用并响应最大化按钮
- vue.js - Vuetify:尽管 v-model 变量设置为 false,但 v-dialog 不会关闭
- c++ - 错误 LNK2005 DllMain 已在 uafxcw.lib(dllmodul.obj) 中定义
- javascript - 如何在 javascript 中为 ("1:2,2.2,3:4,4.1,5") 制作正则表达式?