Firebase Android Неверный пользователь отображается - PullRequest
0 голосов
/ 08 мая 2018

Показывает что-то, но не от того пользователя, а не вошедшего в систему пользователя. На самом деле, это последний зарегистрированный пользователь. Какие-либо предложения? Вот мой код:

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference ref = database.getInstance().getReference("userInfos");

    ref.addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            UserInformation userInformation = dataSnapshot.getValue(UserInformation.class);
            vorname.setText(userInformation.vorname);
            nachname.setText(userInformation.nachname);
            alter.setText(userInformation.alter);
            sprachen.setText(userInformation.sprachen);
            System.out.println("Prev: " + s);
        }

Структура моей базы данных

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Когда вы используете следующую строку кода:

System.out.println("Prev: " + s);

Переменная s содержит значение типа String, которое фактически приходит из второго аргумента переопределенного метода onChildAdded(). Согласно официальной документации , второй аргумент также можно записать в виде:

onChildAdded(DataSnapshot snapshot, String previousChildName)

Вот почему вы печатаете неправильное имя. Таким образом, второй аргумент - это имя предыдущего ребенка.

0 голосов
/ 08 мая 2018

Ну, тип слушателя, который вы используете, это ChildAdded, который будет срабатывать, когда вы добавляете нового пользователя (вот почему вы получаете последнего добавленного пользователя). Чтобы получить текущего пользователя данных пользователя, используйте значение прослушиватель событий и передать идентификатор зарегистрированного пользователя:

 String UID = FirebaseAuth.getInstance().getCurrentUser().getUid();
 DatabaseReference ref = database.getInstance().getReference("userInfos");

        ref.child(UID).addValueEventListener(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot snapshot) {
         UserInformation userInformation = dataSnapshot.getValue(UserInformation.class);
            vorname.setText(userInformation.vorname);
            nachname.setText(userInformation.nachname);
            alter.setText(userInformation.alter);
            sprachen.setText(userInformation.sprachen);
      }
      @Override
      public void onCancelled(DatabaseError databaseError) {        
      }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...