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