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

时间:2017-10-25 08:14:19

标签: android dialog onbackpressed

如果单击后退按钮,我想向用户显示一个对话框。 我使用这个创建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();
      }
  }

但是当我点击后退按钮时,我的对话框会显示几秒钟并自动消失!有什么问题?

感谢您的回答。

2 个答案:

答案 0 :(得分:5)

评论或删除此行代码并尝试

super.onBackPressed();

答案 1 :(得分:0)

删除super.onBackPressed();。您的代码现在看起来像这样:



  @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
            return;
        }

        if(Close_Dialog==null) {
            Close_Dialog = new AlertDialog.Builder(this)
                    .setCancelable(false)
                    .setMessage("Are you sure you want to close ?")
                    .setPositiveButton("close", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            MainActivity.super.onBackPressed();
                            overridePendingTransition(R.anim.right_in, R.anim.right_out);
                        }
                    })
                    .setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            dialogInterface.dismiss();
                        }
                    })
                    .create();
        }

        if(Close_Dialog !=null)
        {
            if(!Close_Dialog.isShowing())
                Close_Dialog.show();
            else
                Close_Dialog.dismiss();
        }


    }




相关问题