Android:覆盖按钮的 onKeyListener 的问题

标签 android view overriding keylistener

当在 Button 上按下 Enter 键时,我想要某种功能。 当我覆盖 onKey() 时,我编写了要为 KEY_ENTER 执行的代码。这很好用。

setupButton.setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (KeyEvent.KEYCODE_ENTER == keyCode)
                {
                    Intent setupIntent = new Intent(getApplicationContext(),SetUp.class);
                    startActivityForResult(setupIntent, RESULT_OK);
                }
                return true;
            }
        });

但是现在没有其他键可以像向上键、向下键等那样对 Button 起作用。我知道这是因为我已经覆盖了 onKey() 仅用于 ENTER。

但有没有一种方法可以保留所有其他键的功能并仅覆盖某些特定键?

注意:所有这些都是因为当按下 Enter 键时我的 onClick() 没有被调用。因此,我需要重写 onKey() 本身。

- 琪琪

最佳答案

当您在函数中返回 true 时,这会告诉 Android 您正在处理所有键,而不仅仅是 Enter 键。

您应该只在最后,在 if 语句内返回 true,并在函数结束时返回 false。

setupButton.setOnKeyListener(new OnKeyListener() {
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (KeyEvent.KEYCODE_ENTER == keyCode)
            {
                Intent setupIntent = new Intent(getApplicationContext(),SetUp.class);
                startActivityForResult(setupIntent, RESULT_OK);
                return true;
            }
            return false;
        }
    });

关于Android:覆盖按钮的 onKeyListener 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3853200/

相关文章:

python - 如何在django View 中检查数据是否为 'null'?

覆盖实例变量的默认值

inheritance - D:覆盖子类中的 opDispatch

android - TextView 不显示

java - PostgreSQL View 读取另一个表,转换数据并返回结果

android - 无法从 gps 获取位置

iOS:如何确定 super View 布局中 View 的大小?

swift - 更改另一个模块中 var 的初始值

android - 在 iOS 中的 UITextView 上加载 html 中的字体时出现问题

android - 如何在android中延迟加载共享库