Я хочу проверить, является ли идентификатор электронной почты, введенный пользователем уникальным или нет, для этого изначально у меня есть моя переменная Boolean valid = false;
. При нажатии кнопки я беру введенный идентификатор электронной почты и проверяю его на действительное выражение id электронной почты, используя регулярное выражение, а затем я использую asyntask для проверки его уникальности. Код в моем onclicklistner являетсяПрограмма не выполняется в правильном порядке в Android Studio
if (emailid.matches(regexp) && emailid.length() > 0) { new Validate().execute(); Toast.makeText(getApplicationContext(), valid.toString(), Toast.LENGTH_LONG).show(); if (valid) { data.putString("eid", eid); data.putString("firstname", firstname); data.putString("lastname", lastname); data.putString("emailid", emailid); Intent i = new Intent(getApplicationContext(), GamesFragment.class); startActivity(i); } else { Toast.makeText(getApplicationContext(), "Email Address Already Exist", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(getApplicationContext(), "Check Your Email Address", Toast.LENGTH_LONG).show(); }
Вот какая проблема я облицовкой, в первый раз, когда я вхожу в электронную почту, которая является уникальной и нажимает на кнопку, то Validate()
AsyncTask проверяет и устанавливает переменную valid
истина , но он не переходит к следующему действию GamesFragment
, потому что я сначала объявил valid = false
. Теперь, когда я снова нажимаю кнопку, он переходит к следующему действию, так как переменная valid
имеет значение true из-за предыдущего щелчка. Теперь мой Validate()
AsyncTask является
private class Validate extends AsyncTask<Void, Void, Void> {
@Override
protected Boolean doInBackground(Void... params) {
ArrayList<NameValuePair> emailId = new ArrayList<NameValuePair>();
emailId.add(new BasicNameValuePair("email", emailid));
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("url/validate.php");
httppost.setEntity(new UrlEncodedFormEntity(emailId));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
iss = entity.getContent();
} catch(Exception e) {
Log.e("pass 1", "Connection Error");
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader
(new InputStreamReader(iss,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null)
sb.append(line + "\n");
iss.close();
result = sb.toString();
} catch(Exception e) {
e.printStackTrace();
}
try {
JSONObject json_data = new JSONObject(result);
code=(json_data.getInt("code"));
if(code == 1)
valid = true;
else
valid = false;
Log.e("pass 3", "valid "+valid);
} catch(Exception e) {
e.printStackTrace();
}
return null;
}
}
Пожалуйста, помогите я не получаю, почему это происходит.
Validate в вашем же классе права? @AdnanMomin – KDeogharkar
yes @KDeogharkar – knownUnknown
validate это мой ** внутренний класс ** – knownUnknown