#android #firebase #firebase-realtime-database
# #Android #firebase #firebase-база данных в реальном времени
Вопрос:
Я перепробовал все, но не смог решить эту проблему. 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());
}
});
Моя база данных
"Friends" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : {
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true",
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "true"
},
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : "true"
},
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},
}
Ответ №1:
Я думаю, что в вашей дочерней ссылке базы данных нет дочерних элементов.
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},
Возможно, если структура такая, она считается дочерней.
"stg15QKZFhNmTCYrgL5PtQ4wxJf2" : {
"CHILD NAME" : {
"PROPERTY" : "VALUE",
},
"QygAGx6eszWENoVvEdaL1uEwFxW2" : "true",
"hLEGHsnKunew0NTqOH8dd4TnzfZ2" : "true"
},
Надеюсь, это проблема.
Если это так, то используйте snapshot.getValue().size()
для получения длины свойств.