似乎这个主题有几个变种。我向用户显示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();
}
答案 0 :(得分:1)
您在正面按钮的ProgressDialog.show()
内同时呼叫ProgressDialog.dismiss()
和onClick()
,难怪ProgressDialog
无法显示。如果保存过程需要一些时间,以至于您需要ProgressDialog
,我强烈建议您使用AsyncTask
类。它在工作线程上运行任务,使您可以使用当前任务进度更新UI。希望这会有所帮助。