如何在多个字段上设置错误消息?

时间:2018-09-26 10:26:59

标签: android

所以我有一个包含许多字段的注册屏幕。如果用户单击注册按钮,并且一个或多个字段为空,我想在这些字段上显示错误。

RegistrationActivity:

private void onRegisterButtonClick() {
    String name =nameEditText.getText().toString().trim();
    String email =emailEditText.getText().toString().trim();
    String password =passwordEditText.getText().toString().trim();
    String phoneNumber = phoneNumberEditText.getText().toString().trim();

    registrationPresenter.register(name, email, password, phoneNumber);
}

private void showEmptyFieldError(){
   nameEditText.showError("This field can not be empty");
}

RegistrationPresenter:

 public void register(String name, String email, String password, String phoneNumber) {
    if (name.isEmpty() || email.isEmpty() || password.isEmpty() || phoneNumber.isEmpty()) {
        registrationView.showEmptyFieldError();
    }
}

现在不是我想要的实现方法,因为它仅在“名称”字段上显示错误。如何检查字段是否为空,并且以最简单的方式仅对那些字段显示错误?

2 个答案:

答案 0 :(得分:2)

使用此功能,您可以在任何字段上显示错误。

    private void onRegisterButtonClick() {
        String name =nameEditText.getText().toString().trim();
        String email =emailEditText.getText().toString().trim();
        String password =passwordEditText.getText().toString().trim();
        String phoneNumber = phoneNumberEditText.getText().toString().trim();

        if (name.isEmpty()) {
            nameEditText.setError("Name cannot be empty");
        }

        if (email.isEmpty()) {
            emailEditText.setError("Email cannot be empty");
        }

        if (password.isEmpty()) {
            passwordEditText.setError("Password cannot be empty");
        }

        if (!name.isEmpty() && !email.isEmpty() && !password.isEmpty()) {
            registrationPresenter.register(name, email, password, phoneNumber);
        }
    }

答案 1 :(得分:0)

基于@Ali Ahmed的答案,您还可以尝试else if个条件。

private void onRegisterButtonClick() {
        String name = nameEditText.getText().toString().trim();
        String email = emailEditText.getText().toString().trim();
        String password = passwordEditText.getText().toString().trim();
        String phoneNumber = phoneNumberEditText.getText().toString().trim();

        if (name.isEmpty()) {
            nameEditText.setError("Name cannot be empty");
        } else if (email.isEmpty()) {
            emailEditText.setError("Email cannot be empty");
        } else if (password.isEmpty()) {
            passwordEditText.setError("Password cannot be empty");
        } else {
            registrationPresenter.register(name, email, password, phoneNumber);
        }
    }

因此,如果名称为空,则错误消息将仅显示在名称字段上,在填充名称字段之后,如果电子邮件为空,则错误消息将仅显示在电子邮件上,依此类推...

如果所有字段均已填写,则将执行其他部分。