长按菜单按钮可关闭Android 2.3上的对话框
作者:互联网
我们创建了一个可用于对话框的android库.在我们体验过的带有Android 2.3.6的Samsung Galaxy S1 Plus I9005上进行测试后,长按设备菜单按钮会立即关闭活动对话框.我什至不知道长按该按钮的目的.
对于不知道设备的人,此图片应显示您的意思:
在运行Android 4.x的设备上不会发生此问题.我在运行Android 4.1.2的Samsung Galaxy S3甚至带有Android 4.0.3自定义ROM的Galaxy S1上进行了测试-没问题.
为了禁止关闭对话框,我尝试覆盖onKeyDown,onKeyUp,onPrepareOptionsMenu和其他似乎相关的方法,但是这些方法都没有带来成功或任何有价值的信息.当我尝试调试这些方法时,也会发生同样的情况,因为在调试器到达我可以覆盖的任何方法之前,对话框就消失了.
对话框是通过以下方式创建的:
@Override
public Dialog onCreateDialog(final int pId) {
Dialog dialog;
switch (pId) {
case LOADING_DIALOG:
dialog = DialogCreator.createLoadingDialog(MyActivity.this));
break;
default:
dialog = null;
}
super.onCreateDialog(pId);
return dialog;
}
DialogCreator只是通过使用以下方法创建AlertDialog:
new AlertDialog.Builder(pContext).create();
为了防止对话框被取消,我添加了:
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.setCancelable(false);
有人知道为什么要关闭对话框吗?
编辑
在“桌面”上时,长按菜单按钮可启动Google搜索.
解决方法:
@QQQestions的答案帮助我解决了这个问题.您应该使用OnKeyListener拦截菜单按钮的长按事件.
编辑
if (keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) {
return true; // Pretend we processed it
} else if (keyCode == KeyEvent.KEYCODE_MENU && event.getRepeatCount() == 0) {
return true; // Pretend we processed it
}
标签:android-layout,android-view,android-ui,android 来源: https://codeday.me/bug/20191123/2065109.html