Android 提示信息需要强制输入
Android Alert Message Need Mandatory Input
我开发了一项 Android 服务,它将 运行 在后台运行。该服务希望在事件中接受用户的是或否确认(比如收到短信时)。
它工作正常;是或否问题将显示给用户。但我想要来自(按是或否)用户的输入而不退出警报(通过按移动后退按钮或主页按钮等退出)。
请帮助我怎么可能。
在我使用的代码下方;
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
//ctx is the Context
builder.setTitle("Emergency!");
String txt="Do you want to accept?";
builder.setMessage(txt);
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Do something
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
///dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alert.show();
您可以使用 dialog.setOnKeyListener
在显示对话框时禁用后退按钮(或者可能在按下后退按钮时发送 "No" 响应)
dialog.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
dialog.dismiss();
}
return true;
}
});
遗憾的是,您无法覆盖 Android 上的主页按钮按下。但是,您可以通过在托管对话框的 activity 中实现 onUserLeaveHint
来对通过主页按钮发送到后台的 activity 做出反应。
编辑:您可能还想禁用触摸外部关闭对话框(这是默认行为),方法是
dialog.setCanceledOnTouchOutside(false);
只需在您的 AlertDialog 中添加这个
builder.setCancelable(false);
希望您正在使用 android.support.v7.app.AlertDialog;
我开发了一项 Android 服务,它将 运行 在后台运行。该服务希望在事件中接受用户的是或否确认(比如收到短信时)。 它工作正常;是或否问题将显示给用户。但我想要来自(按是或否)用户的输入而不退出警报(通过按移动后退按钮或主页按钮等退出)。 请帮助我怎么可能。 在我使用的代码下方;
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
//ctx is the Context
builder.setTitle("Emergency!");
String txt="Do you want to accept?";
builder.setMessage(txt);
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Do something
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
///dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alert.show();
您可以使用 dialog.setOnKeyListener
dialog.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
dialog.dismiss();
}
return true;
}
});
遗憾的是,您无法覆盖 Android 上的主页按钮按下。但是,您可以通过在托管对话框的 activity 中实现 onUserLeaveHint
来对通过主页按钮发送到后台的 activity 做出反应。
编辑:您可能还想禁用触摸外部关闭对话框(这是默认行为),方法是
dialog.setCanceledOnTouchOutside(false);
只需在您的 AlertDialog 中添加这个
builder.setCancelable(false);
希望您正在使用 android.support.v7.app.AlertDialog;