我正在尝试开发一个具有EditText(只允许int)和KeyEvent的小部件。问题是当按下"0"时,它检测到KeyEvent,但它没有在我的EditText上写入"0"。它应该按我按的顺序加数字。
et1.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (KeyEvent.ACTION_UP != event.getAction()) {
switch (keyCode) {
case KeyEvent.KEYCODE_0:
//Do something...
break;
default:
return false;
}
}
return true;
}
});
我试过做那样的事,但效率不高。
et1.setText(et1.getText().toString + "0");
你知道某种解决方案吗?
让我试着让自己明白Pep:
1) 如果您想要实现的是EditText
只允许integer(数字)输入,那么您可以添加一个属性,仅此而已。您不需要对该行为进行自定义控制。
android:inputType="number"
2) 在EditText
中没有得到任何输入的原因很简单,因为您通过在重写的onKey
方法中返回true
来阻止它。
裁判说,onKey
应该返回:
如果侦听器已使用该事件,则为True,否则为false。
这意味着,如果您返回true
,则由您负责,Android不会在您的EditText
中输入任何内容。由于您不是自己做的(至少在您提供的代码中是这样),因此EditText不会被填充。
因此,我建议您完全删除处理程序,并像以前一样在xml
中添加inputType
属性。
更新
如果您需要根据另一个(EditText2)中的输入更新EditText
(让我们称之为EditText1,我建议使用TextWatcher
跟踪第一个中的输入,并使用处理后的值设置text
EditText2。
请检查此类似问题以获取示例代码。