首页 > 解决方案 > Firebase Android 显示错误用户

问题描述

它显示了一些东西,但来自错误的用户,而不是登录的用户。事实上,它是最新的注册用户。有什么建议么?这是我的代码:

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

我的数据库结构

标签: javaandroidfirebasefirebase-realtime-database

解决方案


好吧,您使用的侦听器类型是 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) {        
      }
    });

推荐阅读