对Android关键事件处理感到困惑。有什么好的解释吗?

时间:2010-09-16 14:16:13

标签: android android-edittext keyevent

我是Android的初学者。有没有人有关于如何在EditText / TextView中监听键和软键的理智的解释?

我希望看到一个全面的教程或一组示例。

据我了解,我可以将KeyListener添加到我的Activity中,例如onKeyDown(),onKeyUp()但是当我尝试这个时,我无法触发正常键的事件,例如HOME和BACK。

我已经看到过使用TextWatcher,但这与处理原始键事件不同。

在SO上似乎有一些半解决方案。希望你能帮助清除混乱的迷雾...

3 个答案:

答案 0 :(得分:2)

您必须将键侦听器分配给活动,而不是分配给EditText本身。

答案 1 :(得分:2)

这是我必须听BACK或MENU键事件。只需添加此方法,无需实现任何接口。我在我的BaseActivity中执行此操作,每个Activity都从该BaseActivity继承。

public boolean onKeyDown(int keyCode, KeyEvent event) {
    Log.d(NAME, "Key pressed");

    switch (keyCode) {
    case KeyEvent.KEYCODE_BACK:
        Log.d(NAME, "Back pressed");
        // IGNORE back key!!
        return true;
        /* Muestra el Menú de Opciones */
    case KeyEvent.KEYCODE_MENU:
        Intent menu = new Intent(this, Menu.class);

        // start activity
        startActivity(menu);
        return true;
    }

    return super.onKeyDown(keyCode, event);
}

PS:我强烈反对忽略后退键。

答案 2 :(得分:1)

例如:

myEditText.setOnKeyListener(new OnKeyListener() {
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         if (event.getAction() == KeyEvent.ACTION_DOWN)
             if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER){
                //your code here
             }
         return false;
     }
});