Я установил метод получения в моем ViewModel
, чтобы получить поле типа Long с именем cWeek
. Когда я использую value.getLong
внутри addSnapshotListener
, он работает и возвращает значение из базы данных, но когда я пытаюсь вернуть его, переменная равна нулю. Я серьезно не знаю, что искать для решения этой проблемы.
Getter
// this var is initialized in global scope
Long cWeek = getCWeek();
public Long getCWeek() {
new References()
.getUserRefDoc()
.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override
public void onEvent(@Nullable DocumentSnapshot value, @Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.d(TAG, "Could not get cWeek data " + e);
}
Long var = (Long) value.get("cWeek");
cWeek = var;
Log.d(TAG, "cWeek: " + cWeek);
}
});
Log.d(TAG, "cWeek AFTER: " + cWeek);
return cWeek;
}
Logcat:
D/DashboardViewModel: cWeek AFTER: null
D/DashboardViewModel: cWeek: 1