2016-07-28 39 views
0

Ich möchte überprüfen, ob die E-Mail-ID vom Benutzer eingegeben ist einzigartig oder nicht so für das ich habe zunächst meine Variable Boolean valid = false;. Beim Klicken auf eine Schaltfläche nehme ich die eingegebene E-Mail-ID und überprüfe sie auf einen gültigen E-Mail-ID-Ausdruck unter Verwendung eines regulären Ausdrucks und dann verwende ich eine Asyntask, um ihre Eindeutigkeit zu überprüfen. Code in meinem onclicklistner istPrograme nicht in korrekter Reihenfolge in 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(); }

Hier welches Problem i ist, für das erste Mal bin vor, wenn ich eine E-Mail am Eintritt in die einzigartig ist und klickt auf die Schaltfläche, die Validate() AsyncTask prüft und setzt die valid Variable auf true , aber es geht nicht zur nächsten Aktivität GamesFragment, weil ich anfangs valid = false erklärt habe. Wenn ich jetzt erneut auf die Schaltfläche klicke, geht es zur nächsten Aktivität, da die Variable valid aufgrund eines vorherigen Klicks auf true gesetzt ist. Now My Validate() AsyncTask ist

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; 
     } 
    } 

Bitte helfen i immer bin nicht, warum dies geschieht.

+0

Validate ist in Ihrem gleichen Klasse richtig? @AdnanMomin – KDeogharkar

+0

ja @KDeogharkar – knownUnknown

+0

validieren ist meine ** innere Klasse ** – knownUnknown

Antwort

0

Funktion zur Überprüfung der Validierung erstellen.

private boolean function validate(String emailid){ 

if (emailid.matches(regexp) && emailid.length() > 0) { 
return true; 
} 


return false; 

} 

Einsatz, die Veranstaltung

if(validate(emailid)){ // if function return true then email is valid and good to go. 

new Validate().execute(); 


} 

für die zweite Bedingung entscheiden Funktion haben Sie es in Ihrem async Aufgabe überprüfen onPostExecute() die Validate ist();

@Override 
    protected void onPostExecute(Object o) { 

     super.onPostExecute(o); 
     if(code == 1){ 

    // check if response is valid than 
Intent i = new Intent(getApplicationContext(), GamesFragment.class); 
         startActivity(i); 

} }

+0

Ich bin in der Lage, E-Mail-ID mit regexp zu überprüfen, aber das Problem ist in Cheching die Einzigartigkeit der E-Mail-ID. Ich meine die zweite if-Anweisung in meinem Code. Auch in meiner asynctask mache ich HTTP-Anfragen. – knownUnknown

+0

Sie wollen sagen, ob es schon verfügbar ist oder nicht? – KDeogharkar

+0

Ja, Sie haben Recht – knownUnknown