我有一个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) {
}
});
}
这是我的数据库结构的必要部分。
答案 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) {}
});
希望有帮助!