我有一个自定义的EditText
类,正在发生的事情是,该字段已经有一个验证,检查其长度并进行修剪。
但是,该应用程序崩溃了,因为可以在1个空间后单击字段中单击该字段并插入数据。
单击时如何验证该用户无法写入他的数据?如果他/她在一个空间中编写数据,则应用程序崩溃,我会收到以下例外。
java.lang.IllegalArgumentException: Start position must be less than the actual text length
预先感谢。
您可以修剪,但请记住,如果您想限制白色空间,则不限于输入白色空间,然后需要为edit text
添加filter
。添加filter
让您限制要避免的角色。
P.S-检查在给定链接上添加过滤器的添加过滤器如何使用inputfilter限制Android中的deDittext?
将" addTextchangedListener"添加到您的deDittext,然后ontextchanged您可以检查验证。例如,
txtEdit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
String str = s.toString();
if(str.length() > 0 && str.startsWith(" ")){
Log.v("","Cannot begin with space");
txtEdit.setText("");
}else{
Log.v("","Doesn't contain space, good to go!");
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
首先以这种方式获取编辑文本:
EditText name=(EditText) findViewById(R.id.txt);
String txtEdit=txt.getEditableText().toString();
然后检查文本长度验证:
if(txtEdit.length() == 0) {
//your code for what you want to do.
}
修剪从编辑文本中获得的字符串。
String str=edtext.getText().toString().trim();
if(str!=null && !str.equalsIgnoreCase("")))
{
//perform your operations.
}
else
{
//give error message.
}