2011-05-27 109 views
0

我使用以下代碼在按鈕操作上設置線程。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 

我的代碼有什麼問題?

回答

1

您已經定義了您的處理程序兩次:在線程類和onClickListener中。 所以,你不初始化你正在使用的變量。按照下面的步驟:

首先,從這裏取出聲明:

Thread updateThread = new Thread() { 

    Handler uiHandle; 

其次,定義你的處理器在活動課,不是在onClickListener。

0

你updateThread使用uiHandle:

uiHandle.sendEmptyMessage(0); 

但在你的整個線程中執行這一領域的變量從未被設置爲任何所以它是空的。