在我的主要活动中,我调用一个可取消的对话框。当用户在未连接到Internet时午餐时,我会显示此对话框。因此,我会显示此对话框,要求他连接到互联网。
此对话框没有按钮,我想在用户点击后退按钮时关闭应用程序。在onKeyDown()
方法中,我正在关闭应用程序(this.finish();
),但问题是当用户单击后退按钮时屏幕上显示对话框时,此对话框消失,我的主要活动显示。
似乎onKeyDown()只是在主要活动中工作而不是对话框。如何在显示对话框并用户单击后退按钮时关闭我的应用程序?
由于
=====> 的更新
这是我的自定义对话框的代码:
private void initWarningDialog(){
dialogWarning = new Dialog(DRMActivity.this, R.style.customDialogStyle);
dialogWarning.setTitle("Warning!");
dialogWarning.setContentView(R.layout.dialogwarning);
dialogWarning.setCancelable(true);
}
答案 0 :(得分:5)
只调用finish()方法:
dialog.setPositiveButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Finish activity
finish();
}
});
<强>更新强>
当你有自定义对话框时,我建议你设置OnCancelListner,类似于:
dialogWarning.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
finish();
}
});
<强>更新-2:强>
这真令人讨厌,因为用户如何知道他是否按下后退键然后实际活动将关闭。相反,你应该提供至少“ok”按钮让用户点击。
答案 1 :(得分:2)
使用OnCancelListener
为对话框设置setOnCancelListener
,并在OnCancelListener的onCancel
方法中完成活动。
答案 2 :(得分:2)
OnCancelListener
可能有用。
alert.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
finish();
}
});