当我点击按钮时,它等待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 :(得分:1)
您的方法不正确,您需要使用正确形式的线程。特别是对于您的情况,我建议您使用以下内容:
您很可能需要阅读一些教程,所以请查看
注意: AsyncTask
比Handler
更复杂,也是通用类型,专门用于更新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);