我有以下代码用于我的edittext格式,因为它可以接受任何输入我没有设置任何输入类型:
if (cardNumberEditText != null) {
cardNumberEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int currSel = cardNumberEditText.getSelectionStart();
cardNumberEditText.removeTextChangedListener(textWatcher);
.
.
cardNumberEditText.setText(formattedNumber);
.
.
cardNumberEditText.setSelection(currSel);
cardNumberEditText.addTextChangedListener(textWatcher);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
所以最初我得到的默认输入类型是ABC,现在当我将其更改为?123(使用ABC / 123?toggel按钮)时,输入一些数字后键盘会变回ABC.这个代码可以在三星设备s3和sywpe上正常工作,但不能在L和HTC上使用nexus
当我评论onTextChanged中的所有代码时,它工作正常.因此,当我调查时,我发现罪魁祸首是cardNumberEditText.setText(formattedNumber);
我没有设置任何输入类型,我只是使用键盘上的ABC /?123切换键进行切换
任何帮助/建议为什么会发生这种情况(在少数设备上),我该如何纠正?
解决方法:
finnaly让它工作,必须结合上面评论中提到的多个解决方案
因为犯罪是settext,我找到了替代它 – 追加
但要使用append我必须清除edittext而不使用settext,this link来救援
如此取代
cardNumberEditText.setText(formattedNumber);
同
cardNumberEditText.getText().clear();
cardNumberEditText.append(formattedNumber);
现在就像一个魅力