Проблема с обработчиком потоков Android - PullRequest
0 голосов
/ 27 мая 2011

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

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

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

Ответы [ 2 ]

1 голос
/ 27 мая 2011

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

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

 Thread updateThread = new Thread() {

     Handler uiHandle;

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

0 голосов
/ 27 мая 2011

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

uiHandle.sendEmptyMessage(0);

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

...