我想在进度栏结束时敬酒(或显示一个对话框)。我试图在run()方法中使用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。
告诉我您是否仍然遇到任何问题。

10-05 22:18