Firebase getChildrenCount() показывает 0

#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() для получения длины свойств.