进度条不按钮更新点击
问题描述:
因为当我点击按钮,它等待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();
}
}
}
});
答
创建异步任务。 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);
答
你的做法是不正确,则需要使用正确的线程形式。特别是对于你的情况我建议您使用以下:
最有可能你需要阅读一些教程在
-
等有看Android Threads, Handlers and AsyncTask - Tutorial
这是一个伟大的 资源。
注:AsyncTask
比Handler
更复杂,也就是通用型和专为一些最新进展情况UI
。
你不应该在主线程中这样做。因为它会阻止整个活动。这是你应该拥有的第一个想法。创建一个新的线程,然后将消息发送到处理程序,并从那里更新PB。 – 2012-07-20 15:54:02