Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ValueEventListener从未触发_Java_Android_Firebase Realtime Database - Fatal编程技术网

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