-1

ボタンをクリックすると、20 秒間待機してからテキストからテキストへのビューが表示されます。私の要件は、1 秒後にプログレス バーの値を 5 ずつ増やす必要があることです。誰でも次のコードで私を案内できますか

public class ProgressBar1 extends  Activity{

    TextView tvpbview;
    ProgressDialog pd1;
    ProgressBar pbhr1;
    Button btnhp1;
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.progressbar1);


        btnhp1 = (Button) findViewById(R.id.btnProgress);
        pbhr1 = (ProgressBar) findViewById(R.id.pbHori1);
        pbhr1.setMax(100);


    btnhp1.setOnClickListener(new OnClickListener() {

            public void onClick(View arg0) {

                //--- For Horizontal Progress Bar------

                for(int i=0;i<=20;i++)
                {
                     pbhr1.incrementProgressBy(5);
                    tvpbview.setText(""+pbhr1.getProgress()+"% done");
                    try {
                        Thread.sleep(1000);


                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }


                }
            }
        });
4

3 に答える 3

1

アプローチが正しくないため、正しい形式のスレッドを使用する必要があります。特にあなたの場合、私はあなたが以下を使用することをお勧めします:

ほとんどの場合、チュートリアルを読む必要があるので、見てください


注: AsyncTaskジェネリック型よりも複雑であり、また、ある程度の進歩を伴っHandlerて更新するように特別に設計されています。UI

于 2012-07-20T16:26:25.983 に答える
0

これを試して

それらが最初に設定された後、値を変更したい場合は、その間にゼロに設定する必要があります。

ProgressBar dataProgressBar = (ProgressBar) findViewById(R.id.progressBarData);

    //set to 0 first to stop the bug from happening

    dataProgressBar.setMax(0);
    dataProgressBar.setProgress(0);

    //set your new values

    dataProgressBar.setMax((int) dataAllowanceValue);
    dataProgressBar.setProgress((int) dataMBytes);
于 2012-07-20T16:26:16.230 に答える
0

非同期タスクを作成します。Android は、この目的のために AsyncTask クラスを提供します。UI スレッドで進行状況バーを作成してから、publishProgress() メソッドを呼び出して進行状況バーを更新します。使い方は本当に簡単で、ドキュメントは優れています。

于 2012-07-20T16:17:36.410 に答える