【问题标题】:Progress Bar Did Not Update The Progress进度条没有更新进度
【发布时间】:2018-01-22 06:59:16
【问题描述】:

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

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

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 中尝试运行设置进度,但是当我必须在我的方法中循环时。它使进度条没有更新。

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

有人可以帮我吗?

【问题讨论】:

  • 使用第一种方法 while 循环甚至会在您眨眼之前结束,您将在 ProgressBar 上看到的进度将是 99 。只需使用Thread 延迟尝试即可。

标签: android xamarin progress-bar android-progressbar


【解决方案1】:

我必须在 RunOnUiThread、RunOnUiThread 或 Handler.Post 但是当我必须循环我的方法时。它取得了进展 吧没有更新。有人可以帮我吗?

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

See link to similar question.

【讨论】:

    【解决方案2】:

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

    int progressStatus = 0;
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-08
      • 2019-01-08
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 2020-04-29
      • 2014-04-09
      • 1970-01-01
      相关资源
      最近更新 更多