Firebase onCall関数は、結果をandroidの変数に保存します[重複]

Nov 24 2020

Androidアプリからfirebase関数を呼び出した結果を保存しようとしています。ログに結果が表示されるため、関数は正常に機能します。しかし、それを変数に保存してさらに使用することはできません。何か案は?

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
    }

回答

3 Vishnu Nov 24 2020 at 13:54

onSuccess()非同期です。したがって、の値を使用してresultFBFunctionsいる場合、データがまだ取得されていないため、値が空になる可能性があります。

取得したデータは、onSuccess()メソッド自体の内部で使用する必要があります

問題を解決するには、onSuccess()メソッド自体の内部で受信したデータを使用します

resultFBFunctions用途を指定してください

この質問はあなたを助けるかもしれません。ご不明な点がございましたら、お気軽にお問い合わせください