我有两种相同的方法,一种是在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
答案 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) {
}
});
}
}