带有EventKey的EditText上的setText



我正在尝试开发一个具有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跟踪第一个中的输入,并使用处理后的值设置textEditText2

请检查此类似问题以获取示例代码。

最新更新