我创建了一个验证电子邮件格式的类。
public class EmailValidator {
private Pattern pattern;
private Matcher matcher;
// regular expression for email validation
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 email) {
matcher = pattern.matcher(email);
return matcher.matches();
}
}
通过使用上面的类,我想实现一个实际执行验证的代码,如果电子邮件不是有效格式,则发送吐司。所以我创建了另外一个代码如下。
RegisterActivity.java
(1)变量
EmailValidator validator;
EditText etEmail;
(2)onClick方法
String email = etEmail.getText().toString();
**if(validator.validate(email) == false)** {
Toast.makeText(getApplicationContext(), "Wrong email format.", Toast.LENGTH_LONG).show();
到目前为止,代码似乎没有任何问题,但是当我运行它时,它会在上面的部分上抛出一个NullPointerException。我错过了什么吗?
如果您需要进一步了解代码,请告诉我们,以便我能尽快更新。谢谢!
更新:这是logcat。
07-07 20:05:30.761 342-342/com.marshall.gruppo E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.marshall.gruppo, PID: 342
java.lang.NullPointerException
at com.marshall.gruppo.ui.RegisterActivity$1.onClick(RegisterActivity.java:101)
at android.view.View.performClick(View.java:4633)
at android.view.View$PerformClick.run(View.java:19270)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5602)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:3)
你必须像这样创建EmailValidator类的对象
@Configuration
@ImportResource("classpath:context.xml")
public class IntegrationTestConfig {
@Bean
public TestAspect testAspect() {
return new TestAspect();
}
}
答案 1 :(得分:2)
每次都不需要创建新的类实例来验证它是否是电子邮件。您可以将isValidEmail
放入static
课程。
我建议您使用此代码进行验证:
final String email = etEmail.getText().toString();
boolean isEmail = isValidEmail(email);
有功能:
public final static boolean isValidEmail(String text) {
if (target == null) {
return false;
} else {
return android.util.Patterns.EMAIL_ADDRESS.matcher(text).matches();
}
}
在您的活动声明中:
private EditText etMail;
然后在您的onCreate
方法中setContentView
etMail = (EditText) findViewById(R.id.edit_text);
然后根据需要多次调用上面的方法。
答案 2 :(得分:1)
您的Edittext未声明:
EditText etEmail
宣布etMail
etMail = (EditText) findViewById(R.id.MYEDITTEXT);
答案 3 :(得分:0)
添加构造函数并在单击侦听器中输入try / catch并添加异常e,或者可以使用代码执行if / else
EmailValidator validation = new EmailValidator() ;
String email = etEmail.getText().toString();
if (validation.validate(email) == true) {
Toast.makeText(getApplicationContext(), "it sent!!!!.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Wrong email format.", Toast.LENGTH_LONG).show();
}