这是我的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");
}
}
}
答案 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)
};
}