Как отобразить данные пользователя, такие как имя, адрес электронной почты и изображение, на панели навигации в Google Войти? - PullRequest
0 голосов
/ 05 июня 2018

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

Ошибка показывает:

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a null object reference

И код, связанный с этим

        FirebaseDatabase.getInstance().getReference(Constants.USER_KEY).child(mFirebaseUser.getEmail().replace(".", ","))
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.getValue() != null){
                        Users users = dataSnapshot.getValue(Users.class);
                        Glide.with(MainActivity.this)
                                .load(users.getPhotoUrl())
                                .into(mDisplayImageView);
                        mNameTextView.setText(users.getUser());
                        mEmailTextView.setText(users.getEmail());
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

Есть ли способ решить эту проблему?Или альтернативный способ?

1 Ответ

0 голосов
/ 05 июня 2018

Ваше сообщение об ошибке сообщает вам точную проблему в вашем коде.Итак, вы вызываете replace() метод on a null object reference.Это означает, что mFirebaseUser.getEmail() возврат null.Чтобы решить эту проблему, вам нужно создать экземпляр объекта mFirebaseUser перед его фактическим использованием, например:

FirebaseUser mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();

И чтобы получить электронную почту пользователя, просто используйте следующую строку кода:

if (mFirebaseUser == null) {
    String userEmail = mFirebaseUser.getEmail();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...