как получить данные FirebaseUser - PullRequest
0 голосов
/ 26 февраля 2020

попробуйте прочитать данные из Firebase, но получите эту ошибку:

E/AndroidRuntime: FATAL EXCEPTION: main
   Process: com.example.sozluk, PID: 5798
   java.lang.RuntimeException: java.lang.InstantiationException: Can't instantiate abstract class com.google.firebase.auth.FirebaseUser

мой код:

for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

                   Word2 word= new Word2();
                   word.setMean(postSnapshot.child("mean").getValue(String.class)) ;
                   word.setName(postSnapshot.child("name").getValue(String.class));
                   word.setControlled(postSnapshot.child("controlled").getValue(Boolean.class));
                   word.setAdded_by(postSnapshot.child("added_by").getValue(FirebaseUser.class));
                   word.setKey(postSnapshot.child("key").getValue(String.class));
                   words.add(word);
               }

1 Ответ

1 голос
/ 26 февраля 2020

Эта строка кода вызывает проблему:

word.setAdded_by(postSnapshot.child("added_by").getValue(FirebaseUser.class));

Firebase SDK не может десериализовать объект типа FirebaseUser, потому что, как говорится в сообщении об ошибке, это абстрактный класс. Это означает, что он может быть создан с использованием рефлексии, а это то, что должен делать здесь SDK базы данных реального времени.

У вас нет простого обходного пути. Поскольку это абстрактный класс, я предлагаю не использовать FirebaseUser напрямую ни в одном из ваших классов. Возможно, вам следует просто сохранить вместо этого строку UID пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...