Android AlertBox然后是ProgressDialog。 ProgessDialog没有显示

时间:2012-07-21 13:57:49

标签: android android-alertdialog android-progressbar

似乎这个主题有几个变种。我向用户显示AlertBox是否要保存此项目?如果他们回答正常,那么我希望Alertbox离开被ProgressDialog框替换,然后当项目完成后保存,它就会解散。

下面的当前代码显示确定/取消AlertBox并正确解除并正确显示吐司。但是,如果用户选择“确定”,则ProgressDialog显示完毕并且永远不会消失。按下确定/取消按钮直到保存项目。如果用户按下确定,我希望AlertBox消失,然后显示ProgressDialog并在完成保存后将其关闭。

{
 Vibrate(ClickVibrate); 
 final ProgressDialog Dialog = ProgressDialog.show(v.getRootView().getContext(), "Loading", "Please wait...", true);
if(AlertDialogProcessing==0)
{    
ProgressDialog progress;  
final String title="Save Item";
final String message="Press OK to save or CANCEL.";
final String ok="OK";
final String cancel="CANCEL";

final AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
alertbox.setCancelable(true);
alertbox.setIcon(android.R.drawable.ic_dialog_alert);
alertbox.setTitle(title);
alertbox.setMessage(message);
alertbox.setNegativeButton(cancel, null);

final AlertDialog dlg = alertbox.create();

 alertbox.setPositiveButton(ok,new DialogInterface.OnClickListener()
   {  
     public void onClick(DialogInterface arg0, int arg1)
     {  
      dlg.dismiss();
      Dialog.show();
      Vibrate(ClickVibrate); 
      Drawable drawable= getItem(imageSelect);   
      AlertDialogProcessing=1;   
      //task that takes 3 seconds
      AlertDialogProcessing=0;
      Toast.makeText(getApplicationContext(), "Item Saved.", Toast.LENGTH_LONG).show();   
    } 
  });
 alertbox.setNegativeButton(cancel,new DialogInterface.OnClickListener(){ public void onClick(DialogInterface arg0, int arg1){AlertDialogProcessing=0; Vibrate(ClickVibrate); } });
 alertbox.show();
 }
 Dialog.dismiss();
}

1 个答案:

答案 0 :(得分:1)

您在正面按钮的ProgressDialog.show()内同时呼叫ProgressDialog.dismiss()onClick(),难怪ProgressDialog无法显示。如果保存过程需要一些时间,以至于您需要ProgressDialog,我强烈建议您使用AsyncTask类。它在工作线程上运行任务,使您可以使用当前任务进度更新UI。希望这会有所帮助。