当我为Android编写某种HTML下载程序时,我决定使用ProgressBar,但它抛出了java.lang.IllegalStateException: The current thread must have a looper!
。我知道当一个函数需要在主线程上调用时抛出此异常,但我在runOnUiThread()
内调用它。请查看下面的代码。
//Inside a worker thread's run()
progressbar.setInterminate(true); //No Exception here
//Connect and get InputStream.
progressbar.setMax(conn.getContentLength()); //No exception here, too
progressbar.setProgress(0); //No exception here.
runOnUiThread(new Runnable() {
@Override
public void run() {
progressbar.setInterminate(false); //Exception here!
}
});
我已尝试将setProgress()
移到setInterminate(false)
下方,但没有做任何事情。
提前致谢。
答案 0 :(得分:0)
我对编程很新,我对HTML下载器等一无所知,但我会尽力帮助。根据我的阅读,默认主线程是运行所有内容的地方,除非创建新的线程。那么,如果progress.setInterminate(false);
在progressbar.setProgress(0);
旁边而不是新线程中会发生什么呢?