Funkcje Firebase onCall zapisują wynik w zmiennej w systemie Android [duplikat]
Nov 24 2020
Próbuję zapisać wynik wywołania funkcji firebase z aplikacji na Androida Moja funkcja działa dobrze, bo wynik widzę w logu. Ale nie mogę zapisać go w zmiennej do dalszego użytku. Jakieś pomysły?
public void getUserRankFromFirebase(){
mFunctions = FirebaseFunctions.getInstance();
Map<String, Object> data = new HashMap<>();
String resultFBFunctions = "";
mFunctions
.getHttpsCallable("getUserOnCall")
.call(data)
.addOnSuccessListener(getActivity(), new OnSuccessListener<HttpsCallableResult>() {
@Override
public void onSuccess(HttpsCallableResult httpsCallableResult) {
resultFBFunctions = httpsCallableResult.getData().toString();
Log.d("result1", httpsCallableResult.getData().toString()); //I see result here
}
});
Log.d("result2", resultFBFunctions); // No result here
}
Odpowiedzi
3 Vishnu Nov 24 2020 at 13:54
onSuccess()
jest asynchroniczna. Tak więc, kiedy używasz wartości resultFBFunctions
, może być pusta, ponieważ dane nie zostały jeszcze pobrane ...
Odzyskane dane należy wykorzystać w onSuccess()
samej metodzie
Aby rozwiązać problem, użyj danych otrzymanych w onSuccess()
samej metodzie
Proszę określić, do czego resultFBFunctions
służy
To pytanie może ci pomóc. Zapraszam do proszenia o wyjaśnienia