Обработчик ниток Android NullPointerException

1

Значит, этот пустой указатель меня смущает. Я считаю, что это проблема с областью.

Моя основная деятельность выглядит следующим образом:

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();

THEN внутри progressThread, который является отдельным классом, я делаю

mHandler.sendMessage(mHandler.obtainMessage());

Теперь до этого момента я считаю, что он ведет себя так, как должен. У меня есть мой обработчик, висящий в классе, прямо под моим oncreate

final Handler handler = new Handler() {  
  public void handleMessage(Message msg){  
    progressDialog.hide();  
    progressThread.interrupt();  
  }  
 };

Программа думает, что progressDialog и progressThread объявлены, но имеют значение null. Почему они должны быть пустыми, если я создаю экземпляр в своем oncreate.

  • 0
    Кстати, диалог прогресса не будет отображаться, пока вы не выйдете из oncreate (). Ничего не может произойти асинхронно в oncreate ()
Теги:
multithreading

3 ответа

1
Лучший ответ
ProgressDialog progressDialog = new ProgressDialog(this);

и

ProgressThread progressThread = new ProgressThread(handler,mImageIds,mImages);

объявляют локальные переменные. Измените их так:

progressDialog = new ProgressDialog(this);
progressThread = new ProgressThread(handler,mImageIds,mImages);
0

Спасибо Яну! Я действительно пошел вперед и переопределил AsyncTask. Он намного чище и на самом деле работает лучше, чем раньше. Теперь мне просто нужно реализовать progressdialog с ним.

0

Прежде чем начать отлаживать это, я бы предложил вместо AsyncTask. Он был создан для рабочих потоков, которые должны сообщать о прогрессе в потоке пользовательского интерфейса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню