Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 用户详细信息中的Lgged未更改_Android_Firebase_Firebase Realtime Database_Firebase Authentication - Fatal编程技术网

Android 用户详细信息中的Lgged未更改

Android 用户详细信息中的Lgged未更改,android,firebase,firebase-realtime-database,firebase-authentication,Android,Firebase,Firebase Realtime Database,Firebase Authentication,因此,当我运行我的应用程序并登录时,当前用户的姓名和电子邮件将显示在导航抽屉中,但当我注销并与其他用户一起登录时,详细信息与前一个用户相同,数据将从数据库中检索,但在下一个用户登录时不会更改 我尝试使用getUid检查用户是否存在。但每当我在任何地方使用这段代码时,它都会给我一个空指针异常。我如何解决这个问题 非常感谢 代码如下: public void pushToNavHeader(){ mRef = FirebaseDatabase.getInstance().getRefe

因此,当我运行我的应用程序并登录时,当前用户的姓名和电子邮件将显示在导航抽屉中,但当我注销并与其他用户一起登录时,详细信息与前一个用户相同,数据将从数据库中检索,但在下一个用户登录时不会更改

我尝试使用
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) {
        }
    });

用户类

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;
        }

    }

假设您正在使用Firebase身份验证,检测登录用户已更改的正确方法是
FirebaseAuth.AuthStateListener
,如身份验证文档的“侦听身份验证状态”部分所述:

这些文档显示了一些应该会有所帮助的示例片段,但要获得更完整的示例,请查看


收听数据库的“用户”部分只会在更新数据库的“用户”部分时通知您,这不会帮助您在其他用户登录时更新应用程序。

请将代码粘贴为文本。永远不要使用你的代码截图:也请考虑阅读或采取更好的事实。清理评论。
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;
        }

    }