单击按钮时进度栏不更新

时间:2012-07-20 15:40:54

标签: android progress-bar

当我点击按钮时,它等待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();
                    }


                }
            }
        });

3 个答案:

答案 0 :(得分:1)

您的方法不正确,您需要使用正确形式的线程。特别是对于您的情况,我建议您使用以下内容:

您很可能需要阅读一些教程,所以请查看


注意: AsyncTaskHandler更复杂,也是通用类型,专门用于更新UI并取得一些进展

答案 1 :(得分:0)

创建异步任务。 Android为此提供了AsyncTask类。您在UI线程上创建一个进度条,然后调用publishProgress()方法来更新您的进度条。它使用起来非常简单,文档非常好。

答案 2 :(得分: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);