进度条不按钮更新点击

进度条不按钮更新点击

问题描述:

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


       } 
      } 
     }); 
+0

你不应该在主线程中这样做。因为它会阻止整个活动。这是你应该拥有的第一个想法。创建一个新的线程,然后将消息发送到处理程序,并从那里更新PB。 – 2012-07-20 15:54:02

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

试试这个

他们已经初步确定后,如果您想要再改变你需要设置的值之间的零在:

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); 

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

最有可能你需要阅读一些教程在


注:AsyncTaskHandler更复杂,也就是通用型和专为一些最新进展情况UI