ValueEventListener从未触发

时间:2018-08-25 21:51:59

标签: java android firebase-realtime-database

我有一个FragmenPageAdpater类,我试图在其中获取有关当前用户的信息,以便为该特定用户加载正确的片段。

ValueEventListener永远不会被触发,并且会不断跳过正文部分。

public SessionListAdapter(FragmentManager fragmentManager) {
    super(fragmentManager);

    mAuth = FirebaseAuth.getInstance();

    FirebaseDatabase myData = FirebaseDatabase.getInstance();
    final DatabaseReference dataUser = myData.getReference().child("Users").child(mAuth.getCurrentUser().getUid());

    dataUser.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {

            if(dataSnapshot.child("type").getValue(String.class).equals("Tutor")) //if(readType.equals("Tutor"))  if user is a Tutor
                user = dataSnapshot.getValue(Tutor.class);
            else
                user = dataSnapshot.getValue(Student.class);
        }

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

这是我的数据库结构的必要部分。

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要使用addListenerForSingleValueEvent,如下所示。我指的是这个Firebase documentation

dataUser.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
      if(dataSnapshot.child("type").getValue(String.class).equals("Tutor"))
          user = dataSnapshot.getValue(Tutor.class);
      else
          user = dataSnapshot.getValue(Student.class);
  }

  @Override
  public void onCancelled(DatabaseError databaseError) {}
});

希望有帮助!