首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Firestore中使用电子邮件和密码创建用户时从OnCompleteListener返回值?

如何在Firestore中使用电子邮件和密码创建用户时从OnCompleteListener返回值?
EN

Stack Overflow用户
提问于 2020-05-21 16:11:06
回答 1查看 741关注 0票数 1

我想要写的代码是

代码语言:javascript
运行
复制
private String val;
    public String checkEmail(){

        FirebaseFirestore db = FirebaseFirestore.getInstance();
        db.collection("cities").whereEqualTo("cities", "Boston").get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()){
                            val = "City exists";
                        }else{
                            val = "City does not exist";
                        }
                    }
                });
        return val;
    }

这段代码以null而不是值的形式返回val。如何解决这个问题呢?

EN

Stack Overflow用户

回答已采纳

发布于 2020-05-21 16:41:44

我确信这一点,因为调用是异步的,请将您的方法更改为非返回值(void),并创建一个接口回调以在调用完成时返回值。试试这个..。

代码语言:javascript
运行
复制
interface CityCallback {
     void isCityExist(boolean exist);
}

public void checkEmail(CityCallback cityCallback){
    FirebaseFirestore db = FirebaseFirestore.getInstance();
    db.collection("cities").whereEqualTo("cities", "Boston").get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()){
                        cityCallback.isCityExist(true);
                    }else{
                        cityCallback.isCityExist(false);
                    }
                }
            });
}

要调用该方法,它将如下所示

代码语言:javascript
运行
复制
checkEmail(new CityCallback {
      @Override
      public void isCityExist(boolean exist) {
           if (exist) {
              // set the value of variable val or anything
           } else {
              // set the value of variable val or anything
           }
      }
});

我希望它能帮助你

票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61930061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档