2013-03-07 13 views
7

を更新していない私のxmlファイルが水平プログレスバーは、私がここにこの <img src="https://i.stack.imgur.com/NRhT5.png" alt="enter image description here"></p> <p>のように私の活動の水平プログレスバー「<strong></strong>をProgressDialogない」と表示しようとしています、その状態

<ProgressBar 
    android:id="@+id/pdialog" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"   
    android:indeterminate="true" 
    /> 

が含まれているものです私はAsyncTaskクラスを使用して状態を更新しようとしていますが、pdialog.setProgress()を設定して進行状況を表示していないので、progressdialogでは動作しますが、水平方向のプログレスバーでは動作しません。

public class MainActivity extends Activity { 

private SQLiteDatabase db; 
private Cursor cursor; 
private ProgressBar pdialog; 
private ImageButton btn; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.start); 
    btn = (ImageButton) findViewById(R.id.startbtn); 
    pbar = (ProgressBar) findViewById(R.id.progressBar1); 
    pdialog = (ProgressBar) findViewById(R.id.pdialog); 
    pdialog.setMax(100); 
    pdialog.setProgress(20); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      pdialog.setVisibility(View.VISIBLE); 
      new DownloadFilesTask().execute(); 

     } 
    }); 
} 

private class DownloadFilesTask extends AsyncTask<Void, Integer, Integer> { 

    int load = 1; 

    protected Integer doInBackground(Void... params) { 

     try { 
       load = 10 * i; 
       MainActivity.this.runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         pdialog.setProgress(load); 
        } 
       }); 

      } 

     } catch (Exception e) {  

     } 

    } 

    protected void onProgressUpdate(Integer... progress) { 

     if (progress[0] == 100) { 
      pdialog.setVisibility(View.INVISIBLE);   

     } 
    } 

    protected void onPostExecute(Integer params) {  

    } 

} 
} 
+0

どこが増えていますか? –

+0

私は長いコードを持っていますので、私はちょうどそれを切っています、私は私のdoinbackground()でインクリメントしていますが、そのアップデータは全くありません –

+0

http://eagle.phys.utk.edu/guidry /android/progressBarExample.htmlとhttp://blog.webagesolutions.com/archives/170また、私が正しくインクリメントしているかどうかを正しくチェックする – itsrajesh4uguys

答えて

4

load変数が正しく変更されます場合:

の代わりに、この:あなたが使用することができ

MainActivity.this.runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         pdialog.setProgress(load); 
        } 
       }); 

自動的にUIスレッド上で呼び出します
publishProgress(load); 

protected void onProgressUpdate(Integer... progress) { 
    int p = progress[0]; 
    if (p >= 100) { 
     pdialog.setVisibility(View.INVISIBLE);   
    }else{ 
     pdialog.setProgress(p); 
    } 
} 

UPDATE:

他の回答で指摘したようにandroid:indeterminate="true"を削除します。

+0

私はsetProgress()をOnProgressUpdateに入れてみましたが、結果は同じです –

+0

@VivekSingh 'pdialog.setProgress(p)'でブレークポイントを追加し、デバッグモードで実行してチェックします:コードはこのポイントに達しましたか?そうであれば、 'progress'変数の値は何ですか? –

+1

最高の友達.. +1のためのアンドロイド:indeterminate = "true" –

4

レイアウトファイルでを削除してください。android:indeterminate="true"からProgressBarという要素を削除してください。

+0

ありがとうございました。名声! –

0

私は同じ質問がありましたが、 私は問題がインターフェイスView.OnClickListener()であることがわかりました。 ptbarがbtn.setOnClickListener(新しいView.OnClickListener(){})から削除されたとき、正常に機能しました。それ以外の場合は更新されませんでした。 次に、pbarをOnXXXClickListenerに渡すコンストラクタを作成しました。

private class OnXXXClickListener implements View.OnClickListener() { 
 
     private ProgressBar bar; 
 

 
     public OnXXXClickListener(ProgressBar bar) { 
 
      this.bar = bar; 
 
     } 
 

 
     @Override 
 
     public void onClick(View v) { 
 

 
      bar.setProgess(50); 
 
      new DownloadFilesTask().execute(); 
 

 
     } 
 

 
}

その後PBARはよく仕事ができます。

関連する問題

 関連する問題