我想用Handler刷新TabActivity中TextView里的文本,通过点击菜单项刷新,可为什么总是报空指针异常    关键代码:
      private class MyHandler extends Handler { public MyHandler(Looper looper){
super(looper);
}

@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SET:
Test.this.text1_1_2.setText(msg.obj.toString());

}
super.handleMessage(msg);
}

}; @Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 1, R.string.menu1);
return super.onCreateOptionsMenu(menu);
} @Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (item.getItemId() == 1) {
Looper looper = Looper.myLooper();
MyHandler myHandler = new MyHandler(looper);
myHandler.removeMessages(0);
String data = "ABCDE";
Message msg = myHandler.obtainMessage(SET,1,1,data);
myHandler.sendMessage(msg);

}
return super.onMenuItemSelected(featureId, item);

}
    错误信息:04-13 09:02:22.404: E/AndroidRuntime(919): FATAL EXCEPTION: main
04-13 09:02:22.404: E/AndroidRuntime(919): java.lang.NullPointerException
04-13 09:02:22.404: E/AndroidRuntime(919):  at zzx.Android.Test$MyHandler.handleMessage(Test.java:108)
04-13 09:02:22.404: E/AndroidRuntime(919):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-13 09:02:22.404: E/AndroidRuntime(919):  at android.os.Looper.loop(Looper.java:123)
04-13 09:02:22.404: E/AndroidRuntime(919):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-13 09:02:22.404: E/AndroidRuntime(919):  at java.lang.reflect.Method.invokeNative(Native Method)
04-13 09:02:22.404: E/AndroidRuntime(919):  at java.lang.reflect.Method.invoke(Method.java:521)
04-13 09:02:22.404: E/AndroidRuntime(919):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-13 09:02:22.404: E/AndroidRuntime(919):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-13 09:02:22.404: E/AndroidRuntime(919):  at dalvik.system.NativeStart.main(Native Method)

解决方案 »

  1.   

    text1_1_2.setText(msg.obj.toString());
    ---------------------------------------------
    text1_1_2 或 msg.obj 为Null,提示说的很清楚了啊
      

  2.   


    这个有的。private TextView text1_1_2 = null;
    TextView text1_1_2 = (TextView)findViewById(R.id.tab1_1_2);
      

  3.   

    这样使用Handler是没问题的,
    text1_1_2在使用之前是需要findViewByID来获得控件对象的
      

  4.   


    已经解决了!!就是findViewByID这句的问题。我把这句:
    TextView text1_1_2 = (TextView)findViewById(R.id.tab1_1_2);改成:
    this.text1_1_2 = (TextView)findViewById(R.id.tab1_1_2);就对了。貌似我没搞清楚局部变量和全局变量的概念 - -多谢楼上二位了!