Android 线程处理程序 NullPointerException

标签 android multithreading

所以这个空指针让我很困惑。我认为这是一个范围问题。

我的主要 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/

相关文章:

java - 数据更改时刷新加载程序 - android

android - 如何在 TextView 中单击一次获得选择光标

android - 使用 <RadioGroup> 设置所有 <RadioButton> checked false

java - 多线程中的监听器仅在匿名传递时调用,而不是在声明为成员时调用

java - 需要一个可以支持多个读者的队列

multithreading - 在 core.async 中阻塞与线程

c# - 从线程中获取线程 ID

c++ - 在全局变量的析构函数中初始化 thread_local 变量是否合法?

android - 如何为使用Firestore和消息传递的Flutter Android项目修复Gradle错误

android - AUDIO_OUTPUT_FLAG_FAST 被客户端拒绝