2011-08-16 7 views
-4

私はサーバーからデータを取得できるアプリケーションを作成していますので、進捗バーを追加したいだけですが、特定の時間を指定することはできません。サーバーからのデータ全体をフェッチしながらランダムに終了します。どうすればいいですか?スレッド付きのアンドロイドのプログレスバー

あなたはあなたがこれらのhttp://developer.android.com/reference/android/widget/ProgressBar.htmlサンプルを使用することができ推敲

+3

を使用することができますか?どのくらいの時間がかかるかを知らずに進行状況バーを表示することはできません – Reno

答えて

1
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.event_detail); 

    pd = ProgressDialog.show(this, "Please Wait", "Loading ....", true,true); 
    Thread thread = new Thread(this); //Implment Runnable; 
    thread.start(); 
    //  setData(); 
} 

@Override 
public void run() 
{ 
    //Do your all work except User Interface Updation 
    han.sendEmptyMessage(0); 

} 
private Handler han=new Handler() 
{ 

    @Override 
    public void handleMessage(Message msg) 
    { 
    dismiss dialog 
    } 

}; 
1

と1つの簡単な例を与えることができますが、それは非同期タスクExample of async taskと統合する方が良いでしょうし、あなたはそれがかかりますどのくらいかわからないので、ちょうどクローズするonPostExecuteを使用します進捗。 助けてくれるといいです

1

AsynTaskindeterminate ProgressDialogを一緒に組み合わせることが必要です。このようなもの:

private class DownloadTask extends AsyncTask<...> { 

private ProgressDialog progressBar; 

protected void onPreExecute() { 
    progressBar = ...; 
    progressBar.show(); 
} 

protected Long doInBackground() { 
    // blah blah 
} 

protected void onPostExecute() { 
    progressBar.dismiss(); 
} 
} 

進捗状況をキャンセルしたい場合は、忘れずに処理してください。

1

UはAsyncTask

あなたの代わりに円のgifブツとロードを使用していないのはなぜ
private class Myclass extends AsyncTask<Void, Integer, Void> { 

ProgressDialog pDialog; 

@Override 
protected void onPreExecute() { 
    pDialog= ProgressDialog.show(context, "", "loading..."); 
    pDialog.show(); 
super.onPreExecute(); 
} 

@Override 
protected Long doInBackground(Void... unused) { 
    // your code here 
return null; 
} 

@Override 
protected void onPostExecute(Void unused) { 
    pDialog.dismiss(); 
} 
} 
関連する問題