【问题标题】:Problem in Implementing EditText field must contains alphanumeric实现 EditText 字段中的问题必须包含字母数字
【发布时间】:2020-07-06 17:45:12
【问题描述】:

我在这里有一个名为“idCustomerCode”的 EditText,用于输入用户的代码 ID,每个输入必须包含字母数字,例如(“abc123”),如果不符合将显示错误消息标准。 (例如:不包含字母/数字(仅“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 只接受字母数字:

android:digits="0123456789qwertzuiopasdfghjklyxcvbnm"

【问题讨论】:

标签: android android-edittext alphanumeric


【解决方案1】:

使用这个xml:

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textCapCharacters"
    android:textAllCaps="true" />

【讨论】:

    【解决方案2】:

    让您的Activity(或Fragment)具有可接受值的字段:

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

    然后您可以遍历String 以检查它是否包含请求的字符。在onClick()中调用这个方法,只有在返回true时才开始下一个Activity

    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();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-17
      • 2021-09-16
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多