`addListenerForSingleValueEvent()` не запускается в Android Firebase

Тот же код работал бы раньше, но теперь он внезапно перестал работать, ничего не меняя!

Мой код:

private void readData(final ReadData read) {
    Log.i("test", "Users 1: " + ref);
    ref.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            users.clear();
            totalUsers.clear();
            Log.i("test", "Users 2: " + ref);
            for (DataSnapshot items : snapshot.getChildren()) {
                if (items.exists()) {
                    UserChangeInfo user = items.getValue(UserChangeInfo.class);
                    assert user != null;
                    totalUsers.add(user);
                    if (!user.getNewPassword().equals("")) {
                        users.add(user);
                    }
                }
            }
            read.onCallback();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Log.i("test", "Error 1: " + error.getMessage());
            Log.i("test", "Error 2: " + error.getDetails());
        }
    });

}

Здесь Log.i("test", "Users 1: " + ref); казнят. Но Log.i("test", "Users 2: " + ref);, Log.i("test", "Error 1: " + error.getMessage());, Log.i("test", "Error 2: " + error.getDetails()); не казните.

Итак, похоже, addListenerForSingleValueEvent() не срабатывает. Я застрял здесь на несколько дней. Почему??

Я прочитал так:

readData(new ReadData() {
            @Override
            public void onCallback() {
                Log.i("test", "Users 3: " + ref);
                adapter.notifyDataSetChanged();
                String s = "Total Users: " + totalUsers.size() + "\n\n\nUpdate Request: " + users.size();
                txtTotalChangeReq.setText(s);

                if (users.size() > 0){
                    lstUpdateRequestList.setVisibility(View.VISIBLE);
                    lstTotalUserList.setVisibility(View.GONE);
                    showRequestedUsers.setChecked(true);
                    showAllUser.setChecked(false);
                    showInactiveUsers.setChecked(false);
                    String ss = "Change request list";
                    listLabel.setText(ss);
                }
                else{
                    lstTotalUserList.setVisibility(View.VISIBLE);
                    lstUpdateRequestList.setVisibility(View.GONE);
                    showAllUser.setChecked(true);
                    showRequestedUsers.setChecked(false);
                    showInactiveUsers.setChecked(false);
                    String ss = "Total user list";
                    listLabel.setText(ss);
                }
            }
        });
        Log.i("test", "Users 4: " + ref);

Но здесь Log.i("test", "Users 3: " + ref); не выполняется, и здесь ничего не выполняется, кроме этого вызова Log.i("test", "Users 4: " + ref);.

примечание: есть предупреждение в виде W/System: Ignoring header X-Firebase-Locale because its value was null., но все говорят, что это предупреждение не имеет ничего общего с моим кодом.

Н/Б:

  1. Объявлен реф как: ref = FirebaseDatabase.getInstance().getReference().child("change request");
  2. ссылка не нулевая: ref = https://myFirebaseAppLink/change%20request
  3. Аутентификация разрешена.
  4. Использовал зависимости: implementation platform('com.google.firebase:firebase-bom:26.1.1') и другие зависимости firebase.
  5. Соединение Wi-Fi в порядке. (Другие приложения Firebase также работают).
  6. Приложение связано с firebase.
2
0
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У меня была почти аналогичная проблема. Используйте временный ArrayList ex: tmp1,tmp2 вместо users и totalUsers, затем передайте эти два ArrayList в read.onCallback(tmp1,tmp2).[внутри метода private void readData (1-й код)]. Затем внутри вашего readData>onCallBack[2nd code]

users.clear();
totalUsers.clear();
users.addAll(tmp1);
totalUsers.addAll(tmp2);

тогда делай свою работу.

Другие вопросы по теме