我正在 Android Studio 中迈出第一步。我在 Firebase 中有一个数据库,用于存储用户信息,每个条目都由电子邮件地址标识,由于某种原因,我无法检索 [1] 中的条目数据,[1] 代码在扩展 Fragment 的类中运行。而在扩展 AppCompatActivity 的另一个类的函数中也有类似的代码。
知道根本原因是什么吗? 与片段有联系吗?
任何帮助将不胜感激
10x
[1]
read_Data(indx, new UserCallback() {
@Override
public void onCallback(User user) {
if (user != null) {
playerdata = user;
} else {
showToast("something failed");
}
}
});
private void read_Data(String email, UserCallback callback) {
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Users");
Query query = reference.orderByChild("email").equalTo(email).limitToFirst(1);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
System.out.println("onDataChange! ");
if (dataSnapshot.exists()) {
System.out.println("snapshot exists! ");
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
User user = snapshot.getValue(User.class);
callback.onCallback(user);
return;
}
}
callback.onCallback(null);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
System.out.println("On cancelled! ");
callback.onCallback(null); // Pass null in case of error
}
});
}
我尝试在调用 [1] 函数后添加 call thread.sleep(2000) ,认为这可能有帮助,因为 addListenerForSingleValueEvent 是异步的,但事实并非如此