嗨stackoverflow朋友
我最近遇到了一个问题,即如何在屏幕上显示警报时禁用Android中的全局搜索按钮。我不想使用搜索按钮消除警报框。我需要用户必须单击警告框按钮并以这种方式消失。所以我想在显示警告框时禁用搜索按钮。但我可以使用setCancable(false)禁用后退按钮。我该如何解决这个问题?
提前谢谢。
答案 0 :(得分:0)
因此,您的目的是提供不可取消的警报。
建议设置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();
}
}
});
}
}
但是,我不认为这是为用户留下这种警报的正确方法,有时可能需要评估限制等情况。
答案 1 :(得分:0)
在您的活动中覆盖onSearchRequested
,并在显示对话框时让它返回false
。根据{{3}}:
您可以覆盖此功能以强制全局搜索,例如在 响应专用搜索键,或完全阻止搜索(通过 简单地返回false)。
如果搜索启动则返回true,如果活动阻止,则返回false。该 默认实现始终返回true。
答案 2 :(得分:0)
.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;
}
})
只需将上面的代码添加到警告对话框构建器即可。希望这段代码会有所帮助。祝你好运。