Проблема с обработчиком потоков Android

Я использую следующий код, чтобы установить поток на действие кнопки.

public void onCreate(Bundle savedInstanceState) {
  .........................
  ..........................
   btnUpdateNow.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

    Thread updateThread = new Thread() {

                            Handler uiHandle;

                            @Override
                            public void run() {
                                    GetDetailsUpdate getDetailsUpdate = new GetDetailsUpdate(
                                            strUserId, strPassword,
                                            strUDID,
                                            getApplicationContext());
                                    uiHandle.sendEmptyMessage(0);                               
                            }
                        };
                        updateThread.start();

      Handler uiHandler = new Handler(){
            @Override
            public void handleMessage (Message msg){
                loader.setVisibility(View.INVISIBLE);

            }
        };
    }
  }
}

Но это дает следующую ошибку.

05-27 17:35:11.580: ERROR/AndroidRuntime(4555): Uncaught handler: thread Thread-11 exiting due to uncaught exception

05-27 17:35:11.580: ERROR/AndroidRuntime(4555): java.lang.NullPointerException

В чем проблема в моем коде?


person dev_android    schedule 27.05.2011    source источник


Ответы (2)


Вы определили свой обработчик дважды: в классе потока и в onClickListener. Итак, вы инициализируете не ту переменную, которую используете. Выполните следующие шаги:

Во-первых, удалите объявление отсюда:

 Thread updateThread = new Thread() {

     Handler uiHandle;

Во-вторых, определите свой обработчик в классе активности, а не в onClickListener.

person Vladimir Ivanov    schedule 27.05.2011

Ваш updateThread использует uiHandle:

uiHandle.sendEmptyMessage(0);

Но во всей вашей реализации Thread эта переменная поля никогда не устанавливается ни на что, поэтому она равна нулю.

person senola    schedule 27.05.2011