Почему popUpMenu не отображается в KeyEvent?

У меня есть просмотр видео в полноэкранном режиме, и я хотел бы вызвать всплывающее меню при нажатии определенной клавиши. Журнал показывает, что ключевое событие зафиксировано, но всплывающее окно не отображается. Есть идеи, почему?

 @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;

   }
  });

}


person Fabii    schedule 02.04.2012    source источник
comment
Неважно, проблема решена .. спасибо.   -  person Fabii    schedule 02.04.2012
comment
Не поделитесь, как вы это исправили?   -  person Joeblackdev    schedule 02.04.2012
comment
@Joeblackdev, да, похоже, KeyEvent.KEYCODE_DPAD_CENTER — это событие, которое по умолчанию запускается VideoView. Поэтому, когда я нажал эту клавишу, VideoView вызвал событие своего события вместо события, которое я запрашивал. Я изменил KEYCODE KeyEvent на другой ключ (один, не используемый Videoview), и это сработало.   -  person Fabii    schedule 02.04.2012


Ответы (1)


Кажется, что

KeyEvent.KEYCODE_DPAD_CENTER

— это событие, которое по умолчанию запускается элементом VideoView. Поэтому, когда я нажал эту клавишу, VideoView вызвал событие своего события вместо события, которое я запрашивал. Я изменил KEYCODE KeyEvent на другой ключ (один, не используемый Videoview), и это сработало.

person Fabii    schedule 03.04.2012