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

这里写图片描述
首先上面的日志报出来 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.IllegalArgumentException: parameter must be a descendant of this view错误原因:发生这个错误主要是ListView或者其它ViewGroup等容器控件因为滑动而暂时移除子View,但却没有移除该子View上面的焦点Focus,所以在ListView滑动返回到原来的位置的时候没有恢复成原来的View,导致 异常出现情况:          mLayoutMap为布局view的集合,如当前view为view1可见visible,正常情况view2、view3、view4...为不可见gone,当点击tab2(让view2显示)时抛出上面的异常。 分析以及解决方案:          parameter must be a descendant of this view言外之意所有view必须嵌套 最近的一系列源码分析,都是基于一个错误,逐步深入源码。都是网上没有源码分析的报错,这个报错也是。 网络上有文章给出了有针对性的解决方案。我通过源码给出更普通的解决思路,这个问题,没有特定的解决方案,所以只能领会精髓后,随机应变。 下面分析是通过一个具体问题,展开源码的分析,所以不必太在意业务场景的相似,重在领会精髓 我的具体场景是,在从某一个界面跳转到登录界面时,点击输入框EditTe... java.lang.IllegalArgumentException: parameter must be a descendant of this view at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5335) at android.view.ViewGroup.offsetDesce bug信息: 10-16 17:27:20.250: D/AndroidRuntime(14662): Shutting down VM 10-16 17:27:20.250: W/dalvikvm(14662): threadid=1: thread exiting with uncaught exception (group=0x40a5e228) 10-16 17:27:20.250: 异常信息 大致的异常信息如下: java.lang.IllegalArgumentException: parameter must be a descendant of this view E/DEBUG: at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:6376) at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGro http://www.cnblogs.com/monodin/p/3675040.html 关于ViewFlow和GridView嵌套导致Parameter must be a descendant ofthis view问题的解决方案 【关于ViewFlow】 ViewFlow是一款基于ViewGroup实现的可以水平滑动的开源UI Widget,可以从htt