安卓java.lang.IllegalArgumentException: The observer is null.解决方案
来源:互联网 发布:java 制作图片 编辑:程序博客网 时间:2024/06/04 23:20
刚刚在调试自己的APP项目的时候报错java.lang.IllegalArgumentException: The observer is null.,而之前是可以运行通过,所以百思不得其解,后来在网上查找相关资料,终于弄明白是咋回事,现在记录如下,一来算是积累调错方面的知识,二来或许可以帮到出现同样错误的人。
出错的主要原因是在ViewPager中使用到了GridView这样的控件,当销毁包含该ViewPager控件的Activity时,如切换Fragment或Activity或退出应用,则会报java.lang.IllegalArgumentException: The observer is null.的错误,主要原因是GridView使用的是适配器模式来显示视图,采用观察者模式来更新视图,在移除View时会调用BaseAdapter.unregisterDataSetObserver方法,所以如果GridView在移除View时如果对同一个View移除多次,则会报java.lang.IllegalArgumentException: The observer is null.错误。解决方案很简单,只需在GridView的适配器类中重写unregisterDataSetObserver方法,在其中加一个判空语句即可,注意该错误同样适用于ListView,因为ListView同样使用的是适配器模式。
错误代码如下:
java.lang.IllegalArgumentException: The observer is null.at android.database.Observable.unregisterObserver(Observable.java:64)at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42)at android.widget.AbsListView.onDetachedFromWindow(AbsListView.java:2872)at android.view.View.dispatchDetachedFromWindow(View.java:11908)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2647)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:2645)at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:2685)at android.view.ViewRootImpl.doDie(ViewRootImpl.java:4044)at android.view.ViewRootImpl.die(ViewRootImpl.java:4027)at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:375)at android.view.WindowManagerImpl$CompatModeWrapper.removeViewImmediate(WindowManagerImpl.java:170)at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3352)at android.app.ActivityThread.access$1200(ActivityThread.java:140)at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)at android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop(Looper.java:137)at android.app.ActivityThread.main(ActivityThread.java:4914)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:511)at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)at dalvik.system.NativeStart.main(Native Method)
解决代码如下:
public class GridViewAdapter extends SimpleAdapter {public GridViewAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from,int[] to) {super(context, data, resource, from, to);// TODO Auto-generated constructor stub}@Overridepublic void unregisterDataSetObserver(DataSetObserver observer) {if (observer != null) { super.unregisterDataSetObserver(observer); }}}即在自己适配器类中重写unregisterDataSetObserver方法,在其中加一个判空语句,如果observer不为空,才调用super.unregisterDataSetObserver(observer);语句。
1 0
- 安卓java.lang.IllegalArgumentException: The observer is null.解决方案
- java.lang.IllegalArgumentException: The observer is null.异常解决方案
- java.lang.IllegalArgumentException: The observer is null.最终解决方案
- 解决方案:java.lang.IllegalArgumentException: The observer is null
- java.lang.IllegalArgumentException: The observer is null.
- java.lang.IllegalArgumentException: The observer is null.
- android java.lang.IllegalArgumentException: The observer is null 异常解决
- java.lang.IllegalArgumentException: The observer is null.异常解决
- viewpager java.lang.IllegalArgumentException:The observer is null
- Android使用ViewPager导致java.lang.IllegalArgumentException: The observer is null.
- android退出一个含有listview的activity时报java.lang.IllegalArgumentException: The observer is null.
- IllegalArgumentException:The observer is null的解决方法
- java.lang.IllegalArgumentException: host parameter is null
- java.lang.IllegalArgumentException: host parameter is null
- java.lang.IllegalArgumentException: host parameter is null
- java.lang.IllegalArgumentException: the bind value at index 1 is null or java.lang.IllegalArgumen
- 问题:java.lang.IllegalArgumentException:the bind value at index is null
- java.lang.IllegalArgumentException: the bind value at index 1 is null
- C语言小项目制作之---注释转换
- 流布局
- codeforces 659E New Reform
- 机器学习常见的优化算法
- R数据清理与转换
- 安卓java.lang.IllegalArgumentException: The observer is null.解决方案
- 异常 未解决 dubbo 打包 使用将所有的文件打在一个包内 会报错误
- Android学习笔记2:Hello World程序解析
- java语言的跨平台型原理
- POJ 1364King (差分约束 + spfa (bellman) 判环)
- 深入Java单例模式
- UML六种关系
- 天梯-排序
- UVA 11475 Extend to Palindrome (kmp || manacher || 后缀数组)