Ярлык для использования одного класса для нескольких полей ввода в Android Studio - PullRequest
0 голосов
/ 06 октября 2019

У меня есть регистрация, логин, сброс паролей и кодов в одном действии (или на одной странице .... хахахаха). Все они имеют электронную почту editText e, e1 и e2. Теперь я создал метод для каждого, как показано ниже:

private boolean valEmail() {

    String mail = e.getEditText().getText().toString().trim();
    if (mail.isEmpty()) {
        e.setError("Field cannot be empty");
        return false;
    } else if (!Patterns.EMAIL_ADDRESS.matcher(mail).matches()){
        e.setError("Not a valid email"); return false;
    } else if (mail.length()>254) {e.setError("Email to long"); return false;}
    else if (mail.length()<5) {e.setError("Email too short"); return false;}
    else {
        e.setError(null);
        // e.setErrorEnabled(false);
        return true;
    }
}

private boolean valEmail1() {

    String mail = e1.getEditText().getText().toString().trim();

    if (mail.isEmpty()) {
        e.setError("Field cannot be empty");
        return false;
    } else if (!Patterns.EMAIL_ADDRESS.matcher(mail).matches()){
        e.setError("Not a valid email"); return false;
    } else if (mail.length()>254) {e.setError("Email to long"); return false;}
    else if (mail.length()<5) {e.setError("Email too short"); return false;}
    else {
        e.setError(null);
        // e.setErrorEnabled(false);
        return true;
    }
}

private boolean valEmail2() {

    String mail = e2.getEditText().getText().toString().trim();

    if (mail.isEmpty()) {
        e.setError("Field cannot be empty");
        return false;
    } else if (!Patterns.EMAIL_ADDRESS.matcher(mail).matches()){
        e.setError("Not a valid email"); return false;
    } else if (mail.length()>254) {e.setError("Email to long"); return false;}
    else if (mail.length()<5) {e.setError("Email too short"); return false;}
    else {
        e.setError(null);
        // e.setErrorEnabled(false);
        return true;
    }
}

Если вы заметите, метод для каждого электронного письма (e, e1 и e2) точно такой же. Проблема в том, что кодов слишком много, и я пытаюсь сделать кодов как можно меньше и коротких. Я попытался создать один метод для обработки этого с использованием массива, но безуспешно. Пожалуйста, как я могу использовать один метод для обработки этих? Какие-нибудь короткие пути, пожалуйста?

1 Ответ

0 голосов
/ 06 октября 2019

Используйте один метод для проверки всей электронной почты

private boolean checkEmailValidation(EditText e) { 
    String mail = e.getText().toString()
    if (mail.isEmpty()) {
        e.setError("Field cannot be empty");
        return false;
    } else if (!Patterns.EMAIL_ADDRESS.matcher(mail).matches()){
        e.setError("Not a valid email"); 
        return false;
    } else if (mail.length()>254) {
        e.setError("Email to long");
        return false;
    }else if (mail.length()<5) {
        e.setError("Email too short");
        return false;
    }else {
        e.setError(null);
        // e.setErrorEnabled(false);
        return true;
    }
 }

Теперь вы можете использовать метод checkEmailValidation() для всей электронной почты.


// you can check all email like following 
if(checkEmailValidation(e.getEditText()) && checkEmailValidation(e1.getEditText()) && checkEmailValidation(e2.getEditText())) {
    // do whatever you want here when all email is ok
}else{
  // ...
}

Для использования в нескольких activities вы можете следоватьдвухстороннее

  1. Создайте BaseActivity и расширьте его во всех activity.
  2. Создайте class и создайте метод static.

Пример BaseActivity

public abstract class BaseActivity extends AppCompatActivity {

  private boolean checkEmailValidation(EditText e) { 
    String mail = e.getText().toString()
    if (mail.isEmpty()) {
        e.setError("Field cannot be empty");
        return false;
    } else if (!Patterns.EMAIL_ADDRESS.matcher(mail).matches()){
        e.setError("Not a valid email"); 
        return false;
    } else if (mail.length()>254) {
        e.setError("Email to long");
        return false;
    }else if (mail.length()<5) {
        e.setError("Email too short");
        return false;
    }else {
        e.setError(null);
        // e.setErrorEnabled(false);
        return true;
    }
  }
}

И расширяется BaseActivity в дочернем элементе activities, как показано ниже

public class ChildActivity extends BaseActivity{
 // within this class you can use checkEmailValidation`
}

Пример статической функции

public class YourClassName{
   private static boolean checkEmailValidation(EditText e) { 
      String mail = e.getText().toString()
      if (mail.isEmpty()) {
          e.setError("Field cannot be empty");
          return false;
      } else if (!Patterns.EMAIL_ADDRESS.matcher(mail).matches()){
          e.setError("Not a valid email"); 
          return false;
      } else if (mail.length()>254) {
          e.setError("Email to long");
          return false;
      }else if (mail.length()<5) {
          e.setError("Email too short");
          return false;
      }else {
          e.setError(null);
          // e.setErrorEnabled(false);
          return true;
      }
   }
}

Теперь вы можете назвать это method, используя class name, как показано ниже

public class YourActivity extends AppCompatActivity{
  @Override
  protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getContentView());

    // you can use checkEmailValidation like 
    YourClassName.checkEmailValidation(...)

  }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...