当一个键被击中时开始活动

我想在用户按空格键时开始一个活动。 我的代码没有检测到空格栏被点击时。

@Override public boolean dispatchKeyEvent(KeyEvent e) { if (e.getKeyCode() == KeyEvent.KEYCODE_SPACE) { Toast.makeText(MainActivity.this, "YOU CLICKED SPACE KEY", Toast.LENGTH_LONG).show(); return true; } Toast.makeText(MainActivity.this, "Didnt work", Toast.LENGTH_SHORT) .show(); return super.dispatchKeyEvent(e); }; 

}

Related of "当一个键被击中时开始活动"

您可以将侦听器设置为具有当前焦点View ,也可以在Activity使用dispatchKeyEvent ,如本答案中所示 。

两者都会工作。


回答你的意见:如果你已经关注了我的链接,你可能已经实现了Activity.dispatchKeyEvent(KeyEvent) 。 🙂

代码没有注册我按任何键,但是当我推后退键为我敬酒“没有工作”

你碰巧在使用模拟器吗? 我问,因为最新的SDK似乎有一些模拟器键盘的问题。 特殊键(DPAD,HOME,BACK等)可以工作,但屏幕上的QWERTY键盘不会注册任何按键。 我的笔记本电脑中的物理键盘也不会注册任何按键。

不要问我为什么。

而且我说因为这周我在链接上发布了答案,而且工作正常。 改变是我今天早上更新了Android SDK到R20 / JB,所以我想这可能是一个因素。

但是,它只会在真实的设备工作 。 我刚刚连接了一个物理键盘到我的平板电脑(P7510 /蜂窝3.2), 它听空间按下就好了。

如果你仍然怀疑,这里是certificate::-)

在这里输入图像说明

 public abstract boolean onKey (View v, int keyCode, KeyEvent event) 

这个function可以用来检查哪个键被按下。

对于这种情况,我所做的是,我已经使用重写函数“onKey”

 @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == nNeededKeyCode) { //do something } return true; } 

首先你需要使用'OnKeyListener()'来获得按键事件

对不起,复制/粘贴的答案,但这应该完成你正在尝试。

这将发生在用户按下“空格键”然后让空格键移动。 如果你不想等他们放弃,你可以删除我的布尔值,并在onKeyDown函数中执行你的代码。 希望这可以帮助。

 boolean spacePressed = false; @Override public boolean onKeyDown(View arg0, Editable arg1, int arg2, KeyEvent arg3) { // TODO Auto-generated method stub switch (keyCode) { case KeyEvent.KEYCODE_SPACE: { spacePressed = true; return true; } // other cases can go here } return true; }// End of onKeyDown @Override public boolean onKeyUp(View arg0, Editable arg1, int arg2, KeyEvent arg3) { if (spacePressed){ // start intent // make this false again, so other keys won't trigger it spacePressed = false; } return true; }// End of onKeyUp