0

I have tried to make the validation email, but the message that appears always invalid email

My code:

public class MainActivity extends AppCompatActivity {

EditText txtEmail, txtPassword;
Button btnLogin;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    txtEmail = (EditText)findViewById(R.id.input_email);
    txtPassword = (EditText)findViewById(R.id.input_password);

    final String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
    final String email = txtEmail.getText().toString().trim();



    btnLogin = (Button) findViewById(R.id.btn_login);
    btnLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //startActivity(new Intent(MainActivity.this, DashboardActivity.class));
            if (email.matches(emailPattern))
            {
                Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
            }

        }
    });
}
Usman Maqbool
  • 3,351
  • 10
  • 31
  • 48
ErrorMan
  • 13
  • 1

2 Answers2

0

You need to get the EditText text in your Button OnClick()

 btnLogin.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

        final String email = txtEmail.getText().toString().trim();

        if (email.matches(emailPattern))
        {
            Toast.makeText(getApplicationContext(),"valid email address",Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(getApplicationContext(),"Invalid email address", Toast.LENGTH_SHORT).show();
        }

    }
});

This may helps you.

EDIT 1

and you can use simple validation method by android as,

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

Note : It will work On Android 2.2+ onwards !!

Sathish Kumar J
  • 4,280
  • 1
  • 20
  • 48
0

Try this method

public boolean isEmailValid(EditText email) {
    boolean isValid = false;

    String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
    CharSequence inputStr = email.getText().toString().trim();

    Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(inputStr);
    if (matcher.matches()) {
        isValid = true;
    }
    return isValid;
}
Linh
  • 57,942
  • 23
  • 262
  • 279
Parag Ghetiya
  • 421
  • 2
  • 14