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未使用的另一个密钥代码,并且成功了。