java - 多个错误通知

标签 java android

我有一个注册页面,用户必须在其中输入有关自己的个人信息,如果输入的内容无效,则会弹出错误通知

if (!PhoneNumber.startsWith("055") || !PhoneNumber.startsWith("050") || !PhoneNumber.startsWith("056") || !PhoneNumber.startsWith("052")) {
        // does not match
        contact_number.setError("Please enter a valid phone number");
        return;
    }

    if (TextUtils.isEmpty(password) )
    {
        VendorRegPassword.setError("Please enter your password");
        return;
    }
    else if (password.length() < 6)
    {
        VendorRegPassword.setError("Please use more than 6 characters");
        return;
    }

    if (TextUtils.isEmpty(email) || !email.contains("@") )
    {
        VendorRegEmail.setError("Please enter a valid email address");
    }

它们独立工作,但组合在一起时无法正常工作,电话号码错误也无法正常工作,有人可以帮助我吗?

最佳答案

另一个答案是正确的; return 语句只是阻止执行所有检查。在这种情况下,您希望进行所有验证,因为每个验证都有不同方式通知用户问题。

除此之外:从“干净的代码”的角度来看,您应该小心地将所有验证简单地填充到同一个糟糕的方法中。相反:构建您的代码,以便它清楚地表达正在发生的事情,例如:

private void validateAll(PhoneNumber number, Email email, Password password) {
  validatePhoneNumber(number);
  validateEmail(email);
  ...

以及单独的助手,例如

private void validatePhoneNumber(number) {
   boolean validPrefix = false;
   for (String validPrefix : PREFEIXES) {
     if (phoneNumber.startsWith(validPrefix) {
       validPrefix = true;
     }
   }

   if (!validPrefix) {
     contact_number.setError("Please enter a valid phone number");
   }
}
例如。请注意 - 我修复了另一个不好的做法(您的想法是简单地对所有有效前缀进行硬编码)。你总是想将这些信息放入一些常量集合/列表中;这样您的代码中就有一个位置知道这些前缀是什么。

关于java - 多个错误通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44070907/

相关文章:

cmd 中的 Java PID 没有改变

android - 如何以编程方式更改 RecyclerView 中项目的位置?

android - 如何使用 SmsManager 发送很长的消息

android - getAuthToken 不调用 AccountManagerCallback

android - 是否可以在 ListView 项之间添加填充?

java - 在 springboot 应用程序中启动线程

Java 8 LocalDateTime - 如何在字符串转换中保持 .000 毫秒

Java 文件传输、EJB、SOAP 或 REST,性能比较

java - 在多线程代码中,System.nanoTime() 会产生小的不准确度吗

安卓应用架构