Когда вы пытаетесь использовать следующую строку кода:
Toast.makeText(getApplicationContext(), getted, Toast.LENGTH_LONG).show();
Значение getted
всегда будет содержать значение No
, поскольку к тому времени, когда вы пытаетесь передать это сообщение, данные еще не закончили загрузку из базы данных. Это происходит из-за асинхронного поведения метода onDataChange()
. Обратите внимание, что нет никаких гарантий относительно того, сколько времени это займет, это может занять от нескольких сотен миллисекунд до нескольких секунд, прежде чем эти данные станут доступны.
Быстрое решение этой проблемы - использование всей логики, связанной с переменной getted
, только внутри или вызываемой из onDataChange()
метода.
Если вам нужно использовать его вне функции обратного вызова, я рекомендую вам посмотреть последнюю часть моего ответа из этого поста , в котором я объяснил, как это можно сделать с помощью Пользовательский обратный звонок. Вы также можете взглянуть на это видео для лучшего понимания.