Cloud Farestore, addOnCompleteListener, мой метод не возвращает прочитанные данные
Всем доброго времени суток! Ребят, у меня есть класс для работы с БД. Я вызываю мой метод ReadDocument для прочтения документа и возврата его в виде Map<String, Object>. Мне метод ничего не возвращает. Причем отладчиком вижу, что документ вычитан из БД, 18 параметров, значения правильные, но дальше код выполняется и на уровне return уже карта пустая. Подскажите плз идеи. Пробовал читать только строку. Пробовал делать static, игрался с модификаторами доступа. Куда рыть? Метод вызываю из фрагмента в onActivityCreated().
private Map<String, Object> mapDocument; //коллекция ключ-значение, будем возвращать ее
mapDocument = new HashMap<String, Object>();
...
public Map<String, Object> ReadDocument (final String nameCollection, final String nameDocument) {
documentReference = firebaseFirestore.collection(nameCollection).document(nameDocument); // формируем путь к документу
documentReference.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() { // вешаем слушателя на задачу чтения документа из БД
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) { // как задача чтения выполнилась
if (task.isSuccessful()) { // если выполнилась успешно
DocumentSnapshot document = task.getResult(); // получаем документ
if (document.exists()) { // если документ такой есть, не null
mapDocument = document.getData(); // получаем данные из документа БД
} else { // если документа не существует
Log("DataBase", "ReadDocument", "Запрошенного документа (" + nameCollection + "/" + nameDocument + ") нет в БД");
}
} else { // если ошибка чтения БД
Log ("DataBase", "ReadDocument", "Ошибка чтения БД: " + task.getException());
}
}
});
return mapDocument;
}