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
我的代码有什么问题?     

解决方法

        您已经在线程类和onClickListener中定义了Handler两次。 因此,您不必初始化正在使用的变量。请执行以下步骤: 首先,从此处删除声明:
 Thread updateThread = new Thread() {

     Handler uiHandle;
其次,在活动类而不是onClickListener中定义您的处理程序。     ,        您的updateThread使用uiHandle:
uiHandle.sendEmptyMessage(0);
但是在整个Thread实现中,此字段变量永远不会设置为任何值,因此它为null。