2017-10-25 18 views
-1

뒤로 단추를 클릭하면 사용자에게 대화 상자가 표시됩니다. I는이 같은 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

(false)를 dialog.setCancelable을 정리하려고; 그리고 나서 dialog.show(); –

+0

나는 그것을했다. 하지만 도움이되지 않습니다 – Ehsan

+0

super.onBackPressed()를 제거하십시오; onclick 대화 상자에서 호출하십시오. –

답변

5

코멘트 또는 코드 줄을 제거하고

super.onBackPressed(); 
+1

그러나, 작은 줄과 1 줄의 답을 위해서는 주석 부분을 사용하십시오. 감사. – Tauqir

+0

@Tauqir OP가 자신의 문제를 해결하는 데 도움이된다면 "1 회선 답안"을주는 데는 아무런 문제가 없습니다. –

+0

@ Taquir 귀하의 제안에 감사드립니다. –

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

 

 
    }