所以这个空指针让我感到困惑。我认为这是一个范围问题。
我的主要活动如下:
public class App extends Activity {
ProgressDialog progressDialog;
ProgressThread progressThread;
然后在oncreate里面我这样做:
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setMessage("Fetching Images...");
ProgressThread progressThread = new ProgressThread(handler,mImageIds,mImages);
progressThread.start();
progressDialog.show();
然后在progressThread
里面,这是我做的一个单独的课程
mHandler.sendMessage(mHandler.obtainMessage());
现在直到这一点,我相信它的行为应该如此。我的处理程序在我的oncreate
下面的类范围内挂起final Handler handler = new Handler() {
public void handleMessage(Message msg){
progressDialog.hide();
progressThread.interrupt();
}
};
程序认为progressDialog和progressThread已声明,但为null。如果我在我的oncreate中实例化,为什么它们会为null。
答案 0 :(得分:1)
ProgressDialog progressDialog = new ProgressDialog(this);
和
ProgressThread progressThread = new ProgressThread(handler,mImageIds,mImages);
都声明了局部变量。将它们改为:
progressDialog = new ProgressDialog(this);
progressThread = new ProgressThread(handler,mImageIds,mImages);
答案 1 :(得分:0)
在开始调试之前,我建议改用AsyncTask。它是为需要报告UI线程进度的工作线程创建的。
答案 2 :(得分:0)
谢谢伊恩!我实际上继续使用AsyncTask重新实现。它更清洁,实际上比以前更好。现在我只需要用它来实现progressdialog。