所以这个空指针让我很困惑。我认为这是一个范围问题。
我的主要 Activity 如下所示:
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 已声明,但为空。如果我在我的 oncreate 中实例化,为什么它们会为空。
最佳答案
ProgressDialog progressDialog = new ProgressDialog(this);
和
ProgressThread progressThread = new ProgressThread(handler,mImageIds,mImages);
都声明了局部变量。将它们更改为:
progressDialog = new ProgressDialog(this);
progressThread = new ProgressThread(handler,mImageIds,mImages);
关于Android 线程处理程序 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483718/