Android 防止在onBackPressed方法中自动关闭对话框显示

Android 防止在onBackPressed方法中自动关闭对话框显示,android,dialog,onbackpressed,Android,Dialog,Onbackpressed,如果单击“上一步”按钮,我希望向用户显示一个对话框。 我使用了如下方法创建onBackPressed方法: @Override public void onBackPressed() { super.onBackPressed(); if (isNew || !isReport) { if (!edtReportContent.getText().toString().isEmpty() && !edtReportContent.getTex

如果单击“上一步”按钮,我希望向用户显示一个对话框。 我使用了如下方法创建
onBackPressed
方法:

 @Override
  public void onBackPressed() {
    super.onBackPressed();

    if (isNew || !isReport) {

      if (!edtReportContent.getText().toString().isEmpty() && !edtReportContent.getText().toString().equals("")) {

        Toast.makeText(activity, "گزارش شما به عنوان پیش نویس ذخیره شد!", Toast.LENGTH_LONG).show();
        saveReport(1);

      } else {

        Toast.makeText(activity, "متن گزارش نمی تواند خالی باشد!", Toast.LENGTH_SHORT).show();
        final Dialog dialog = new Dialog(activity);
        dialog.setContentView(R.layout.dialog_remove_draft);

        Button btnDelete = (Button) dialog.findViewById(R.id.btn_delete);
        btnDelete.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {

            discardReport();

          }
        });

        dialog.setCancelable(false);
        dialog.show();
      }
  }
但是当我点击后退按钮时,我的对话框会显示几秒钟并自动消失!有什么问题


谢谢您的回答。

请评论或删除这行代码,然后重试

super.onBackPressed();

移除
super.onBackPressed()。您的代码现在如下所示:

@覆盖
public void onBackPressed(){
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
if(抽屉isDrawerOpen(重力压缩机启动)){
抽屉。关闭抽屉(重力压缩机启动);
回来
}
如果(关闭对话框==null){
Close_Dialog=新建AlertDialog.Builder(此)
.setCancelable(错误)
.setMessage(“您确定要关闭吗?”)
.setPositiveButton(“关闭”,新的DialogInterface.OnClickListener(){
@凌驾
公共void onClick(DialogInterface,inti){
MainActivity.super.onBackPressed();
覆盖转换(R.anim.right\u in,R.anim.right\u out);
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
公共void onClick(DialogInterface,inti){
dialogInterface.dismise();
}
})
.create();
}
如果(关闭_对话框!=null)
{
如果(!Close_Dialog.isShowing())
关闭_Dialog.show();
其他的
关闭_对话框。解除();
}

}
尝试重新排列对话框。可设置取消(false);然后是dialog.show();我做到了。但这无助于删除super.onBackPressed();并在onclick对话框内调用;添加super.onBackPressed();但是,在if(isNew | | |!isReport){的其他部分中,尝试使用注释部分代替小的和一行的答案。谢谢。@taukir给出“一行答案”没有错若这有助于OP解决他的问题。若答案正确,请不要介意将其标记为正确答案helpfull@H.Brooks,我只是给出了建议。我并不是想阻止任何人写答案。答案就是答案。即使一行就足够了。