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, и он показывает тост как нулевой, что означает, что у dataSnapshot нет дочернего объекта с именем messages, но он прямо здесь. Я тоже пробовал поставить цикл for, но не сработало
Но это push ID @JeelVankhede
Согласно вашему запросу к базе данных, для вашего UID не добавлен дочерний элемент, поэтому база данных будет напрямую ссылаться на дочерний элемент UID, и именно поэтому ваше сообщение является нулевым.
Но я ведь не знаю UID? так как я могу его получить. Обычно база данных просто проходит через это, но почему этого не происходит сейчас @JeelVankhede
Если вы попытаетесь жестко закодировать эти идентификаторы (MessageSenderId и MessageRecieverId), получите ли вы ожидаемый результат?




Вы не указали полную ссылку. Есть список нажимаемых клавиш, и вы должны использовать цикл 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, а затем выполнить свою задачу.
Вам не хватает возможности добавить
child(UID)как смотрящий из вашей базы данных, попробуйте один раз.