Когда вы реализуете ValueEventListener
, вы должны реализовать оба метода этого интерфейса: onDataChange
и onCancelled
. Кажется, вы изменили имя onDataChange
на deleDelete
, что означает, что компилятор больше не может найти onDataChange
, что приводит к получаемой вами ошибке.
Чтобы устранить проблему, переименуйте deleDelete
назад к onDataChange
:
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
void onDataChange(DataSnapshot snapshot) {
if (snapshot.hasChild("qrCode")) {
// run some code
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
Если вы хотите использовать имя метода deleDelete
для ясности, вы можете включить это в реализацию. Вам просто нужно убедиться, что вы по-прежнему используете onDataChange
, иначе компилятор не знает, что делать.
Так что-то вроде:
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
void onDataChange(DataSnapshot snapshot) {
deleteDelete(snapshot)
}
void deleteDelete(DataSnapshot snapshot) {
if (snapshot.hasChild("qrCode")) {
// run some code
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore errors
}
});
Вы заметите, что deleteDelete
здесь не помечено @Override
, поскольку не переопределяет / не реализует метод из ValueEventListener
.