As funções do Firebase onCall salvam o resultado em uma variável no android [duplicado]

Nov 24 2020

Tento salvar o resultado da chamada de funções do firebase do app Android. Minha função funciona bem, porque vejo o resultado no log. Mas não posso salvá-lo em variável para uso posterior. Alguma ideia?

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
    }

Respostas

3 Vishnu Nov 24 2020 at 13:54

onSuccess()é assíncrono. Portanto, ao usar o valor de resultFBFunctions, ele pode estar vazio, pois os dados ainda não foram recuperados ...

Os dados recuperados devem ser usados ​​dentro do onSuccess()próprio método

Para resolver seu problema, use os dados recebidos dentro do onSuccess()próprio método

Especifique para que é resultFBFunctionsusado

Esta questão pode ajudá-lo. Sinta-se à vontade para pedir esclarecimentos