База данных Firebase: ошибка «Конструктор без аргументов», несмотря на ее наличие - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь записать данные в упражнении, а затем прочитать его в другом упражнении.Моя письменная часть работает.Для моей части чтения я пытаюсь использовать getValue с параметром класса, который я написал.Но я продолжаю получать эту ошибку:

com.google.firebase.database.DatabaseException: Class ozhan.climb.MainActivity $ Пользователь не определяет конструктор без аргументов.Если вы используете ProGuard, убедитесь, что эти конструкторы не удалены.

Мой класс, который использовался в getValue () :

class User {
    public String  Server,
            NeededRole,
            Role,
            SummonerName;

    User() {}

    public String get_Server() {
        return Server;
    }

    public String get_NeededRole() {
        return NeededRole;
    }

    public String get_Role() {
        return Role;
    }

    public String get_SummonerName() {
        return SummonerName;
    }
}

и здеськод, который должен получить данные:

public void getUserData(){
    final TextView tv_sumName = findViewById(R.id.tv_sumName),
             tv_neededRole = findViewById(R.id.tv_neededrole),
             tv_userRole = findViewById(R.id.tv_userrole),
             tv_server = findViewById(R.id.tv_server);
    final String uid = Objects.requireNonNull(mAuth.getCurrentUser()).getUid();

    DatabaseReference usersDataRef = databaseRef.child("Users").child(uid);
    usersDataRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            User u = dataSnapshot.getValue(User.class);
            if (u != null) {
                tv_server.setText(u.Server);
                tv_neededRole.setText(u.NeededRole);
                tv_userRole.setText(u.Role);
                tv_sumName.setText(u.SummonerName);
            }
        }
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    });
}

1 Ответ

0 голосов
/ 15 октября 2018

Исключение говорит о том, что ваш класс ozhan.climb.MainActivity$User - т.е. это внутренний класс MainActivity.

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

Ваш класс User должен быть классом static, который не имеет того же требования, чтобы существовать только в экземпляресодержащий класс:

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