如何在overrided onbackpressed()中获取super.onbackpressed()的行为

时间:2014-01-29 04:30:41

标签: android

我试图回到确认对话框,以便我决定处理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();   
}

5 个答案:

答案 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)

试试这个:

&#13;
&#13;
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;
&#13;
&#13;

在包含片段的主活动中使用此代码,如果用户按下片段,应用程序将显示该对话框,如果用户按下“是”&#39;按钮,它会回来调用onBackPressed,但现在,它会回到最后一个片段。

答案 4 :(得分:0)

要调用完全相同的超级方法:

YourActivity.super.onBackPressed();