Les fonctions Firebase onCall enregistrent le résultat dans une variable dans Android [duplicate]

Nov 24 2020

J'essaie d'enregistrer le résultat de l'appel des fonctions Firebase à partir de l'application Android.Ma fonction fonctionne bien, car je vois le résultat dans le journal. Mais je ne peux pas l'enregistrer dans une variable pour une utilisation ultérieure. Des idées?

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
    }

Réponses

3 Vishnu Nov 24 2020 at 13:54

onSuccess()est asynchrone. Ainsi, lorsque vous utilisez la valeur de resultFBFunctions, elle peut être vide car les données ne sont pas encore récupérées ...

Les données récupérées doivent être utilisées dans la onSuccess()méthode elle-même

Pour résoudre votre problème, utilisez les données reçues dans la onSuccess()méthode elle-même

Veuillez préciser ce qui est resultFBFunctionsutilisé pour

Cette question peut vous aider. N'hésitez pas à demander des précisions