我在textchangelistener
添加了Edittext
,其中我检查文本是否为空。当文本不为空时我按退格键,所有文本都会消失并再次出现。这仅在第一次按下退格键时发生。之后它就像它应该的那样。
使用Editable s.toString()无法解决问题。
导致此问题的原因是什么?
有关详细信息,请参阅代码中的注释:
TextWatcher textwatcher = getMandatoryTextWatcher(editText);
String text = editText.getText().toString();//At this point String text is not empty.
editText.addTextChangedListener(textwatcher);
public TextWatcher getMandatoryTextWatcher(final EditText editText) {
TextWatcher textwatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void afterTextChanged(Editable s) {
try {
//The first time this is called(the first softkey backspace press),
//text is empty. This causes a weird issue where the character that
//was just removed by pressing the backspace, reappears again.
//This is only the first time.
String text = editText.getText().toString();
if (text.length() <= 0) {
editText.setError(errorMandatory);
} else if (text.length() > 0) {
editText.setError(null);
} else {
editText.setError(errorMelding);
}
} catch (NumberFormatException nfe) {
editText.setError(errorMeldingTijdensParsen);
}
}
};
return textwatcher;
}
答案 0 :(得分:0)
ohk dude刚刚第一次给出这个验证
if(TextUtils.isEmpty(Stringname))
{
paste your rest code here
}
所以每当第一次它不会进入条件
答案 1 :(得分:0)
将您的代码复制到onTextChanged
并将您的代码放入以下if语句中:
if (s.length() > 0)
{
// do what you want
}
答案 2 :(得分:0)
您最好使用s.toString();
代替editText.getText().toString();
答案 3 :(得分:0)
我已编译你的代码为min。 sdk 10(2.3.3)和目标sdk 14(4.0)。 在Samsung GT-P6800设备中运行它不会发生报告的行为。 您的问题可能在代码之外。尝试在另一台设备上运行您的代码。