无论我如何尝试,都无法获得progressdialog栏

时间:2012-09-25 03:26:31

标签: progressdialog

好的,这个令人沮丧。我已经回顾了这里关于AsyncTasks和常规线程中的progressdialog条的帖子,没有什么是我想要的。

在AsyncTask中我这样做了:

@Override
 protected void onPreExecute()
 {
     super.onPreExecute();               
     // initialize the dialog
     progressDialog.setTitle("Please wait...");
     progressDialog.setMessage("Downloading team data...");
     progressDialog.setIndeterminate(true);
     progressDialog.setCancelable(true);
     progressDialog.show();
 }

    @Override
    protected Boolean doInBackground(String... parms) {
    ... stuff

     @Override protected void onPostExecute(Boolean result) {
     progressDialog.dismiss();
  }

当我执行上述操作时,在doInBackground作业完成之前我什么也得不到。我读过的笔记说在main中使用get()方法阻止了进度条。

行。在我继续之前,我必须等待任务完成,所以我在没有AsyncTask的情况下写了同样的事情:

公共类LoadTeamData2 {

    Context mContext;
    String teamName = "";
    Boolean result;
    String dataload = "";
    ProgressDialog progressDialog;

    public LoadTeamData2(Context mContext, String team) {
    this.mContext = mContext;
    teamName = team;
    }

    public Boolean LoadData () {

         ProgressDialog progressDialog = new ProgressDialog(mContext);
         progressDialog.setTitle("Please wait...");
         progressDialog.setMessage("Downloading team data...");
         progressDialog.setIndeterminate(true);
         progressDialog.setCancelable(true);
      //   progressDialog.show();
         ProgressDialog.show(mContext, "Title", "Message", true, true);

            ... more stuff

         progressDialog.dismiss();
             return true;
            }

从上面我得到了progressdialog栏的最简短的闪光。

我甚至从被调用的程序中取出了progressdialog栏,并在对DoStuff的调用的两侧放置了show()和dismiss()方法。仍然没有。

我的智慧结束了。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以在开始执行ProgressDialog之前启动AsyncTask,例如:

gpsProgress = ProgressDialog.show(this, "Searching...", "Getting...", true, true, new DialogInterface.OnCancelListener() {
    public void onCancel(DialogInterface dialog) {

    }
});

(new SampleAsyncTask(this)).execute(param..);

onPostExecute(Result)你可以忽略对话框。

请注意,DialogBox节目不在preExecute()中,而是在启动AsyncTask的活动中。

答案 1 :(得分:0)

调用asyncTask.get(XX,XX)阻止UIThread,

我的解决方案是将UIlogic放在onPostExecute()方法中,删除asyncTask.get(XX,XX)