Firebase查询执行顺序不对

时间:2016-10-18 14:07:49

标签: android firebase firebase-realtime-database

我正在使用firebase,我需要检查用户名是否存在, 我使用Query检查所有用户名,如果我找到相同的用户名,则无法继续创建帐户。 但由于某种原因,Query已执行,即使我可以在调试器中输入查询,也可能是在最后执行的查询或其他内容,而不是代码的顺序。

希望你能帮助我, 这是我的代码片段:

顺便说一句,如果那件事情的话,该片段就在AlertDialog中。

  btnCreate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    errorFlag = 0;

                    txtNote = (TextView) view.findViewById(R.id.note);
                    txtEmailReg = (EditText) view.findViewById(R.id.txtEmailReg);
                    txtPassReg = (EditText) view.findViewById(R.id.txtPassReg);
                    txtRepassReg = (EditText) view.findViewById(R.id.txtRepassReg);
                    txtUsernameReg = (EditText) view.findViewById(R.id.txtUsername);

                    final ArrayList<String> Users = new ArrayList<String>();
                    Query query = mDatabaseReference.child("users").orderByKey();
                    query.addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                                String userName = snapshot.getValue((User.class)).username;
                                Users.add(new String(userName));
                            }
                            if (Users.size() > 0) {
                                for (int i = 0; i < Users.size(); i++) {
                                    if (txtUsernameReg.getText().toString().equals(Users.get(i))) {
                                        Toast.makeText(LoginActivity.this, "username exists", Toast.LENGTH_SHORT);
                                        errorFlag = 1;
                                    }
                                }
                            }
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {

                        }

                    });

                    if (errorFlag == 0) {
                        if (txtRepassReg.getText().toString().length() == 0 || txtEmailReg.getText().toString().length() == 0 || txtPassReg.getText().toString().length() == 0
                                || txtUsernameReg.getText().toString().length() == 0) {
                            errorFlag = 1;
                            txtNote.setText("one empty field");
                        }

                        if (!(txtRepassReg.getText().toString().equals(txtPassReg.getText().toString()))) {

                            errorFlag = 1;
                            txtNote.setText("password doesn't match");
                        }

                        if (errorFlag == 0) {
                            CreateAcc(txtEmailReg.getText().toString(), txtPassReg.getText().toString(), dialog,
                                    txtUsernameReg.getText().toString());
                        }
                    }
                }


            });

0 个答案:

没有答案