2012-02-21 11 views
-2

これは他のアクティビティではかなりうまく動いているので混乱しています。ここでは基本的にコードをコピーして貼り付けていますが、ProgressDialogは表示されません。ここでは、コードです: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();    
     } 
} 

答えて

1

これはあなたの問題の根本的な原因であるが、代わりにthread.runの)(thread.startを実行しようとするとわかりません()。 start()を実行すると実際に新しいスレッドが開始され、進捗ダイアログに表示される可能性があります。

0

長時間の操作を管理するには、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(); 
    } 
} 
0

上記のコードから、実際にダイアログが表示され、Thread run()メソッドですぐに閉じられます。実際にテストするためにThread.sleep(2000)を表示しているかどうかを確認したい場合は、はい、代わりにAsyncTaskを使用する方法です。

関連する問題