Firebase查询2种相同的方法之一正在工作,其他没有

时间:2019-01-24 02:06:55

标签: android firebase firebase-realtime-database

我有两种相同的方法,一种是在Query中声明字符串,另一种是通过变量声明它,但是当我运行apk时,我在Query中声明字符串有效,而另一种则无效。

第一种方法:

tikz('test.tex', width = 4, height = 3)
par(mar=c(3,6,3,3))
plot(x = 1, y = 1, 
  xlim = c(1,2), ylim = c(1,2),
  ylab = '$\\left(A_B^C\\right)_{D_2} \\bigg/  \\left(E_F^G\\right)_{H}$')
dev.off()

第二种方法:

 private void randomtest() {

    Query query = FirebaseDatabase.getInstance().getReference("users").orderByChild("username").equalTo("darkarcher5");
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot users : dataSnapshot.getChildren()) {
                User user = users.getValue(User.class);
                Log.e("username", user.getUsername());
                Log.e("password", user.getPassword());
                userList.add(user);
            }
            txtViewPass.setText(userList.get(0).getUsername());

        }

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

        }
    });

}

第二种方法给出的错误:java.lang.IndexOutOfBoundsException:索引:0,大小:0

1 个答案:

答案 0 :(得分:1)

在第一种方法中,查询是在“ 用户”节点上引用的,而在第二种方法中,查询是在“ 用户”节点上引用的。如果我是正确的,则您尝试使用Firebase数据库中不可用的第二种方法连接到“用户”节点。这就是为什么indexoutofbounds。

尝试使用此:

private  void neRandomTest() {
if (username != null) {
    //Query query = FirebaseDatabase.getInstance().getReference("user").orderByChild("username").equalTo(username);

    Query query = FirebaseDatabase.getInstance().getReference("users").orderByChild("username").equalTo(username);
    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot users : dataSnapshot.getChildren()) {
                User user = users.getValue(User.class);
                Log.e("username", user.getUsername());
                Log.e("password", user.getPassword());
                userList.add(user);
            }
            txtViewPass.setText(userList.get(0).getUsername());

        }

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

        }
    });
}
}