Query sqlite = mDatabaseReference.child("Messages").child(MessageSenderId).child(MessageRecieverId);
sqlite.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.hasChild("Message")) {
String msg = dataSnapshot.child("Message").getValue().toString();
String from = dataSnapshot.child("From").getValue().toString();
String time = dataSnapshot.child("Time").getValue().toString();
} else {
Toast.makeText(getApplicationContext(), "NULLLL", Toast.LENGTH_SHORT).show();
}
数据库
这是数据库中最基本的东西。我从来没有遇到过 childEvent
或 valueEvent
的问题,我现在想要一个事件,但我无法获取。
没有错误,因为我已经放置了一个 if 语句,它显示 toast 为 null,这意味着 dataSnapshot
没有名为 messages 的子项,但它就在那里。我也试过放一个 for 循环,但没用
最佳答案
您没有给出完整的引用。有一个按键列表,您必须使用 foreach 循环。
Query sqlite = mDatabaseReference.child("Messages").child(MessageSenderId).child(MessageRecieverId);
sqlite.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot vinSnapshot : dataSnapshot.getChildren()) {
if (vinSnapshot .hasChild("Message")) {
String msg = dataSnapshot.child("Message").getValue().toString();
String from = dataSnapshot.child("From").getValue().toString();
String time = dataSnapshot.child("Time").getValue().toString();
} else {
Toast.makeText(getApplicationContext(), "NULLLL", Toast.LENGTH_SHORT).show();
}
}
或者您可以将所有数据存储到 ArrayList 中,然后执行您的任务。
关于java - SingleValueEvent 显示为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53790174/