首页 > 解决方案 > 如何在 onComplete 方法中设置变量?

问题描述

目前我正在尝试将值传递给onComplete()方法内的字符串变量。但是,当我尝试在方法之外使用它时,它什么也没传递。

这是我的onComplete代码:

docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
        @Override
        public void onComplete(@NonNull Task<DocumentSnapshot> task) {
            if(task.isSuccessful()){
                DocumentSnapshot document = task.getResult();
                if(document.exists()){

                    Log.d(TAG,"User full name: " + document.getString("FullName"));
                    Log.d(TAG, "User email: " + document.getString("Email"));
                    donorFullName = document.getString("FullName");
                    donorEmail = document.getString("Email");
                    Log.d(TAG, "donorFullName set: " + donorFullName);
                    Log.d(TAG, "donorEmail set: " + donorEmail);

                }
            }
        }
    });

这是我试图在之外使用它onComplete

    BookingInformation bookingInformation = new BookingInformation();
    Log.d(TAG, "donorFullName bookingInformation: " + donorFullName);
    Log.d(TAG, "donorEmail bookingInformation: " + donorEmail);
    bookingInformation.setDonorName(donorFullName);
    bookingInformation.setDonorEmail(donorEmail);

这是我的日志:

在此处输入图像描述

标签: javaandroidfirebasegoogle-cloud-firestore

解决方案


OnComplete 是一个回调。它将在将来的某个时候调用,而不是立即调用。你无法知道那会是什么时候,因为它正在等待某些任务完成。任何需要 onComplete 结果的代码都需要在 onComplete 函数中调用,而不是在其他地方调用。


推荐阅读