它显示了某些内容,但是来自错误的用户,而不是已登录的用户。事实上,它是最新的注册用户。有什么建议?这是我的代码:
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference ref = database.getInstance().getReference("userInfos");
ref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
UserInformation userInformation = dataSnapshot.getValue(UserInformation.class);
vorname.setText(userInformation.vorname);
nachname.setText(userInformation.nachname);
alter.setText(userInformation.alter);
sprachen.setText(userInformation.sprachen);
System.out.println("Prev: " + s);
}
答案 0 :(得分:1)
嗯,您正在使用的侦听器类型是添加新用户时将触发的ChildAdded(这就是您获取最后添加的用户的原因)要获取当前用户数据用户,请使用值事件侦听器并传递记录的用户ID:
String UID = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference ref = database.getInstance().getReference("userInfos");
ref.child(UID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
UserInformation userInformation = dataSnapshot.getValue(UserInformation.class);
vorname.setText(userInformation.vorname);
nachname.setText(userInformation.nachname);
alter.setText(userInformation.alter);
sprachen.setText(userInformation.sprachen);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
答案 1 :(得分:1)
当您使用以下代码行时:
System.out.println("Prev: " + s);
s
变量包含String类型的值,该值实际上来自重写方法onChildAdded()
的第二个参数。根据{{3}},第二个参数也可以写成:
onChildAdded(DataSnapshot snapshot, String previousChildName)
这就是你打印错误名字的原因。所以第二个参数实际上是前一个孩子的名字。