《安卓应用开发学习》——关于使用ExpandableListView.setAdapter()方法发生空指针异常
来源:互联网 发布:新浪博客绑定域名 编辑:程序博客网 时间:2024/05/02 17:10
先贴出异常日志
03-06 23:39:51.101: E/AndroidRuntime(22049): FATAL EXCEPTION: main
03-06 23:39:51.101: E/AndroidRuntime(22049): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xiangan.qq_client/com.xiangang.qq_client.MainQQActivity}: java.lang.NullPointerException
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2004)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2029)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.ActivityThread.access$700(ActivityThread.java:123)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1178)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.os.Handler.dispatchMessage(Handler.java:99)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.os.Looper.loop(Looper.java:137)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.ActivityThread.main(ActivityThread.java:4587)
03-06 23:39:51.101: E/AndroidRuntime(22049): at java.lang.reflect.Method.invokeNative(Native Method)
03-06 23:39:51.101: E/AndroidRuntime(22049): at java.lang.reflect.Method.invoke(Method.java:511)
03-06 23:39:51.101: E/AndroidRuntime(22049): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-06 23:39:51.101: E/AndroidRuntime(22049): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-06 23:39:51.101: E/AndroidRuntime(22049): at dalvik.system.NativeStart.main(Native Method)
03-06 23:39:51.101: E/AndroidRuntime(22049): Caused by: java.lang.NullPointerException
03-06 23:39:51.101: E/AndroidRuntime(22049): at com.xiangang.qq_client.MainQQActivity.initView(MainQQActivity.java:231)
03-06 23:39:51.101: E/AndroidRuntime(22049): at com.xiangang.qq_client.MainQQActivity.onCreate(MainQQActivity.java:67)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.Activity.performCreate(Activity.java:4730)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
03-06 23:39:51.101: E/AndroidRuntime(22049): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968)
03-06 23:39:51.101: E/AndroidRuntime(22049): ... 11 more
根据这两行找到运行代码代码
03-06 23:39:51.101: E/AndroidRuntime(22049): at com.xiangang.qq_client.MainQQActivity.initView(MainQQActivity.java:231)
03-06 23:39:51.101: E/AndroidRuntime(22049): at com.xiangang.qq_client.MainQQActivity.onCreate(MainQQActivity.java:67)
expandableListView.setAdapter(userAdapter);然后这行代码在initView()里面;
分析原因,异常告诉我们是空指针异常,那我们就设置断点到进行调试或者直接打印expandableListView的值,发现它为空,不是适配器userAdapter的问题。然后去布局文件查看expandableListView的id,发现也没有错。而且在Activity里也声明了。那么问题出现在哪呢?去到initView()查看代码。因为我是要把ExpandableListView布局到ViewPager其中一个View中,所以我们去看这两行代码:
expandableListView = (ExpandableListView)findViewById(R.id.userlistview);
view2 = layoutInflater.inflate(R.layout.qq_list, null);这个是加载布局文件到view2,我们在view2上显示ExpandableListView。
结果我们发现第一行代码编写在第二行代码之前(代码顺序),这样的话会不会在view2加载R.layout.qq_list之前就使用findVIewById会使expandableListView即使获取到但也是null呢(对于view2来说)?因为我们是把R.layout.qq_list加载到view2中,那么view2就作为了expandableListView的上下文Context,但是我们是在MainActivity中获取,默认的是Context不是view2.这样获取到的expandableListView自然是null值。所以我们把这两代码对调位置,把第一行的Context改成view2.结果如下:
view2 = layoutInflater.inflate(R.layout.qq_list, null);
expandableListView = (ExpandableListView)view2.findViewById(R.id.userlistview);
调试运行,成功!
总结:在使用findViewById()方法时,一定要注意你所使用的控件所在的上下文Context,这样可以避免很多麻烦。
- 《安卓应用开发学习》——关于使用ExpandableListView.setAdapter()方法发生空指针异常
- setAdapter空指针异常
- 关于listView.setAdapter(adapter)报空指针异常的问题
- 解决listView.setAdapter()出现空指针异常
- 安卓开发里面可能遇到的空指针异常
- 安卓开发空指针异常nullPointer的问题
- ListView.setAdapter(adapter);空指针异常的问题
- setAdapter的时候,总是报错 空指针异常
- 回调Service中的onstart方法时发生空指针异常
- 解决ExpandableListView空指针异常问题
- 使用AlertDialog时发生了空指针异常
- 安卓开发时提示:java.lang.NullPointerException空指针异常
- 关于android api的 getLayoutParams()方法报空指针异常!
- 关于空指针异常 NullPointerException
- setAdapter(adapter)空指针nullPointer 解决办法
- addHeaderView发生错误—— setAdapter has already been called.
- 《安卓应用开发学习》——关于ImageButton图片背景的设置问题
- 《安卓应用开发学习》——关于隐藏ActionBar标题栏的问题
- 直接设置Activity的背景颜色
- JAVA 位运算
- 对if的介绍
- js验证码生成及验证
- 《社会化产品经理:社会化商业时代的产品管理与设计》
- 《安卓应用开发学习》——关于使用ExpandableListView.setAdapter()方法发生空指针异常
- ural 1996. Cipher Message 3 KMP+FFT
- MyEclipse for Spring 8.6注册码生成代码
- dll是从哪个项目编译出来的
- 某科技厅办公工作协同平台
- 计算结构体中偏移量的方法
- MySQL主主备份
- 学习笔记 --- MINI2440 linux按键驱动代码分析
- 灰指甲患者需多补充蛋白质