我什么都试过了,但解决不了这个问题。Firebase getChildrenCount()显示0,重新启动时显示0。但是当我在应用程序打开后第一次开始这个活动时,它就显示了正确的数据。我试图为onCancelled为ValueEventLisener查找日志错误,但它们不是错误。
请帮我解决这个问题。
我的代码
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());
}
});My DataBase
"Friends" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : {
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true",
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "true"
},
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "true"
},
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},
}发布于 2020-12-04 15:13:27
我想你的数据库里没有孩子,孩子参考。
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},也许,如果这个结构是这样的,它被认为是儿童。
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"CHILD NAME" : {
"PROPERTY" : "VALUE",
},
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},希望这就是问题所在。
如果是这样的话,那么使用snapshot.getValue().size()检索属性长度。
https://stackoverflow.com/questions/65144808
复制相似问题