2012-03-06 78 views
-2

我得到了getHandler一個NullPointerException,我解決不了這個問題..NullPointerException異常處理程序的Android

你能幫助我嗎?我不知道錯誤在哪裏..錯誤發生在相同的情況下隨機。

一些代碼...

final Handler mHandler = new Handler(); 
    new Thread(new Runnable() { 
     public void run() { 
      while (mProgressStatus < 100) { 
        mProgressStatus = Elabora(); 
        mHandler.post(new Runnable() { 
        public void run() { 
         progressBar1.setProgress((int) mProgressStatus); 
        } 
       }); 
      } 
      if(isStopped) 
      { 
       op_ko.show(); 
        //error in the next line 
      txt_status1.getHandler().post(new Runnable() { 
        public void run() { 
         txt_status1.setText(R.string.op_ko); 
        } 
       }); 

      } 
       else 
       { 
        op_ok.show(); 
        txt_status1.getHandler().post(new Runnable() { 
         public void run() { 
          txt_status1.setText(R.string.op_ok); 
         } 
        }); 
       } 
      btn_stop.getHandler().post(new Runnable() { 
       public void run() { 
        btn_stop.setVisibility(View.INVISIBLE); 
       } 
      });   
     } 
+3

請發佈完整的LogCat輸出。 – bschultz 2012-03-06 21:47:23

+0

並在代碼中顯示您正在爲txt_status1設置處理程序的位置。最直接的可能是你永遠不會設置處理程序! – robamaton 2012-03-06 21:48:44

+0

這裏是logCat:http://dl.dropbox.com/u/47137048/logcat.txt – kekko986 2012-03-06 22:10:07

回答

0

書中有很多的變數,可能爲空,請儘量使用調試找出哪一行是(即讀的logcat或重新運行了Java Exception Breakpoint on NullPointerException)。

如果錯誤發生或不會「隨機」發生,通常的陷阱之一是初始化一個Activity的onCreate之外的成員變量(mHandler ...但也可能是txt_status1,progressBar1,btn_stop等?) 。如果Android初始化方向更改,或者隨意決定爲了任何其他原因而終止並重新創建活動,則會失去狀態,並且所有成員變量都將爲空。

+0

hi paul-jan ...謝謝你的回答...我問你是否可以看看這個.. frm_elabora.java http://dl.dropbox.com/u/47137048/frm_elabora.java 先謝謝你!!! – kekko986 2012-03-06 23:29:27

+0

我想我解決了這個問題:我不再得到NullPointerException ..我從onCreate和新的Trhead之前初始化處理程序...但是,如果Android初始化方向更改..一些東西,如吐司和其他東西重新啓動。 .. – kekko986 2012-03-07 11:51:10