我试图回到确认对话框,以便我决定处理onbackpressed(),然后我将我的代码用于确认对话框,使用ok和取消按钮为空侦听器。
< / p>
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Confirmation");
builder.setMessage("Are you sure want to exit?");
builder.setPositiveButton("OK",null);
builder.setNegativeButton("Cancel", null);
builder.show();
}
它工作正常,但问题是如果我点击确定但它应该继续super.onbackpressed()的行为否则它应该在相同的活动。
我试过的以下代码。
@Override
public void onBackPressed() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Confirmation");
builder.setMessage("Are you sure want to exit?");
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//super.onBackPressed();
}
});
builder.setNegativeButton("Cancel", null);
builder.show();
}
答案 0 :(得分:5)
将完成()完成你的活动,点击正面按钮......
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//super.onBackPressed();
finish();
}
});
答案 1 :(得分:1)
this.finish
,而this.finalize
是蹩脚的代码。
Android studioprojects希望它被try
/ catch
包围。
由于super.onBackPressed()
无法在对话框界面的onClick
方法中调用,因此更容易调用某些私有方法而不是它。
让私有方法调用super.onBackPressed()
,结果与按后退按钮相同。
答案 2 :(得分:0)
如果用户按下后退按钮,您可以确定他们想要退出。然而,随着说:
您还应为取消按钮实施OnClickListener
,并使用以下代码:
public void onClick(DialogInterface dialog, int which){
dialog.dismiss();
}
答案 3 :(得分:0)
试试这个:
boolean exit=false;
...
@Override
public void onBackPressed() {
if (exit){
exit=false;
super.onBackPressed();
}else {
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
exit = true;
onBackPressed();
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure").setPositiveButton("yes", dialogClickListener).setNegativeButton(getResources().getString("no"), dialogClickListener).show();
}
}
&#13;
在包含片段的主活动中使用此代码,如果用户按下片段,应用程序将显示该对话框,如果用户按下“是”&#39;按钮,它会回来调用onBackPressed,但现在,它会回到最后一个片段。
答案 4 :(得分:0)
要调用完全相同的超级方法:
YourActivity.super.onBackPressed();