我有一个自定义的EditText
类,发生的事情是该字段已经有一个验证,检查它的长度并进行修剪。
但是,应用程序崩溃了,因为可以在字段中单击并在1个空格后插入数据。
如何在点击时验证该用户无法写入他的数据?如果他/她用一个空格写数据,应用程序崩溃,我收到以下异常。
java.lang.IllegalArgumentException: Start position must be less than the actual text length
提前致谢。
答案 0 :(得分:1)
要么修剪,要记住这不会限制用户输入空格,如果要限制空格,则需要为filter
添加edit text
。添加filter
可以限制您想要避免的任何字符。
P.S - 检查在给定链接How do I use InputFilter to limit characters in an EditText in Android?
上添加过滤器答案 1 :(得分:1)
将“addTextChangedListener”添加到EditText然后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
}
});
答案 2 :(得分:0)
修剪从编辑文本中获得的字符串。
String str=edtext.getText().toString().trim();
if(str!=null && !str.equalsIgnoreCase("")))
{
//perform your operations.
}
else
{
//give error message.
}
答案 3 :(得分:0)
首先以这种方式获取编辑文本:
EditText name=(EditText) findViewById(R.id.txt);
String txtEdit=txt.getEditableText().toString();
然后通过以下方式检查文本长度验证:
if(txtEdit.length() == 0) {
//your code for what you want to do.
}