【问题标题】:Android - onKeyDown won't work with KEYCODE_MENUAndroid - onKeyDown 不适用于 KEYCODE_MENU
【发布时间】:2015-09-18 03:03:33
【问题描述】:

onKeyDownKEYCODE_MENU 一起使用除了与KEYCODE_SEARCH 一起使用外,什么也不做

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch(keyCode){
        case KeyEvent.KEYCODE_MENU:
            Toast.makeText(this, "Menu key pressed", Toast.LENGTH_SHORT).show();
            return false;
        case KeyEvent.KEYCODE_SEARCH:
            Toast.makeText(this, "Search key pressed", Toast.LENGTH_SHORT).show();
            return false;
    }
    return super.onKeyDown(keyCode, event);
}

我认为有一些东西在处理菜单键,所以它不会听我的代码 我试过像这样禁用onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return true;
}

但还是不行..
那么,有什么想法可以让菜单按钮收听onKeyDown??

【问题讨论】:

    标签: java android android-studio


    【解决方案1】:

    这可能是 appcompat v22 中的错误。见https://code.google.com/p/android/issues/detail?id=159795

    该线程中发布的解决方法是覆盖 dispatchKeyEvent :

        @Override
        public boolean dispatchKeyEvent(KeyEvent event) {
            int keyCode = event.getKeyCode();
            int action = event.getAction();
            boolean isDown = action == 0;
    
            if (keyCode == KeyEvent.KEYCODE_MENU) {
                return isDown ? this.onKeyDown(keyCode, event) : this.onKeyUp(keyCode, event);
            }
    
            return super.dispatchKeyEvent(event);
        }
    

    编辑:请看Upgraded to AppCompat v22.1.0 and now onKeyDown and onKeyUp are not triggered when menu key is pressed

    【讨论】:

      【解决方案2】:

      即使在使用 Setup Box 和 Android TV 时 您可以在Activity 中使用dispatchKeyEvent,然后检测您想要的任何键

      @Override
      public boolean dispatchKeyEvent(KeyEvent event) {
          int code = event.getKeyCode();
          int action = event.getAction();
          boolean isDown = action == 0;
      
          if (code == KeyEvent.KEYCODE_MENU) {
              Toast.makeText(this, "Menu Is Selected", Toast.LENGTH_SHORT).show();
          }
      
          return super.dispatchKeyEvent(event);
      }
      

      【讨论】:

        【解决方案3】:

        您使用的是什么设备和操作系统?

        您可能希望将您的兼容库更新到最新的.. 23.0.0

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-14
          • 1970-01-01
          相关资源
          最近更新 更多