Java 使用两个文件进行电子邮件验证在Android应用程序中不起作用
我用EditText和按钮准备了XML文件。 当我应该检查我的电子邮件时,我有两个java文件。我会按照你在其他问题中写的那样做。。。。但有点不对劲。。。。我不知道 第一个文件MainActivity.java:Java 使用两个文件进行电子邮件验证在Android应用程序中不起作用,java,android,Java,Android,我用EditText和按钮准备了XML文件。 当我应该检查我的电子邮件时,我有两个java文件。我会按照你在其他问题中写的那样做。。。。但有点不对劲。。。。我不知道 第一个文件MainActivity.java: public class MainActivity extends AppCompatActivity { Button checkButton = (Button) findViewById(R.id.checkButton); EditTe
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();
}
}
怎么了?哪里有错误请考虑更具体的问题。如果是崩溃,请查看logcat中的异常堆栈跟踪 无论如何,一些显而易见的问题:
if (isValidEmail(input))
这需要限定为以下范围:
if (EmailValidator.isValidEmail(input))
除非该函数具有静态导入。这将是一个编译时错误
然后这些findViewById调用:
需要在setContentView之后。在onCreate之前,会出现NullPointerException,因为尚未设置“活动”窗口,而在setContentView之前,会返回nulls,因为此类视图不存在,从而导致稍后出现NullPointerException。这些都是运行时错误。我也有同样的想法:怎么了?你的意见是什么?预期产出?获得的产出?
Button checkButton = (Button) findViewById(R.id.checkButton);
EditText emailInput= (EditText) findViewById(R.id.emailInput);