Android线程处理程序问题

时间:2011-05-27 13:49:01

标签: android multithreading handler

我使用以下代码在按钮操作上设置线程。

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 个答案:

答案 0 :(得分:1)

您已经两次定义了Handler:在线程类和onClickListener中。 因此,您初始化的不是您正在使用的变量。请按照以下步骤操作:

首先,从这里删除声明:

 Thread updateThread = new Thread() {

     Handler uiHandle;

其次,在活动类中定义您的处理程序,而不是在onClickListener中定义。

答案 1 :(得分:0)

您的updateThread正在使用uiHandle:

uiHandle.sendEmptyMessage(0);

但是在你的整个Thread实现中,这个字段变量永远不会被设置为任何东西,因此它是null。