Нет случаев, когда вы можете использовать значение, полученное за пределами другого, о котором я уже упоминал в своем ответе. Вы не можете вернуть то, что еще не загружено. Ваше решение не является легким, не будет работать вообще. Попробуйте использовать записи журнала, и вы поймете, что я имею в виду.

я нет большого опыта работы с Java. Я не уверен, что этот вопрос глуп, но мне нужно получить имя пользователя из базы данных Firebase в реальном времени и вернуть это имя в результате этого метода. Итак, я выяснил, как получить это значение, но я не понимаю, как вернуть его как результат этого метода. Какой лучший способ сделать это?

private String getUserName(String uid) {
    databaseReference.child(String.format("users/%s/name", uid))
            .addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // How to return this value?
            dataSnapshot.getValue(String.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });
}
 Alex Mamo17 дек. 2017 г., 10:37
Как сказал @PeterHaddad, потому чтоonDataChange() Метод называется асинхронным, он не будет работать. Пожалуйста, смотрите мой ответ.
 Peter Haddad21 февр. 2018 г., 21:03
Прочитайте это, чтобы понять, как решить асинхронную базу данных с одной или несколькими ссылками на базу данных:stackoverflow.com/questions/48720701/...
 Doug Stevenson16 февр. 2018 г., 17:20
Прочитайте это, чтобы понять, почему API Firebase являются асинхронными:medium.com/@CodingDoug/...
 Rosário Pereira Fernandes17 дек. 2017 г., 00:28
Как упоминалось в @PeterHaddad, метод onDataChange является асинхронным, что означает, что он всегда будет возвращать ноль. Могу я спросить: зачем вам возвращать имя пользователя? Почему бы просто не использовать это имя внутри onDataChange?

Ответы на вопрос(0)

Ваш ответ на вопрос