Проблема в реализации поля EditText должна содержать буквенно-цифровой - PullRequest
0 голосов
/ 26 марта 2020

У меня есть EditText здесь, называемый "idCustomerCode", который используется для ввода идентификатора кода от пользователя, который ДОЛЖЕН содержать alphanumeri c на каждом входе, например ("abc123"), и будет показывать сообщения об ошибках, если это не так. не соответствует критериям. (пример: не содержит алфавит / цифру c (только «abcd» или «1234») или содержит символ). Я понятия не имею, как реализовать его в Android Studio.

Примеры всплывающих сообщений об ошибках:

Код клиента должен содержать только текст и число

Может ли кто-нибудь помочь мне с этим кодом?

Спасибо!

public class registerForm extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_register_form);

    final EditText idUsername;
    final EditText idCustomerCode;
    final EditText idPass;



    idUsername = (EditText) findViewById(R.id.idUsername);
    idCustomerCode = (EditText) findViewById(R.id.idCustomerCode);
    idPass = (EditText) findViewById(R.id.idPass);

    Button btnRegister = (Button)findViewById(R.id.btnRegister);

    btnRegister.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent;
            intent = new Intent(getApplicationContext(),loginForm.class);
            intent.putExtra("idUsername", idUsername.getText().toString());
            intent.putExtra("idCustomerCode", idCustomerCode.getText().toString());
            intent.putExtra("idPass", idPass.getText().toString());
            startActivity(intent);
        }
    });

}

}

Кстати, я также добавляю этот код в свой xml, поэтому idCustomerCode EditText принимает только alphanumeri c:

android:digits="0123456789qwertzuiopasdfghjklyxcvbnm"

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

Пусть ваш Activity (или Fragment) имеет поля с допустимыми значениями:

private String alphabet = "qwertzuiopasdfghjklyxcvbnm";
private String numbers = "0123456789";

Затем вы можете перебрать String, чтобы проверить, содержит ли он запрошенные символы. Вызовите этот метод в onClick() и начните следующий Activity, только если он вернет true:

private boolean isInputValid(@NonNull String input){
    String lowerCaseInput = input.toLowerCase();
    int length = input.length();
    boolean foundAlphabetValue = false;
    boolean foundNumericValue = false;
    for(int i = 0; i < length; i++){
        char c = lowerCaseInput.charAt(i);
        if(alphabet.contains(c)){
            foundAlphabetValue = true;
        }
        else if (numbers.contains(c)){
            foundNumericValue = true;
        } 
        else{
            return false;
        }
        return foundNumericValue && foundAlphabetValue; 
    }
}




 @Override
 public void onClick(View view) {
    if(isInputValid(idCustomerCode.getText().toString())){        
        Intent intent;
        intent = new Intent(getApplicationContext(),loginForm.class);
        // ...
        startActivity(intent);
    }
    else {
        String errorMessage = "Customer Code must only contain text and number";
        Toast.makeText(view.getContext(), errorMessage, Toast.LENGTH_SHORT).show();
    }
}
0 голосов
/ 26 марта 2020

Используйте это xml:

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textCapCharacters"
    android:textAllCaps="true" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...