0

我发布这个问题是因为我无法真正弄清楚是什么原因导致有时没有出现 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 写入的错误日志。

有谁知道是什么导致了这种行为?

4

4 回答 4

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 进行子类化,并在构造函数中传递所需的标题、消息等。

于 2013-07-31T09:33:35.427 回答
0

你应该更换

DialogHelper.ShowProgressDialog(this, "progress bar  text");
new MyAsyncTask.execute("inputString")

DialogHelper.ShowProgressDialog(getapplicationcontext(), "progress bar Title" , "Message",false);
new MyAsyncTask.execute("inputString")
于 2013-07-31T09:18:12.847 回答
0
ProgressDialog progress= new ProgressDialog(this);

progress.setTitle("Your Text");

progress.show();

MyTask tak=new MyTask();

task.execute();
于 2013-07-31T09:29:01.690 回答
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();
于 2020-08-06T06:16:09.403 回答