gpt4 book ai didi

Java从firebase数据库检索用户数据并存储在变量Android Studio中

转载 作者:行者123 更新时间:2023-12-02 00:00:01 26 4
gpt4 key购买 nike

我在 stackoverflow 上到处查看,找不到我的问题,我试图检索的是从数据库中检索的用户 ID,以显示除该用户之外的所有在线用户,但是除了该用户之外,所有数据库信息都已存储id 导致以下崩溃

E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at USER.UsersFragment$1.onDataChange(UsersFragment.java:63).

这是我的用户文件

    public class User {
private String id;
private String username;
private String first_name;
private String last_name;
private String birthday;
private String email;
private String imageURL;

public User(String id, String username, String first_name, String last_name, String birthday, String email, String imageURL) {
this.id = id;
this.username = username;
this.first_name = first_name;
this.last_name = last_name;
this.birthday = birthday;
this.email = email;
this.imageURL = imageURL;
}

public User() {

}

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getFirst_name() {
return first_name;
}

public void setFirst_name(String first_name) {
this.first_name = first_name;
}

public String getLast_name() {
return last_name;
}

public void setLast_name(String last_name) {
this.last_name = last_name;
}

public String getBirthday() {
return birthday;
}

public void setBirthday(String birthday) {
this.birthday = birthday;
}

public String getEmail() {
return email;
}

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

public String getImageURL() {
return imageURL;
}

public void setImageURL(String imageURL) {
this.imageURL = imageURL;
}
}

这是我将信息存储到变量中的方式,崩溃的行被标记为“CRASH”。

    final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("users");

dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
mUsernames.clear();
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
assert user != null;
if(!user.getId().equals(firebaseUser.getUid())) { <-CRASH
mUsernames.add(user);
}
//Log.println(Log.DEBUG, "", user.getId());
}

userAdapter = new UserAdapter(getContext(), mUsernames);
recyclerView.setAdapter(userAdapter);
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});

最佳答案

问题是在您的数据库中,您有多个记录。但只有一条记录包含字段id

因此,在检索数据时,它是从不包含节点 id 的节点检索数据并返回错误。

关于Java从firebase数据库检索用户数据并存储在变量Android Studio中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com