【问题标题】:How to Break For each in Android? [closed]如何在Android中打破每个? [关闭]
【发布时间】:2022-01-12 11:42:24
【问题描述】:
FirebaseFirestore.getInstance().collection("registration").addSnapshotListener(new EventListener<QuerySnapshot>() {
    @Override
    public void onEvent(@Nullable QuerySnapshot value, @Nullable  FirebaseFirestoreException error) {
        for(DocumentSnapshot d:value){
       
            if(d.getId().equals(Name)){
                Toast.makeText(MainActivity.this, "User Name already exists", Toast.LENGTH_SHORT).show();
                break;
            }
            else{
                is_userExists = false;
            }
        }
    }
});

我想打破 foreach 循环,但代码运行不正常

【问题讨论】:

  • d.getId().equals(Name) retun 是什么意思?
  • 你得到这个祝酒词“用户名已经存在”了吗?如果不是,则没有与名称变量内容匹配的 ID
  • addSnapshotListener 不会在你想要的时候执行……它会执行以“同步”你所有的 firebase 数据和你的手机,所以不要把你的吐司放在这里……在 foreach 中,只复制所有 @ 987654324@ 到一个列表中(它必须是一个属性)。并且每当您想检查名称的重复时,从该列表中读取数据不在addSnapshotListener

标签: java android firebase google-cloud-firestore


【解决方案1】:

使用return关键字代替break;

FirebaseFirestore.getInstance().collection("registration").addSnapshotListener(new EventListener<QuerySnapshot>() {
                        @Override
                        public void onEvent(@Nullable QuerySnapshot value, @Nullable  FirebaseFirestoreException error) {
                            for(DocumentSnapshot d:value){
                           
                                if(d.getId().equals(Name)){
                                    Toast.makeText(MainActivity.this, "User Name already exists", Toast.LENGTH_SHORT).show();
                                    return;
                                }
                                else{
                                    is_userExists = false;
                                }
                            }
                        }
                    });

【讨论】:

    【解决方案2】:

    使用 void 方法执行此操作并返回而不是 break 可能更合乎逻辑。

    【讨论】:

      【解决方案3】:

      Break 应该按你的意愿工作,没有错。

      这里可能会发生以下情况之一:

      1. d.getId().equals(Name) 结果为 false,因为它们不相等
      2. d.getId() 导致 NullPointerException,因为 d 之前没有构造
      3. onEvent 甚至没有被调用...

      在这个答案中,我假设您的代码可以编译。

      【讨论】:

        猜你喜欢
        • 2014-07-22
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 2014-03-15
        • 2013-12-08
        • 1970-01-01
        • 2023-03-10
        相关资源
        最近更新 更多