带有EventKey的EditText上的setText

时间:2012-02-24 17:10:53

标签: java android keyevent keycode

我正在尝试使用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");

你知道某种解决方案吗?

1 个答案:

答案 0 :(得分:1)

让我试着让自己明白Pep:

1)如果你想要实现的是EditText只允许整数(数字)输入,你可以添加一个属性。您不需要针对该行为的自定义控件。

 android:inputType="number" 

2)您在EditText中未获得任何输入的原因仅仅是因为您通过在重写的true方法中返回onKey来阻止它。

ref说,onKey应该返回:

  

如果监听器已经使用了该事件,则为true,否则为false。

这意味着,如果您要返回true,则由您负责,Android不会在EditText中输入任何内容。由于你没有(至少在你提供的代码中),你自己,EditText没有填充。

因此,我建议您完全删除处理程序,并像之前一样在inputType中添加xml属性。


<强>更新

如果你需要根据另一个( EditText2 )中的输入更新EditText(我们称之为 EditText1 ),我建议跟踪输入第一个带有TextWatcher并使用已处理的值设置text EditText2

检查this similar issue以获取示例代码。