2012-04-25 23 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(); 

そのを使用すると、POSITIVEをクリックするまでdialogは表示されませんときに、alert.show()を呼び出すと、すぐにdialog.dismiss()を呼ぶだろうと思いますなぜボタンをクリックします。

SQLiteの呼び出しがブロックされていて、削除操作を実行した後すぐにダイアログを閉じると、正しい順序で実行する必要があります。まだコーヒーは持っていませんでした;)

SQLiteの呼び出しは通常は時間がかからないので、データベースから行を1つ削除するには、ProgressDialogが点滅します。操作が300msよりも長くかかる場合は、進捗状況を表示するタイマーを実装することをお勧めします。

また、匿名の内部クラスを使用する代わりに新しいOnClickListenerを作成することで、クリアされ、より再利用可能になります。

次の行: dialog.cancel(); ダイアログがではなく、に設定されているのは面白いです。 dismiss()cancel()の違いは、設定していないOnCancelListenercancel()呼び出しによってトリガーされることです。

+0

まだ進行状況ダイアログには表示されません.... – kashifmehmood

+0

コードによっては表示されないか、操作が速すぎて表示できません。私はこれらのブロックをテストしなかった。 – Phix

+0

あなたのコードをテストしましたが、うまくいきましたが、進捗ダイアログは表示されません – kashifmehmood

関連する問題