Вызывается onDataChange
, независимо от того, есть результат или нет.Чтобы проверить, есть ли фактический результат, используйте dataSnapshot.exists()
:
data.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()) {
String order_number = String.valueOf(System.currentTimeMillis());
requests.child(order_number).setValue(request);
// Delete Cart
new Database(getBaseContext()).cleanCart();
Toast.makeText(Cart.this, "You have ordered from menu 1", Toast.LENGTH_SHORT).show();
finish();
sendNotificationOrder(order_number);
Toast.makeText(Cart.this, "You did not order from menuId 1", Toast.LENGTH_SHORT).show();
}
}
Если вам действительно нужно обработать результат, помните следующее.
При выполнениизапрос к базе данных Firebase, возможно, будет несколько результатов.Таким образом, снимок содержит список этих результатов.Даже если есть только один результат, снимок будет содержать список из одного результата.
Таким образом, ваш код должен обрабатывать список результатов, перебирая dataSnapshot.getChildren()
:
data.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
String order_number = String.valueOf(System.currentTimeMillis());
requests.child(order_number).setValue(request);
// Delete Cart
new Database(getBaseContext()).cleanCart();
Toast.makeText(Cart.this, "You have ordered from menu 1", Toast.LENGTH_SHORT).show();
finish();
sendNotificationOrder(order_number);
Toast.makeText(Cart.this, "You did not order from menuId 1", Toast.LENGTH_SHORT).show();
}
}