其他分享
首页 > 其他分享> > 长按菜单按钮可关闭Android 2.3上的对话框

长按菜单按钮可关闭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