2016-03-16 199 views
3

我有一个电子邮件编辑文本,我想检查它使用电子邮件验证。EditText上的电子邮件验证 - Android

这是我的电子邮件验证码

public final static boolean isValidEmail(CharSequence target) { 
    if (target == null) { 
     return false; 
    } else { 
     return android.util.Patterns.EMAIL_ADDRESS.matcher(target).matches(); 
    } 
} 

public void showAlertValidation() { 
    AlertDialog.Builder alertDialog = new AlertDialog.Builder(RegisterActivity.this); 
    alertDialog.setTitle("Failed"); 
    alertDialog.setMessage("Invalid Email"); 
    alertDialog.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      dialog.cancel(); 
     } 
    }); 
    alertDialog.show(); 
} 

,这是我的EditText验证码

editTextEmail= (EditText) findViewById(R.id.editTextEmail); 
email = editTextEmail.getText().toString(); 
if(email.length() == 0) { 
    editTextEmail.setError("Email required!"); 
    if (isValidEmail(email)) { 
      Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show(); 
    } 
    else{ 
      showAlertValidation(); 
    } 
} 

的问题是EditText上的结果。当EditText的值为空时,它运行showAlertValidation(); 但是如果EditText的值是“email”或“email @ example”或“[email protected]”,它不会运行showAlertValidation(); 我的代码有什么问题?

+0

没有你的意思是'如果(email.length()!= 0)'? – joao2fast4u

+0

噢,是的,这是我的错误。谢谢.. –

+0

我认为你应该接受Salman Nazir的帖子作为正确答案。 – Ambran

回答

6

工作!!!!

我们简单的电子邮件模式比现在

private static boolean isValidEmail(String email) { 
     return !TextUtils.isEmpty(email) && android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches(); 
    } 
0

我觉得这是你犯了一个错误(EditText上的验证码):

editTextEmail= (EditText) findViewById(R.id.editTextEmail); 
email = editTextEmail.getText().toString(); 
if(email.length() == 0) { 
    editTextEmail.setError("Email required!"); 

} 
else if (isValidEmail(email)) { 
       Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show(); 
     } 
     else{ 
       showAlertValidation(); 
     } 
1

你是你EditText文本长度误对比为0,且仅当它是真的,你做你的验证逻辑。

这里是正确的代码:

@Override 
     public void onClick(View v) { 
      String email = editTextEmail.getText().toString(); 
      if(email.length() != 0) { 
       if (isValidEmail(email)) { 
        Toast.makeText(getApplicationContext(), "Valid email address!", Toast.LENGTH_SHORT).show(); 
       } 
       else{ 
        editTextEmail.setError("Email required!"); 
        showAlertValidation(); 
       } 
      } 
      else{ 
       editTextEmail.setError("Email required!"); 
      } 
     } 
0

你应该腾出空间“”电子邮件串的检查长度String.trim前();

if(email.trim().length() == 0) {//code here} 
0

它更好地使一个类来验证电子邮件。以便您可以在需要的任何地方重复使用它。你甚至不需要把edittext的文本放在单独的字符串中。让下面的类:

public class EmailValidator { 
private Pattern pattern; 
private Matcher matcher; 
private static EmailValidator sInstance; 


public static EmailValidator getInstance() { 
    if (sInstance == null) { 
     sInstance = new EmailValidator(); 
    } 
    return sInstance; 
} 
private static final String EMAIL_PATTERN = 
     "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
       + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 

public EmailValidator() { 
    pattern = Pattern.compile(EMAIL_PATTERN); 
} 

public boolean validate(final String hex) { 

    matcher = pattern.matcher(hex); 
    return matcher.matches(); 

}} 

现在使用这个类来检查这样的EditText的电子邮件验证:

if(!EmailValidator.getInstance().validate(editTextEmail.getText().toString().trim())){ 
        editTextEmail.setError("Invalid email address"); 
       } 

希望这有助于。

0

问题是你的,如果条件

if(email.length() == 0) 
    { 
     editTextEmail.setError("Email required!"); 
     if (isValidEmail(email)) 
      { 
       Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show(); 
      } 
     else 
      { 
       showAlertValidation(); 
      } 
    } 

当你EDITTEXT是空的,只验证您的电子邮件地址。 你可以做的是:

email.addTextChangedListener(new TextWatcher() 
     { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) 
       { 

       } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) 
       { 

       } 

      @Override 
      public void afterTextChanged(Editable s) 
       { 
        if(s.length() > 0) 
         { 
          if (isValidEmail(email)) 
           { 
            editTextEmail.setError(null); 
            Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show(); 
           } 
          else 
           { 
            Toast.makeText(getApplicationContext(),"valid email address Required",Toast.LENGTH_SHORT).show(); 
           } 
         } 
       } 
     });