当我按一个键时,onKeyUp没有启动

时间:2018-10-16 15:25:58

标签: java android

每当我按下一个键来启动烤面包时,我都在尝试,但是好像没有启动它,有什么主意吗?

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.txtKey);
        editText = findViewById(R.id.etxtKeyboard);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_P:
                Toast.makeText(this, "P pressed", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }

1 个答案:

答案 0 :(得分:1)

如Android文档所述有关Activity.onKeyUp()方法:

  

在释放键且未被任何视图处理时调用   活动内部。因此,例如,当光标   在TextView内部不会触发事件(除非它是   导航到另一个对象),因为TextView处理自己的键   按下。

因此,看来findViewById(R.id.etxtKeyboard);编辑文本视图中的焦点时,您试图捕获onKeyUp()事件。

您可以尝试在Activity.onCreate()中添加这样的代码:

editText.setOnKeyListener(
        new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                switch (keyCode) {
                    case KeyEvent.KEYCODE_P:
                        Toast.makeText(MyActivity.this, "P pressed", Toast.LENGTH_SHORT).show();
                        return true;
                    default:
                        return false;
                }
            }
        }
);