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 resultFBFunctionssłuży

To pytanie może ci pomóc. Zapraszam do proszenia o wyjaśnienia