今天在调用LinearLayout的removeAll方法时出现一个奇怪的bug,

java.lang.IllegalArgumentException: The observer is null.

android2.3正常,而android4.0出现。

后来经过研究发现是因为4.0系统android.widget.AbsListView.onDetachedFromWindow第一次调用的时候会把observer设置为null,

onDetachedFromWindow方法的作用是当view离开窗口时调用,而我在每次view离开窗口并没有销毁,因为后面要用到,所以

当第二次重用view的时候在remove view时就会再次的调用onDetachedFromWindow,所以就会出现这样的错误,具体可以查看

4.0和2.3的源码onDetachedFromWindow方法源码。

1.因为我是做一个类似5个底部导航键的东西,所以我是这么解决的,不调用removeview了,直接把view的引用缓存起来,然后设置为gone.再想

展示的时候直接设置成visiable。

代码是

点击选项卡后 传一个参数  t  为要启动的界面号

View currentView = getLocalActivityManager().startActivity(t + "", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))     .getDecorView();    //展示控制:遍历list中的view,与当前view不同则设置为不显示,否则显示    for(int i =0;i<viewList.size();i++){     if(null!=viewList.get(i)&&!viewList.get(i).equals(currentView)){      viewList.get(i).setVisibility(View.GONE);     }else if(null!=viewList.get(i)&&viewList.get(i).equals(currentView)){      viewList.get(i).setVisibility(View.VISIBLE);     }    } //   mActivityContainer.removeAllViews();    //存储控制:list中存储的对应位置的view和当前view不同时进行存储    if(null==viewList.get(t)||!viewList.get(t).equals(currentView)){     mActivityContainer.addView(currentView);     viewList.add(t,currentView);    }

曲线救国吧 嘿嘿。

2.也参考了别人的代码

如果你的viewgroup有adapter,那就简单了,在adapter中重写 @Override public void unregisterDataSetObserver(DataSetObserver observer) {      if (observer != null) {          super.unregisterDataSetObserver(observer);      } }

直接就可以了

3.或者我猜测还有一种解决方法,在每次view离开窗口时销毁。 大概是view.destroyDrawingCache(),或者别的什么销毁方法。 没试验不知道效果如何仅供参考。

转载于:https://www.cnblogs.com/hpboy/archive/2013/04/20/3031989.html

[BUG记录]java.lang.IllegalArgumentException: The observer is null.异常解决方案相关推荐

  1. android java.lang.IllegalArgumentException: The observer is null.异常解决

    android java.lang.IllegalArgumentException: The observer is null.异常解决 参考文章: (1)android java.lang.Ill ...

  2. 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null

    问题描述 运行nacos文件的startup.cmd启动nacos-server时报错:java.io.IOException: java.lang.IllegalArgumentException: ...

  3. 1.权限认证java.lang.IllegalArgumentException: Cannot pass a null GrantedAuthority collection

    1.权限认证org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring ...

  4. 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)

    处理一个老项目,DOWN下项目并配好之后,启动没问题,但是登陆之后首页显示如下: 控制台报错如下: 严重: Servlet.service() for servlet jsp threw except ...

  5. 【Android】java.lang.IllegalArgumentException Illegal character in scheme 异常

    在使用字符串拼接成url地址进行数据请求的时候,有时在数据请求的时候会出现 java.lang.IllegalArgumentException: Illegal character in schem ...

  6. java.lang.IllegalArgumentException: Could not find class异常解决方式

    进行项目的搭建的时候出现Could not find class [org.springframework.cloud.client.discovery.composite.reactive.Reac ...

  7. java.lang.IllegalArgumentException: Request header is too large 解决方案

    ava.lang.IllegalArgumentException: Request header is too large 问题分析: 请求头超过了tomcat的限值.本来post请求是没有参数大小 ...

  8. java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException 异常解决方案

    在SpringMVC中使用Jackson实现json输出时配置如下: <!-- 输出对象转JSON支持 --> <bean id="stringConverter" ...

  9. 【已解决】Nacos启动报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null

    报错如图: 发现是单机模式指令错误 正确指令: 单机模式 启动 window版本 startup.cmd -m standalone

  10. java8中使用java.util.Base64报“java.lang.IllegalArgumentException: Illegal base64 character d”

    概述 Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,"+"和"/"这64个字符来编码原始字符(还有垫字符"=").一个字符 ...

最新文章

  1. 跨域策略文件crossdomain.xml文件
  2. 教程-MessageBox 使用方法
  3. Flask-Migrate
  4. 【opencv】10.播放视频 以及 设置任意键为暂停键
  5. 基础: 一、Android环境搭建
  6. Qt for Python Mac下使用 fbs 打包软件
  7. linux查看和修改PATH环境变量的方法
  8. ZZULIOJ 1109: 数根(函数专题)
  9. 西瓜书+实战+吴恩达机器学习(五)监督学习之线性判别分析 Linear Discriminant Analysis
  10. 2017百度之星资格赛:1002. 度度熊的王国战略
  11. ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载...
  12. HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  13. protues仿真控制舵机
  14. java零基础自学教程视频,详细说明
  15. 什么是 Uptime TIER 数据中心等级认证体系?-孙长青
  16. 微信公众号文章采集方案
  17. r7 6700g核显相当于什么显卡 锐龙r76700g性能怎么样
  18. 建站过程中,网站优化的雷区
  19. 快速排序详细图解分析(含代码示例)
  20. 用 Swift、Foursquare API 和 Realm 創建一個咖啡屋 App

热门文章

  1. 【UVA221】Urban Elevations(建筑物可视问题-数学题)
  2. 房子买贵了?房价收入比(house-price‑to‑income ratios)指标揭秘真相
  3. java token 超时_前后端分离——token超时刷新策略
  4. siteservercms 缺点_SiteServer CMS 术语大全
  5. 机器学习- 吴恩达Andrew Ng 编程作业技巧
  6. 易筋SpringBoot 2.1 | 第廿三篇:SpringBoot之Docker入门
  7. PHP给下载链接添加内容信息,PHP自动给文章内容添加关联链接方法和示例
  8. java lambda有必要_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
  9. get函数与getline函数
  10. JDBC-通过Driver接口获取数据库连接