1

我有一个单一的活动。当用户想使用后退按钮关闭此活动时,我想显示一个对话框,用户是否确定以及其他一些选项。

覆盖按钮不是问题,但真正从对话框中完成应用程序才是问题所在。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if ((keyCode == KeyEvent.KEYCODE_BACK)) {
        Log.i(tag, "Pushed BACK button by onKeyDown");
    }

    try {
        showFinishDialog();
        return super.onKeyDown(keyCode, event);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return super.onKeyDown(keyCode, event);
    }
}

这将打开对话框 (showFinishDialog()),但我不知道在对话框中调用什么来最终真正完成我的活动。我尝试了诸如 onBackPressed 和 onDestroy 之类的公共功能,但没有成功。

提前谢谢!

4

2 回答 2

2

覆盖onBackPressed()。您可以通过以下覆盖后退按钮并弹出对话框的代码来实现您的目标。

public void onBackPressed() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to exit?")
            .setCancelable(false)
            .setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) { 
                        //Do your coding here. For Positive button

                        }
                    })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
    AlertDialog alert = builder.create();
    alert.show();

}

希望能帮助到你。

于 2013-01-12T18:35:02.483 回答
0

就写下来

finish();

无论您想在哪里完成您的活动。

就像如果你想完成一个按钮点击

@Override
public void onClick(DialogInterface dialog, int id) {
finish();
}
于 2013-01-12T18:40:38.383 回答