我有一项活动。当用户想要使用后退按钮关闭此活动时,我想显示一个对话框,用户是否确定以及其他一些选项。
覆盖按钮不是问题,但是从对话框中真正完成应用程序是个问题。
@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这样的公共函数,但没有成功。
提前致谢!
答案 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();
}