我发布了这个问题,因为我无法弄清楚是什么原因导致了ProgressDialog没有出现。我找了所有类似的问题,但没有一个对我很有帮助 我在辅助类
中有这个方法private static ProgressDialog progressDialog;
public static void ShowProgressDialog(Context context, String title, String message, boolean cancellable) {
try {
if (progressDialog == null)
progressDialog = ProgressDialog.show(context, title, message);
else
LogHelper.WriteLogInfo("ALERT_DIALOG", "progress dialog already exists");
} catch (Exception e) {
LogHelper.WriteLogError("error showing progress dialog", e);
}
}
我以这种方式从我的活动中调用它
DialogHelper.ShowProgressDialog(this, "title","progress bar text",false);
new MyAsyncTask().execute("inputString");
一切都运行良好,但有时不会出现ProgressDialog,并且没有应该由catch块中的LogHelper.WriteLogError写入的错误日志。
有没有人知道造成这种行为的原因是什么?
答案 0 :(得分:0)
你应该替换
DialogHelper.ShowProgressDialog(this, "progress bar text");
new MyAsyncTask.execute("inputString")
与
DialogHelper.ShowProgressDialog(getapplicationcontext(), "progress bar Title" , "Message",false);
new MyAsyncTask.execute("inputString")
答案 1 :(得分:0)
ProgressDialog progress= new ProgressDialog(this);
progress.setTitle("Your Text");
progress.show();
MyTask tak=new MyTask();
task.execute();
答案 2 :(得分:0)
请注意,AsyncTask有一个方法
@Override
protected void onPreExecute()
{
super.onPreExecute();
// Show ProgressDialog if desired
if (doUseProgressDialog)
{
// Note that all these parameters are passed to the containing class in the constructor
progressDialog = new ProgressDialog(activity);
progressDialog.setMessage(progressDialogMessage);
progressDialog.setTitle(progressDialogTitle);
progressDialog.setProgressStyle(progressDialogStyle);
progressDialog.show();
}
}
允许UI修改(例如显示progressDialog)。此外,您可以在
中对UI进行更新protected void onProgressUpdate(Long... progress)
我建议您根据需要为AsyncTask创建子类,并在构造函数中传递所需的标题,消息等。
答案 3 :(得分:0)
请尝试这种方式
progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("Message");
progressDialog.setCancelable(false);
progressDialog.show();
Thread mThread = new Thread() {
@Override
public void run() {
/*Your Code*/
progressDialog.dismiss();
}
};
mThread.start();