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