如果" .setError"停止动作遭遇

时间:2016-07-15 15:54:10

标签: java android

这是我的Android代码,这是一个注册页面,其中包含'名称'移动号码','电子邮件','密码&# 39;,'确认密码'并且我已经为任何editText添加了setError方法留空,但是当我点击"注册"按钮android显示错误消息,但它永远不会等待用户,它​​直接为注册按钮执行OnClick操作。

我需要的是用户点击"注册"如果有任何空白,则应检查空白区域,不应继续执行OnClick操作。

这是我的android代码:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_signup);
    final EditText etName = (EditText) findViewById(R.id.etName);
    final EditText etEmail = (EditText) findViewById(R.id.etEmail);
    final EditText etMobileNo = (EditText) findViewById(R.id.etMobileNo);
    final EditText etPassword = (EditText) findViewById(R.id.etPassword);
    final EditText etConfirmPassword = (EditText) findViewById(R.id.etConfirmPassword);
    final Button bSignUp = (Button) findViewById(R.id.bSignUp);

    bSignUp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            name = etName.getText().toString;
            email = etEmail.getText().toString();
            mobile = etMobileNo.getText().toString();
            password = etPassword.getText().toString();
            confirmpassword = etConfirmPassword.getText().toString();



            CheckMissing();     //Check for Missing entries and Password Matches.



            Response.Listener<String> responseListener = new Response.Listener<String>() {
                private ProgressDialog loading;
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonResponse = new JSONObject(response);
                        boolean success = jsonResponse.getBoolean("success");
                        loading = ProgressDialog.show(SignupActivity.this, "Thank You...", "Registering Now...", false, false);
                        if (success) {
                            loading.dismiss();
                            Intent intent = new Intent(SignupActivity.this, LoginActivity.class);
                            SignupActivity.this.startActivity(intent);
                        } else {
                            AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
                            builder.setMessage("Register Failed")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            };

            SignupRequest signupRequest = new SignupRequest(name, email, mobile, password, responseListener);
            RequestQueue queue = Volley.newRequestQueue(SignupActivity.this);
            queue.add(signupRequest);
        }
    });
}

public void CheckMissing() {
    EditText name = (EditText) findViewById(R.id.etName);
    if (name.getText().toString().isEmpty()) {
        name.setError("You need to enter name");
    }
    EditText email = (EditText) findViewById(R.id.etEmail);
    if (email.getText().toString().isEmpty()) {
        email.setError("You need to enter Email");
    }

    EditText mobile = (EditText) findViewById(R.id.etMobileNo);
    if (mobile.getText().toString().isEmpty()) {
        mobile.setError("You need to enter mobile");
    }
    EditText password = (EditText) findViewById(R.id.etPassword);
    String Pass = password.getText().toString();
    if (password.getText().toString().isEmpty()) {
        password.setError("You need to enter password");
    }
    EditText confirmpassword = (EditText) findViewById(R.id.etConfirmPassword);
    String Conpass = confirmpassword.getText().toString();
    if (confirmpassword.getText().toString().isEmpty()) {
        confirmpassword.setError("You need to enter confirmpassword");
    }
    if (!Pass.equals(Conpass)) {
        confirmpassword.setError("Password Doesnt Match");
    }
}
}

2 个答案:

答案 0 :(得分:3)

转换CheckMissing()以返回布尔值,例如:

public boolean isMissingFields(){...}

然后,在onClick方法中,您可以将CheckMissing()更改为:

if(isMissingFields()) return;

答案 1 :(得分:1)

public boolean CheckMissing() { boolean shouldProceed = true; EditText name = (EditText) findViewById(R.id.etName); if (name.getText().toString().isEmpty()) { name.setError("You need to enter name"); shouldProceed = false; } EditText email = (EditText) findViewById(R.id.etEmail); if (email.getText().toString().isEmpty()) { email.setError("You need to enter Email"); shouldProceed = false; } EditText mobile = (EditText) findViewById(R.id.etMobileNo); if (mobile.getText().toString().isEmpty()) { mobile.setError("You need to enter mobile"); shouldProceed = false; } EditText password = (EditText) findViewById(R.id.etPassword); String Pass = password.getText().toString(); if (password.getText().toString().isEmpty()) { password.setError("You need to enter password"); shouldProceed = false; } EditText confirmpassword = (EditText) findViewById(R.id.etConfirmPassword); String Conpass = confirmpassword.getText().toString(); if (confirmpassword.getText().toString().isEmpty()) { confirmpassword.setError("You need to enter confirmpassword"); shouldProceed = false; } if (!Pass.equals(Conpass)) { confirmpassword.setError("Password Doesnt Match"); shouldProceed = false; } return shouldProceed; } 中添加布尔返回类型:

if (!CheckMissing())
    return;

然后在注册按钮的OnClickListener中:

public HttpResponseMessage Get(string par)
{
    String JsonData, JsonFromXML;
    XElement root = XElement.Load("http://www.mywebsite.com/mapdata_xml.xml");
    IEnumerable<XElement> address =
        from el in root.Elements("marker")
        where (string) el.Attribute("province") == par
        orderby (string)el.Attribute("name")
        select el;


    var XMLData = "";
    foreach (XElement el in address)
        XMLData = XMLData + el;
    //XMLData = "<markers>" + XMLData + "</markers>";


    XmlDocument xd = new XmlDocument();
    xd.LoadXml("<markers>" + XMLData + "</markers>");

    JsonFromXML = JsonConvert.SerializeXmlNode(xd);

    JsonFromXML = JsonFromXML.Remove(0, 11);
    JsonFromXML = JsonFromXML.Substring(0, JsonFromXML.Length - 1);
    JsonData = JsonFromXML.Replace("\"@", "\"");

    return new HttpResponseMessage()
    {
        Content = new StringContent(JsonData)
    };
}