【发布时间】:2015-06-28 16:40:45
【问题描述】:
我有一个执行 HttpPost 请求的 AsyncTask,我有一个字段是人们将他们的电子邮件放入其中,并且还有一个检查正确电子邮件的方法。如果电子邮件验证结果为假,我想做的是取消我的 AsyncTask。我已经尝试了几件事,但没有任何效果这是我的代码..
//check if email is valid
public boolean isEmailValid(String email) {
boolean isValid = false;
String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
CharSequence inputStr = email;
Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
if (matcher.matches()) {
return true;
}
return false;
}
// AsyncTask
private class DownloadFilesTask extends AsyncTask<String,String,String> {
String email;
@Override
protected void onPreExecute() {
super.onPreExecute();
Email= (EditText)findViewById(R.id.email);
email= Email.getText().toString().trim();
if(isEmailValid(email)== false){
Toast.makeText(Registration.this,"Not a valid Email",Toast.LENGTH_LONG).show();
// I would like to cancel Async here and return but this is a type Void
}
}
@Override
protected String doInBackground(String... params) {
// HttpPost stuff here I return a type String
}
// @Override
protected void onPostExecute(String file_uri) {
// post stuff
}
}
我的 onPreExecute() 是 void 类型,我尝试将其更改为 Boolean 类型,但在不兼容的类型上出现不匹配。我的 doinBackground 必须具有 String 类型,因为我正在向 onPostExecute 返回一些内容。如果电子邮件返回错误的任何建议,我只想中止 AsyncTask?
【问题讨论】:
标签: java android android-asynctask