进度条没有更新进度

时间:2018-01-22 06:59:17

标签: android xamarin progress-bar android-progressbar

我的活动中有一个进度条。

当我点击按钮时,我想做点什么。我尝试使用此代码模拟此过程(按下按钮时的代码):

void btn_clicked(object sender, EventArgs e){
    int progressStatus = 0;

    while (progressStatus < 100)
    {
       progressStatus += 1;

       progressBar.SetProgress(progressStatus, false);

       Thread.Sleep(1000);
    }
}

我尝试执行该代码,但它没有更新进度。

但是当我做这样的事情时:

void btn_clicked(object sender, EventArgs e){

       progressBar.SetProgress(progressBar.progress += 1, false);

}

有效。

我必须尝试在RunOnUiThread,RunOnUiThread或Handler.Post中运行set progress,但是当我必须在我的方法中循环时。它使得进度条没有更新。

在While循环中,我试过这个:

while (progressStatus < 100)
{
   progressStatus += 1;


  // I also have try to change "RunOnUIThreadSynchronous"
  // with Handler.Post" or "RunOnUIThread"
   this.RunOnUIThreadSynchronous(() =>{
     progressBar.SetProgress(progressStatus, false);
   });

   Thread.Sleep(1000);
}

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

  

我必须尝试在RunOnUiThread,RunOnUiThread中运行set progress,或者   Handler.Post但是当我必须循环我的方法。它取得了进展   酒吧没有更新。有人能帮助我吗?

听起来你正试图在UI线程中执行循环方法,这可以解释在循环期间不改变值的条形图。尝试在新的/不同的线程中运行您的方法。

See link to similar question.

答案 1 :(得分:0)

我认为问题是由于下面的代码行:

int progressStatus = 0;

在第一个函数中,上面的代码行将progressStatus重置为零,而在第二个函数中,它不会初始化变量。尝试将初始化移动到函数范围之外,可能是函数声明之前的一行。这应该有效:

int progressStatus = 0;
void btn_clicked(object sender, EventArgs e){
  while (progressStatus < 100)
  {
     progressStatus += 1;

     progressBar.SetProgress(progressStatus, false);
  }
}