我用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();
}
}
怎么了?哪里有错?
答案 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
后来。这些将是运行时错误。