Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么在KeyEvent上不显示弹出菜单?_Java_Android_Popupmenu - Fatal编程技术网

Java 为什么在KeyEvent上不显示弹出菜单?

Java 为什么在KeyEvent上不显示弹出菜单?,java,android,popupmenu,Java,Android,Popupmenu,我有一个全屏的视频视图,当按下某个键时,我想触发弹出菜单。日志显示已捕获关键事件,但不会显示弹出视图。你知道为什么吗 @Override public boolean onKeyDown(int keyCode , KeyEvent event ){ switch(keyCode){ case KeyEvent.KEYCODE_DPAD_CENTER: Log.i("POP uP MENU","Show"); mV

我有一个全屏的视频视图,当按下某个键时,我想触发弹出菜单。日志显示已捕获关键事件,但不会显示弹出视图。你知道为什么吗

 @Override
  public boolean onKeyDown(int keyCode , KeyEvent event ){
      switch(keyCode){
        case KeyEvent.KEYCODE_DPAD_CENTER:
            Log.i("POP uP MENU","Show");
            mVideoView.pause();
            showPopupMenu(new View(VideoPlayer.this));


        case KeyEvent.KEYCODE_D:
            popupMenu.dismiss();


      }
      return true;
  }


private void showPopupMenu(View v){
       popupMenu = new PopupMenu(VideoPlayer.this, v);


   if(bitRates != null){
          for(int i=0;i<bitRates.size();i++){
              int menuItem = i;
              popupMenu.getMenu().add(0,menuItem, 0,qualityList.get(i)+" : "+bitRates.get(i));

          }
      }
  popupMenu.show(); 
  popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

   public boolean onMenuItemClick(final MenuItem item) {
       progressDialog = ProgressDialog.show(VideoPlayer.this, "", "Loading video...");

       final int position = mVideoView.getCurrentPosition();
       new Thread() {

            public void run() {

                try{


                    runOnUiThread(new Runnable() {
                        public void run() {
                            play(streamUrls.get(item.getItemId()),position); 
                        }
                    });


                }
                catch (Exception e) 
                {

                    Log.e("tag", e.getMessage());

                }
                progressDialog.dismiss();
            }

        }.start();

       return true;

   }
  });
}看来

KeyEvent.KEYCODE_DPAD_CENTER

默认情况下,设置为由VideoView触发的事件。因此,当我按下该键时,VideoView触发了它的事件,而不是我请求它触发的事件。我将KeyEvent KEYCODE更改为另一个Videoview未使用的KEYCODE,它成功了。

更不用说解决了这个问题。。谢谢。想分享一下你是如何修复的吗?@Joeblackdev,是的,看来KeyEvent.KEYCODE_DPAD_CENTER是一个默认情况下由VideoView触发的事件。因此,当我按下该键时,VideoView触发了它的事件,而不是我请求它触发的事件。我将KeyEvent密钥代码更改为Videoview未使用的另一个密钥代码,并且成功了。