This question already has an answer here:
dispatchKeyEvent calling method twice
(1个答案)
5年前关闭。
我调试了以下代码片段,并知道方法
(1个答案)
5年前关闭。
我调试了以下代码片段,并知道方法
dispatchKeyEvent()
被调用了两次。请提出解决方案 @Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode()== KeyEvent.KEYCODE_DPAD_CENTER)
{
if(cDetail.getVisibility()==View.VISIBLE )
{
cDetail.setVisibility(View.INVISIBLE);
cList.setVisibility(View.INVISIBLE);
}
else
{
cDetail.setVisibility(View.VISIBLE);
cList.setVisibility(View.VISIBLE);
}
}
return super.dispatchKeyEvent(event);
}
最佳答案
dispatchKeyEvent触发两次:第一次按下按键,第二次按下按键,因此您必须过滤:
if (event.getAction()!=KeyEvent.ACTION_DOWN)
return true;
switch (keyCode) {
case KeyEvent.KEYCODE_1 :
MakeToast(1);
break;
case KeyEvent.KEYCODE_2 :
MakeToast(2);
break;
case KeyEvent.KEYCODE_3 :
MakeToast(3);
break;
}
10-07 13:51