2012-04-25 3 views
0

안녕하세요 여러분이 아래 코드를 체크 아웃 ... 내 응용 프로그램에서 진행률 표시 줄을 사용하고 있지만 내가 dialog.dismiss() 사용할 때 보여주지 않습니다하지만이 방법을 사용하지만 문제가 표시됩니다 그것이 사라지지 않는다는 것입니다 .... 어떤 도움 얘들 아 ...?진행 표시 줄이 표시되지 않습니다

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
       builder.setMessage("Are you sure you want to delete?") 
         .setCancelable(false) 
         .setPositiveButton("Yes", 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, 
              int id) { 
             `ProgressDialog` dialog1 = ProgressDialog.show(context, "", "Deleting...",true); 
             // Log.v("", "You Clicked " + s); 

             dba.delete("messages", "private = 0 and _id=?", 
               new String[] { s }); 
             dba.close(); 
             populate(); 

            } 
           }) 
         .setNegativeButton("No", 
           new DialogInterface.OnClickListener() { 
            public void onClick(DialogInterface dialog, 
              int id) { 
             dialog.cancel(); 
            } 
           }); 

       AlertDialog alert = builder.create(); 
       alert.show(); 
       dialog1.dismiss(); 
+0

dialog1에 문제가 있습니까? 아니면 경고가있는 문제입니까? – ootinii

+0

문제가있는 대화 상자 1 진행률 대화 상자가 있습니다 ... – kashifmehmood

답변

1

몇 가지 내가 정리 것입니다 : 당신이 긍정적를 클릭 할 때까지

나에게
DialogInterface.OnClickListener clickListener = new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
     switch(id){ 
     case DialogInterface.BUTTON_POSITIVE: 

      ProgressDialog waitDialog = ProgressDialog.show(context, "", "Deleting...",true); 
      dba.delete("messages", "private = 0 and _id=?", new String[] { s }) > 0); 
      dba.close(); 

      waitDialog.dismiss(); 

      populate(); 

      break; 
     case DialogInterface.BUTTON_NEGATIVE: 
      dialog.dismiss(); 
      break; 
     } 
} 

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setMessage("Are you sure you want to delete?") 
     .setCancelable(false) 
     .setPositiveButton("Yes", clickListener) 
     .setNegativeButton("No", clickListener); 

AlertDialog alert = builder.create(); 
alert.show(); 

그것의 혼란을 왜 좋겠 dialog이 표시되지 않습니다 때 dialog.dismiss()를 호출 즉시 alert.show()를 호출 것 버튼을 클릭하십시오.

이제 SQLite 호출이 차단되고 삭제 작업을 수행 한 다음 바로 다음에 대화 상자를 닫으면 올바른 순서로 수행해야한다는 것을 기억하지 못합니다. 아직 내 커피가 없었어요;)

SQLite 호출은 일반적으로 너무 오래 걸리지 않으므로 데이터베이스에서 한 행을 삭제할 때 ProgressDialog가 깜박이고 깜박 거립니다. 동작이 300ms보다 오래 걸리는 경우 진행 상황을 보여주기 위해 타이머를 구현하는 것이 좋습니다.

또한 익명의 내부 클래스를 사용하는 대신 OnClickListener을 새로 만들면 정리하고 재사용 할 수있게됩니다.

다음 행 : dialog.cancel(); 대화 상자를 이 아닌이 아닌 것으로 설정 한 것만 큼 재미 있습니다. dismiss()cancel()의 차이는 cancel() 호출이 사용자가 설정하지 않은 OnCancelListener을 트리거한다는 것입니다.

+0

진행률 대화 상자가 표시되지 않습니다 .... – kashifmehmood

+0

코드로 인해 표시되지 않거나 작업이 너무 빠르기 때문에 표시 할 수 없습니다. 나는이 블록들을 테스트하지 않았다. – Phix

+0

코드가 제대로 작동하지만 진행 대화 상자가 표시되지 않습니다. – kashifmehmood

관련 문제