当进度条完成时做某事

do something when progress bar is completed

我想在进度条结束时敬酒(或显示对话框)。我尝试在 运行() 方法中使用 if 来执行此操作,但它会导致以下错误:

Can't create handler inside thread that has not called Looper.prepare()

我该怎么做?

这是我的代码:

@Override
public void run() {
    int myProgress = 0, Speed = 50;
    ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);

    while (myProgress<750){
        try{
            Thread.sleep(Speed);
            myProgress++;
            if (myProgressBar != null) {
                myProgressBar.setProgress(myProgress);
            }
        }
        catch(Throwable t){ }
    }
}
   runOnUiThread(new Runnable() {
      public void run() {
          //your code here 
      }
   });

改成这样

runOnUiThread(new Runnable() {
  public void run() {
    int myProgress = 0, Speed = 50;
    ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);

    while (myProgress<750){
    try{
        Thread.sleep(Speed);
        myProgress++;
        if (myProgressBar != null) {
            myProgressBar.setProgress(myProgress);
        }
    }
    catch(Throwable t){ }
}      
}
});

工作线程用于执行后台任务,除非您调用 runOnUiThread 之类的方法,否则您无法在工作线程内的 UI 上显示任何内容。如果您尝试在 UI 线程上显示任何内容而不调用 runOnUiThread,则会出现 java.lang.RuntimeException。 如果您仍然遇到任何问题,请告诉我。

我试过了,现在可以用了:

public void run() {
    int myProgress = 0, Speed = 50;
    ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
    while (myProgress<750){
        try{
            Thread.sleep(Speed);
            myProgress++;
            if (myProgressBar != null) {
                myProgressBar.setProgress(myProgress);
            }
        }
        catch(Throwable t){ }
}

final int finalMyProgress = myProgress;

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            if (finalMyProgress == 750)
                Toast.makeText(word_guess2.this, "hi", Toast.LENGTH_SHORT).show();
        }
    });
}