Firebase onCall-Funktionen speichern das Ergebnis in einer Variablen in Android [Duplikat]

Nov 24 2020

Ich versuche, das Ergebnis des Aufrufs von Firebase-Funktionen über die Android-App zu speichern. Meine Funktion funktioniert gut, da das Ergebnis im Protokoll angezeigt wird. Aber ich kann es nicht zur weiteren Verwendung in Variablen speichern. Irgendwelche Ideen?

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
    }

Antworten

3 Vishnu Nov 24 2020 at 13:54

onSuccess()ist asynchron. Wenn Sie also den Wert von verwenden resultFBFunctions, ist er möglicherweise leer, da die Daten noch nicht abgerufen wurden ...

Die abgerufenen Daten sollten innerhalb der onSuccess()Methode selbst verwendet werden

Verwenden Sie zur Lösung Ihres Problems die in der onSuccess()Methode selbst empfangenen Daten

Bitte geben Sie an, wofür resultFBFunctionsverwendet wird

Diese Frage kann Ihnen helfen. Fühlen Sie sich frei, um Klarstellungen zu bitten