Java 如何在谷歌登录的导航抽屉上显示用户详细信息,如姓名、电子邮件和图像?

Java 如何在谷歌登录的导航抽屉上显示用户详细信息,如姓名、电子邮件和图像?,java,android,firebase,firebase-realtime-database,firebase-authentication,Java,Android,Firebase,Firebase Realtime Database,Firebase Authentication,我想在用户登录谷歌的导航抽屉标题时获取用户的详细信息,如姓名、电子邮件id和图像。我通过谷歌登录成功验证了用户身份,但在抽屉上设置姓名、电子邮件和图片时应用程序崩溃 错误显示: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a

我想在用户登录谷歌的导航抽屉标题时获取用户的详细信息,如姓名、电子邮件id和图像。我通过谷歌登录成功验证了用户身份,但在抽屉上设置姓名、电子邮件和图片时应用程序崩溃

错误显示:

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) {

                }
            });

有没有办法解决这个问题?或者另一种方法?

您的错误消息会告诉您代码中的确切问题。因此,您正在对空对象引用调用
replace()
方法
。这意味着
mFirebaseUser.getEmail()
返回
null
。要解决这个问题,您需要在实际使用
mFirebaseUser
对象之前实例化它,如下所示:

FirebaseUser mFirebaseUser = FirebaseAuth.getInstance().getCurrentUser();
要获取用户电子邮件,只需使用以下代码行:

if (mFirebaseUser == null) {
    String userEmail = mFirebaseUser.getEmail();
}

它现在没有崩溃,但我没有达到我想要达到的目标。我想在导航标题上显示姓名、电子邮件地址和图像等详细信息,但没有显示此代码只是实例化
mFirebaseUser
对象,并从中获取用户电子邮件。我看您需要将
替换为
。您还希望实现什么?在导航抽屉标题上显示用户名、电子邮件地址和图像。我们解决了有关您参考中错误的问题后,代码的其他部分应该可以工作,还是您有错误?错误已解决。但是代码的其余部分不起作用。