0

Итак, когда я запускаю свое приложение, и я вхожу в систему, имя и адрес электронной почты текущего пользователя отображаются в навигационном ящике, но когда я выхожу из системы и вхожу в систему с другим пользователем, детали остаются то же самое из предыдущего пользователя, данные извлекаются из базы данных, но не меняются при следующем входе в систему.Невозможно изменить данные пользователя

Я попытался проверить, существует ли пользователь, используя getUid. но всякий раз, когда я использую этот фрагмент кода в любом месте, он дает мне исключение с нулевым указателем. Как это разрешить?

Высокую оценку

код следующим образом:

public void pushToNavHeader(){ 

    mRef = FirebaseDatabase.getInstance().getReference(); 
    mRef.child("Users").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
       if (dataSnapshot.exists()) { 
         for (DataSnapshot data : dataSnapshot.getChildren()) { 
          NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
          View v = navigationView.getHeaderView(0); 
          TextView nName = (TextView) v.findViewById(R.id.textView4); 
          TextView nEmail = (TextView) v.findViewById(R.id.textView); 

          nName.setText(""); 
          nEmail.setText(""); 


          Users user = data.getValue(Users.class); 
          name = user.getName(); 
          email = user.getEmail(); 

          nName.setText(name); 
          nEmail.setText(email); 
         } 
        } 

       } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
     } 
    }); 

Firebase database

{ 
    "Users" : 
{ 
    "7wWFORCN8NMHoihSJeGs7pBWakt1" : 
{ 
     "email" : "[email protected]", 
     "name" : "ben" 
    }, 
    "FYcpquwFVfTrIPsXda82BSb2vpr1" : 
{ 
     "email" : "[email protected]", 
     "name" : "neesan" 
    } 
    } 
} 

Пользователи класса

public class Users { 

    private String name; 
    private String email; 
    private String password; 

     public Users(){ 
     } 

     public String getName(){ 
      return name; 
     } 

     public void setName(String name){ 
      this.name = name; 
     } 

     public String getEmail(){ 
      return email; 
     } 

     public void setEmail(String email){ 
      this.email = email; 
     } 

    } 
+1

Пожалуйста, вставьте свой код в виде текста. Никогда не используйте скриншот для своего кода: http://meta.stackoverflow.com/questions/303812/discourage-screenshots-of-code-and-or-errors Пожалуйста, также подумайте о том, чтобы прочитать [ask] или взять [tour] – Mat

+0

Лучше. Очистка комментариев. –

ответ

0

Предполагая, что вы используешь Firebase аутентификацию, правильный путь, чтобы обнаружить, что зарегистрированный пользователь изменил это FirebaseAuth.AuthStateListener, как описано в разделе «Прислушайтесь состояниями Идента» из документации Authentication: https://firebase.google.com/docs/auth/android/start/

Документов показать пример фрагменты, которые должны help, но для более полного примера проверьте AnonymousAuthActivity.java.

Прослушивания в раздел «Пользователи» ваша базы данных будут только уведомить вас, когда раздел «Пользователи» вашей базы данных обновляется, что не поможет вам обновить приложение, когда различный вход пользователя в системе.

Смежные вопросы