0

在我的主要活动中,我调用了一个可取消的对话框。当用户在未连接到 Internet 时使用应用程序午餐时,我会显示此对话框。因此,我显示此对话框以要求他连接到 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);
    }
4

3 回答 3

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:

这真的很烦人,因为用户如何知道他是否按下后退键然后实际活动将关闭。相反,您应该提供至少“确定”按钮让用户点击。

于 2011-12-30T06:36:50.183 回答
2

在OnCancelListener 的方法中设置OnCancelListener对话框使用setOnCancelListener和完成活动。onCancel

于 2011-12-30T06:38:28.457 回答
2

OnCancelListener可能有用。

 alert.setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                // TODO Auto-generated method stub                  

                finish();
            }
 });
于 2011-12-30T06:41:33.750 回答