调用两次dispatchKeyEvent()

Rah*_*tte 2 java android

我调试了以下代码片段,发现该方法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);
}
Run Code Online (Sandbox Code Playgroud)

Jus*_*tMe 8

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;

            }
Run Code Online (Sandbox Code Playgroud)