2013-09-12 5 views
1

Я использую следующую функцию (в активности) для обнаружения кнопки громкости щелкает:OnKeyDown не был вызван, когда popupwindow видна

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP){ 
     if(mAudioManager != null){ 
      int curVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
      Intent intent = new Intent(); 
      intent.setAction(VerticalSeekBar.ACTION_VOLUME_CHANGED); 
      intent.putExtra(VerticalSeekBar.ARGUMENT_VOLUME_VALUE,curVolume); 
      sendBroadcast(intent); 
      return true; 
     } 
    } 

    return super.onKeyDown(keyCode, event); 
} 

Вещи, у меня есть popupwindow, который представляет шкалу громкости, как искать по вертикали бар в его представлении. , когда всплывающее окно показано, что onKeyDown в моей активности не называется до тех пор, пока я не уменьшу popupwindow.

любое предложение, как решить эту проблему? есть ли другой способ для обнаружения щелчков кнопки регулировки громкости? спасибо большое за помощь

ответ

0

Не знаете, как вы на самом деле используете этот всплывающий, но если вы используете диалог, у вас есть доступ к onKeyDown(); для диалога.

http://developer.android.com/reference/android/app/Dialog.html#onKeyDown%28int,%20android.view.KeyEvent%29

+0

Это мой альтернативный вариант, то popupwindow является общим для всего приложения с его уникальным видом, так это должно быть сделано таким образом .. –

2

Попробуйте установить фокусируемую ложь для вашего класса PopupWindow.

mMyPopupWindow.setFocusable(false); 
+0

Спасибо, это работает для меня. – codezjx

Смежные вопросы