预期结果:
代码:
EditText textET = (EditText) findViewById(R.id.textET);
textET.setFilters(new InputFilter[]{new DigitsKeyListener()});
其中main_layout.xml中的textET定义为:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:id="@+id/textET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
应生成可编辑的文本字段,用于过滤字符并仅允许数字。 但是当在软键盘上单击某些字母字符然后输入某些数字时,会发生以下情况: 首先输入的数字按预期显示。接下来输入数字重复之前并打印自己。接下来重复前一个序列并打印自己。等
例如:
首先尝试输入字母字符。没有显示任何内容。没关系。
然后点击'2' - 显示'2'。没关系。
然后点击'5' - 显示'225'。预计“25”。
然后点击'8' - 显示'225258'。预计'258'。
等等。
此外,当尝试通过“Backspace”删除最后一个字符时,它不会被删除,但会附加新的先前序列。例如:'225258'&gt; 'Backspace'打印'225258225258'
我在做什么或期待有什么问题?或者这是一个小故障?
(代码就像在这里发布一样简单。在Galaxy S2上测试,API 4.1。模拟器按预期工作。)
答案 0 :(得分:0)
这个问题来自android中的键盘助手。你不应该使用过滤器。
答案 1 :(得分:0)
您应该使用:
textET.setFilters(new InputFilter[]{
// Maximum 2 characters.
new InputFilter.LengthFilter( 2 ),
// Digits only.
DigitsKeyListener.getInstance(),
});