美文网首页
解决方案:java.lang.IllegalArgumentEx

解决方案:java.lang.IllegalArgumentEx

作者: Vva的猫 | 来源:发表于2019-09-27 21:50 被阅读0次

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

    这里写图片描述

    首先上面的日志报出来 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);
                }
            }
    

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

    相关文章

      网友评论

          本文标题:解决方案:java.lang.IllegalArgumentEx

          本文链接:https://www.haomeiwen.com/subject/vzjayctx.html