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

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

解决方案:java.lang.IllegalArgumentException: The observer is null_第1张图片
首先上面的日志报出来 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);
            }
        }

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

你可能感兴趣的:(踩过的坑)