База данных в реальном времени Firebase не возвращает все значения на Android отладка Версия APK

android firebase firebase-realtime-database

686 просмотра

1 ответ

Мое приложение работает нормально при установке из Android-студии, но при использовании отладочной версии APK Firebase по какой-то причине не загружает все значения из базы данных в реальном времени. Я понятия не имею, почему это происходит только в версии APK.

Чтобы понять, что не работает, у меня есть слушатель следующим образом:

ValueEventListener questionListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        GenericTypeIndicator<List<Question>> t = new GenericTypeIndicator<List<Question>>() {};
            mQuestions = (ArrayList<Question>) dataSnapshot.getValue(t);

    ...

mDatabase.child("surveys").child("surveyName").child("questions").addValueEventListener(questionListener);

Проблема в том, что внутри вопроса есть опции вопроса, и у каждой опции есть несколько параметров. Когда я устанавливаю приложение через Android Studio, оно получает все параметры и работает нормально. Однако, когда я собираю отладочный APK и устанавливаю его, то один из параметров отсутствует (по всем вопросам). Что еще более странно, так это то, что это происходит только для одного поля. Это поле раньше было логическим, но я изменил его на строку, чтобы посмотреть, будет ли это иметь значение. К сожалению, это все еще та же проблема.

Кто-нибудь знает, почему это может происходить или где я могу даже посмотреть?

Для каждого варианта вопроса в базе данных установлено это поле. Почему он не загружает его при использовании версии APK? Это ошибка?

Благодарю.

Автор: Michael Vescovo Источник Размещён: 08.11.2019 10:58

Ответы (1)


1 плюс

Решение

Ну, похоже, я решил свой вопрос. Я не вижу упоминания об этом на странице документации https://firebase.google.com/docs/database/android/retrieve-data, но это действительно должно что-то сказать.

Похоже, что для Firebase требуется наличие геттера для каждого параметра с точным написанием «get <имя параметра>». Если у вас есть что-то вроде «public Boolean HasExtraInput», это не сработает.

Я протестировал «получить <имя параметра>», а затем «собирается» <имя параметра> ». Первый работает, а второй терпит неудачу, а все остальное идентично. И этот метод даже не используется в Android Studio, поэтому он может быть только Firebase.

Интересно, что он работает при запуске из Android Studio независимо, но при использовании APK он разваливается с другим написанием. Не уверен, почему это так, но, по крайней мере, я знаю, как заставить это работать.

Автор: Michael Vescovo Размещён: 20.08.2016 11:31
32x32