java - 如何在android中显示警报时检测搜索按钮

标签 java android dialog android-alertdialog

嗨 stackoverflow 的 friend 们

我最近遇到了一个问题,即当屏幕上显示警报时如何禁用 android 中的全局搜索按钮。我不想通过使用搜索按钮来使警报框消失。我需要用户必须单击警报框按钮并以这种方式消失。所以我想在显示警报框时禁用搜索按钮。但是我可以使用 setCancable(false) 禁用后退按钮。我该如何解决这个问题?

提前致谢。

最佳答案

因此,您的 Intent 是提供不可取消的警报。 建议设置 OnDismissListener 并再次显示警报。从视觉角度来看不是很好(警报关闭并再次打开)。 下面是一些如何实现这种不可取消警报的明显示例(代码在 Acctivity 类中):

/** reference to our alert */
private AlertDialog alert = null;
/** to indicate if alert dismissed by key */
private boolean alertKeyPressed = false;

@Override
protected void onResume() {

    // Say, we need to show alert when activity resumed

    if(true/*provide condition to show alert*/) {

        showAlert();
    }
}

/**
 * Show non dismissable alert
 */
private void showAlert() {
    if(null == this.alert) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setCancelable(false);
        builder.setTitle(R.string.str_alert_title);
        builder.setMessage(R.string.str_alert_text);
        builder.setIcon(android.R.drawable.ic_dialog_alert);

        builder.setNeutralButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

                YourActivity.this.alertKeyPressed = true;

                dialog.dismiss();
            }
        });

        this.alert = builder.create();

        this.alert.setOwnerActivity(this);
        this.alert.show();

        this.alert.setOnDismissListener(new DialogInterface.OnDismissListener() {

            @Override
            public void onDismiss(DialogInterface dialog) {


                // dialog is not allowed to be dismissed, so show it again
                YourActivity.this.alert = null;

                if(!YourActivity.this.alertKeyPressed) {
                    showAlert();
                }
            }
        });
    }
}

但是,我不认为给用户留下这样的警告是正确的方式,有时在评估限制等情况下可能需要它。

关于java - 如何在android中显示警报时检测搜索按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6870547/

相关文章:

Android 是否获得点击谷歌地图 v2

android - 如何下载适用于 Nexus 9 的安卓 Lollipop 源代码?

java - 如何让对话框显示程序的输出?

javascript - polymer 适合纸质对话框显示在抽屉顶部

android - 安装的构建工具修订版 31.0.0 已损坏。使用 SDK 管理器删除并重新安装

javascript - 将数据传递给 jqueryUI 对话框

java - 服务器端对云服务执行多个请求

java - 为什么 Swagger + RESTEasy 不能使用 @ApplicationPath ("")

java - 无法使用资源文件夹中的文件进行 jUnit 测试

java - 如何从多个嵌套 FXML 获取数据并调用其 Controller 上的方法