ProgressDialog не отображается.Снова - PullRequest
0 голосов
/ 21 февраля 2012

Я в замешательстве, потому что у меня это хорошо работает в других видах деятельности, и здесь я просто скопировал код, но ProgressDialog не появляется. Вот код:

public class MyListActivity extends ListActivity {  
  public void onCreate(Bundle savedInstanceState) 
         {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.mylayout);          
             final ProgressDialog progress = new ProgressDialog(this);        
             progress.setProgressStyle(STYLE_SPINNER);
             progress.setIndeterminate(true);
             progress.setMessage("Working...");
             progress.show();
             Thread thread = new Thread() 
                {          
                  public void run() 
                  {

                      //long operation populating the listactivity
                      progress.dismiss();
                  }
                };
                thread.run();               
         }
}

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Не уверен, является ли это основной причиной вашей проблемы, но попробуйте выполнить thread.start () вместо thread.run (). Выполнение start () фактически запустит новый поток и, возможно, даст возможность отобразить диалог прогресса.

0 голосов
/ 21 февраля 2012

Из приведенного выше кода он фактически показывает диалоговое окно и сразу же закрывает его в методе Thread run ().Если вы действительно хотите посмотреть, показывает ли он, поместите Thread.sleep (2000) для тестирования, но да, Джон Джон Рассел сказал, что вместо этого стоит использовать AsyncTask.

0 голосов
/ 21 февраля 2012

Вы должны использовать AsyncTask для управления длительной операцией.

private class LongOperation extends AsyncTask<HttpResponse, Integer, SomeReturnObject>
{
    ProgressDialog pd;
    long totalSize;

    @Override
    protected void onPreExecute()
    {
        pd = new ProgressDialog(this);
        pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        pd.setMessage("Please wait...");
        pd.setCancelable(false);
        pd.show();
    }

    @Override
    protected SomeReturnObject doInBackground(HttpResponse... arg0)
    {
        // Do long running operation here           
    }

    @Override
    protected void onProgressUpdate(Integer... progress)
    {
        // If you have a long running process that has a progress 
        pd.setProgress((int) (progress[0]));
    }

    @Override
    protected void onPostExecute(SomeReturnObject o)
    {
        pd.dismiss();
    }
}
...