解决方案:java.lang.IllegalArgumentException: The observer is null

来源:互联网 发布:淘宝评价无法上传照片 编辑:程序博客网 时间:2024/06/06 03:34

出现这个问题的原因很多,这里主要针对个人遇到的问题进行整理,今后如发现更多遭遇会继续补充。

这里写图片描述
首先上面的日志报出来 The Observer is null 这尼玛什么问题。我们看到异常的第三行,
显示
BaseAdapter.unregisterDataSetObserver这个方法,但是看了下代码,我使用的是RecycleView跟BaseAdapter有什么关系。于是乎我百度了一下,发现百度给的方法是:

        @Override        public void unregisterDataSetObserver(DataSetObserver observer) {            if (observer != null) {                super.unregisterDataSetObserver(observer);            }        }

在adapter中去覆盖这个方法,并做一个入参判空的操作,我按照网上的去试了试,运行程序还是崩溃。还是报这个问题。
找了很多地方都没发现什么特别的,看了下项目中其他用RecycleView的地方也没报错啊。
最后找了很久发现,原来我的RecycleView中嵌套了GrideView

注意:调用onDetachedFromWindow();会把observer设置成null所以当第二次重用的时候在remove view时就会再次的调用onDetachedFromWindow();就会出现上边的那个错误;

所以我在GrideView中重写了下面这个方法并判空,问题就修复了。

        @Override        public void unregisterDataSetObserver(DataSetObserver observer) {            if (observer != null) {                super.unregisterDataSetObserver(observer);            }        }

特写此博客记录踩过的坑。

阅读全文
1 0
原创粉丝点击