Java 如何在android中显示警报时检测搜索按钮
嗨,朋友们 我最近遇到了一个问题,当屏幕上显示警报时,如何在android中禁用全局搜索按钮。我不想使用搜索按钮使警报框消失。我需要提醒用户必须单击alertbox按钮并以这种方式消失。因此,我想在显示alertbox时禁用搜索按钮。但是我可以使用setCanable(false)禁用后退按钮。我如何解决这个问题Java 如何在android中显示警报时检测搜索按钮,java,android,dialog,android-alertdialog,Java,Android,Dialog,Android Alertdialog,嗨,朋友们 我最近遇到了一个问题,当屏幕上显示警报时,如何在android中禁用全局搜索按钮。我不想使用搜索按钮使警报框消失。我需要提醒用户必须单击alertbox按钮并以这种方式消失。因此,我想在显示alertbox时禁用搜索按钮。但是我可以使用setCanable(false)禁用后退按钮。我如何解决这个问题 提前感谢。因此,您的目的是提供不可取消的警报。 建议设置OnDismissListener,然后再次显示警报。从视觉角度看,它不是很好(警报关闭并再次打开)。 下面是如何实现此类不可取
提前感谢。因此,您的目的是提供不可取消的警报。 建议设置OnDismissListener,然后再次显示警报。从视觉角度看,它不是很好(警报关闭并再次打开)。 下面是如何实现此类不可取消警报的一些明显示例(代码位于Acctivity类中):
但是,我不认为为用户留下此类警报是正确的方法,有时在评估限制等情况下可能需要这样做。因此,您的目的是提供不可取消的警报。 建议设置OnDismissListener,然后再次显示警报。从视觉角度看,它不是很好(警报关闭并再次打开)。 下面是如何实现此类不可取消警报的一些明显示例(代码位于Acctivity类中):
但是,我不认为为用户留下此类警报是正确的方法,有时在评估限制等情况下可能需要这样做。在活动中覆盖
onSearchRequested
,并在显示对话框时返回false
。这将阻止请求,根据:
您可以覆盖此功能以强制全局搜索,例如在
响应专用搜索键,或完全阻止搜索(通过
简单地返回false)
如果启动搜索,则返回true;如果活动阻止搜索,则返回false。这个
默认实现总是返回true
在“活动”中重写搜索请求,并在显示对话框时使其返回
false
。这将阻止请求,根据:
您可以覆盖此功能以强制全局搜索,例如在
响应专用搜索键,或完全阻止搜索(通过
简单地返回false)
如果启动搜索,则返回true;如果活动阻止搜索,则返回false。这个
默认实现总是返回true
只需将上面的代码添加到警报对话框生成器。希望这个片段能有所帮助。祝你好运
只需将上面的代码添加到警报对话框生成器。希望这个片段能有所帮助。祝你好运。你到底是什么意思?你能提供一个更好的问题吗,因为我完全不懂..嗨,androider,我的应用程序显示警报框时,我不想使用搜索按钮删除要删除的警报框。因此,我需要在显示警报框时禁用搜索按钮。您的问题以及评论真的令人困惑:-/Hi sheikh Aman我编辑了我的问题。希望现在你得到了它,我认为使用
setCancable(false)
是正确的方法,即使它没有禁用全局搜索按钮。因为这是系统在出现不可取消警报时的常规行为。你的确切意思是什么?你能提供一个更好的问题吗,因为我完全不懂..嗨,androider,我的应用程序显示警报框时,我不想使用搜索按钮删除要删除的警报框。因此,我需要在显示警报框时禁用搜索按钮。您的问题以及评论真的令人困惑:-/Hi sheikh Aman我编辑了我的问题。希望现在你得到了它,我认为使用setCancable(false)
是正确的方法,即使它没有禁用全局搜索按钮。因为这是系统在出现不可取消警报时的常规行为。
/** 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();
}
}
});
}
}
.setOnKeyListener(new DialogInterface.OnKeyListener()
{
@Override
public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
{
//There you catch the key, do whatever you want to do.
//Return true if you handled the key event, so nothing will trigger.
//Return false if you want your activity to handle.
return true;
}
})