Android:覆盖按钮的onKeyListener问题

kik*_*iki 3 android overriding view keylistener

当按下按钮上的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;
            }
        });
Run Code Online (Sandbox Code Playgroud)

但现在没有其他按键可用于按钮,例如向上,向下箭头键等.我知道这是因为我已经覆盖仅用于输入的onKey().

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

注意:所有这一切都是因为按下Enter键时未调用onClick().因此,我需要重写onKey()本身.

- 琪琪

Mat*_*ieu 5

当您在函数中返回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;
        }
    });
Run Code Online (Sandbox Code Playgroud)