我想用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)
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)
解决方案 »
- canvas如何保存背景图片,使其中一张图片移动时,不会出现重影
- 瓦片地图的拼接和拖拽怎么实现?
- logcat里想看system.out的问题
- android 读取FLASH制作的动画
- Android怎么获取虚拟机上的内存信息 软件安装信息以及相应的内存消耗等?
- Android 中的in-memory 数据库
- Android ListView 显示item的问题
- 关于异步ListView数据加载问题
- Android中其中一个Activity可以对另一个Activity的xml文件中的EditText设置进行设置吗?
- android otg连接单反相机获取照片
- 如何建立Socket长连接
- android中怎么测试基类
---------------------------------------------
text1_1_2 或 msg.obj 为Null,提示说的很清楚了啊
这个有的。private TextView text1_1_2 = null;
TextView text1_1_2 = (TextView)findViewById(R.id.tab1_1_2);
text1_1_2在使用之前是需要findViewByID来获得控件对象的
已经解决了!!就是findViewByID这句的问题。我把这句:
TextView text1_1_2 = (TextView)findViewById(R.id.tab1_1_2);改成:
this.text1_1_2 = (TextView)findViewById(R.id.tab1_1_2);就对了。貌似我没搞清楚局部变量和全局变量的概念 - -多谢楼上二位了!