Java ValueEventListener从未触发
我有一个Java ValueEventListener从未触发,java,android,firebase-realtime-database,Java,Android,Firebase Realtime Database,我有一个FragmenPageAdpater类,在这个类中我试图获取当前用户的信息,以便为这个特定用户加载正确的片段 ValueEventListener从未被触发,它一直跳过身体部位 public SessionListAdapter(FragmentManager fragmentManager) { super(fragmentManager); mAuth = FirebaseAuth.getInstance(); FirebaseDatabase myDat
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) {
}
});
}
下面是我的数据库结构的必要部分
您需要使用
addListenerForSingleValueEvent
如下所示。我指的是这个
希望有帮助 你在哪里声明用户对象?在它上面作为一个公共变量,它的类型是Student还是Tutory?我有一个用户类,它是Student和Tutortry类型的父类,用于调试你的代码并检查是否存在dataSnapshot。你的代码没问题。另外,请确保您从数据快照中获取了正确的对象进行强制转换
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) {}
});