实现EditText时出现问题字段必须包含字母数字



我在这里有一个名为"idCustomerCode"的EditText,用于从用户输入代码ID,该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"

使用此xml:

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

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

最新更新