2017-10-25 15 views
-1

戻るボタンをクリックすると、ダイアログを表示します。 は、私がこのような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(); 
     } 
    } 

をしかし、私は戻るボタンをクリックしたとき、私のダイアログが数秒間表示され、自動的に消えます!何が問題ですか?

ありがとうございました。

+1

(偽)dialog.setCancelableを再配置してみてください。次にdialog.show();を実行します。 –

+0

私はそれをしました。しかし、それは助けにはなりません – Ehsan

+0

super.onBackPressed()を削除します。 onclickダイアログを呼び出してください。 –

答えて

5

コメントやコード行を削除し、

super.onBackPressed(); 
+1

しかし、小文字と1行の答えの代わりにコメントセクションを使用してみてください。ありがとう。 – Tauqir

+0

@Tauqir OPが彼の問題を解決するのに役立つならば、 "1行答え"を与えることに何も問題はありません。 –

+0

@Tauqirあなたの提案に感謝します。 –

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(); 
 
     } 
 

 

 
    }

関連する問題