使用对话框覆盖后退按钮

时间:2013-01-12 18:29:17

标签: android back-button

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

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

@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这样的公共函数,但没有成功。

提前致谢!

2 个答案:

答案 0 :(得分: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();

}

希望它有所帮助。

答案 1 :(得分:0)

请写下

finish();

您想要完成活动的任何地方。

如果您想完成按钮,请点击

@Override
public void onClick(DialogInterface dialog, int id) {
finish();
}