使用两个文件的电子邮件验证在Android应用中不起作用

时间:2018-11-21 21:07:23

标签: java android

我用EditText和Button准备了XML文件。 我应该检查电子邮件时有两个Java文件。我按照您在其他问题中所写的内容进行了所有操作。...但是出了点问题。...我不知道......

第一个文件MainActivity.java:

    public class MainActivity extends AppCompatActivity {

        Button checkButton = (Button) findViewById(R.id.checkButton);
        EditText emailInput= (EditText) findViewById(R.id.emailInput);

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

            checkButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    {
                        String input = emailInput.getText().toString();
                        if (isValidEmail(input)) {
                            Correct();
                        } else {
                            Incorrect();
                        }
                    }
                }
            });

        }

        public void Correct(){
            Toast.makeText(this,"Your e-mail is correct!", Toast.LENGTH_SHORT).show();
        }

        public void Incorrect(){
            Toast.makeText(this,"Your e-mail is incorrect!", Toast.LENGTH_SHORT).show();
        }
   }

和第二个文件,我在其中使用了正则表达式:

    public class EmailValidator {

        public static boolean isValidEmail(CharSequence target) {

            Pattern pattern = Pattern.compile("[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,64}");

            Matcher m = pattern.matcher(target);
            return m.matches();

        }
    }

怎么了?哪里有错?

1 个答案:

答案 0 :(得分:1)

请考虑更具体地解决问题。如果是崩溃,请查看logcat中的异常stacktrace。

无论如何,一些明显的问题:

if (isValidEmail(input))

此范围必须为

if (EmailValidator.isValidEmail(input))

除非该功能具有静态导入。这将是编译时错误。

然后这些findViewById()呼叫:

Button checkButton = (Button) findViewById(R.id.checkButton);
EditText emailInput= (EditText) findViewById(R.id.emailInput);

必须在setContentView()之后。在onCreate()之前有一个NullPointerException,因为尚未设置活动窗口,在setContentView()之前将返回空值,因为此类视图不存在,从而导致NullPointerException后来。这些将是运行时错误。