我的活动中有一个进度条。
当我点击按钮时,我想做点什么。我尝试使用此代码模拟此过程(按下按钮时的代码):
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);
}
有人可以帮助我吗?
答案 0 :(得分:1)
我必须尝试在RunOnUiThread,RunOnUiThread中运行set progress,或者 Handler.Post但是当我必须循环我的方法。它取得了进展 酒吧没有更新。有人能帮助我吗?
听起来你正试图在UI线程中执行循环方法,这可以解释在循环期间不改变值的条形图。尝试在新的/不同的线程中运行您的方法。
答案 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);
}
}