[BUG记录]java.lang.IllegalArgumentException: The observer is null.异常解决方案
今天在调用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.异常解决方案相关推荐
- android java.lang.IllegalArgumentException: The observer is null.异常解决
android java.lang.IllegalArgumentException: The observer is null.异常解决 参考文章: (1)android java.lang.Ill ...
- 启动nacos-server报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
问题描述 运行nacos文件的startup.cmd启动nacos-server时报错:java.io.IOException: java.lang.IllegalArgumentException: ...
- 1.权限认证java.lang.IllegalArgumentException: Cannot pass a null GrantedAuthority collection
1.权限认证org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring ...
- 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)
处理一个老项目,DOWN下项目并配好之后,启动没问题,但是登陆之后首页显示如下: 控制台报错如下: 严重: Servlet.service() for servlet jsp threw except ...
- 【Android】java.lang.IllegalArgumentException Illegal character in scheme 异常
在使用字符串拼接成url地址进行数据请求的时候,有时在数据请求的时候会出现 java.lang.IllegalArgumentException: Illegal character in schem ...
- java.lang.IllegalArgumentException: Could not find class异常解决方式
进行项目的搭建的时候出现Could not find class [org.springframework.cloud.client.discovery.composite.reactive.Reac ...
- java.lang.IllegalArgumentException: Request header is too large 解决方案
ava.lang.IllegalArgumentException: Request header is too large 问题分析: 请求头超过了tomcat的限值.本来post请求是没有参数大小 ...
- java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException 异常解决方案
在SpringMVC中使用Jackson实现json输出时配置如下: <!-- 输出对象转JSON支持 --> <bean id="stringConverter" ...
- 【已解决】Nacos启动报错:java.io.IOException: java.lang.IllegalArgumentException: db.num is null
报错如图: 发现是单机模式指令错误 正确指令: 单机模式 启动 window版本 startup.cmd -m standalone
- java8中使用java.util.Base64报“java.lang.IllegalArgumentException: Illegal base64 character d”
概述 Base64是一种字符串编码格式,采用了A-Z,a-z,0-9,"+"和"/"这64个字符来编码原始字符(还有垫字符"=").一个字符 ...
最新文章
- 跨域策略文件crossdomain.xml文件
- 教程-MessageBox 使用方法
- Flask-Migrate
- 【opencv】10.播放视频 以及 设置任意键为暂停键
- 基础: 一、Android环境搭建
- Qt for Python Mac下使用 fbs 打包软件
- linux查看和修改PATH环境变量的方法
- ZZULIOJ 1109: 数根(函数专题)
- 西瓜书+实战+吴恩达机器学习(五)监督学习之线性判别分析 Linear Discriminant Analysis
- 2017百度之星资格赛:1002. 度度熊的王国战略
- ASM:《X86汇编语言-从实模式到保护模式》第8章:实模式下硬盘的访问,程序重定位和加载...
- HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
- protues仿真控制舵机
- java零基础自学教程视频,详细说明
- 什么是 Uptime TIER 数据中心等级认证体系?-孙长青
- 微信公众号文章采集方案
- r7 6700g核显相当于什么显卡 锐龙r76700g性能怎么样
- 建站过程中,网站优化的雷区
- 快速排序详细图解分析(含代码示例)
- 用 Swift、Foursquare API 和 Realm 創建一個咖啡屋 App
热门文章
- 【UVA221】Urban Elevations(建筑物可视问题-数学题)
- 房子买贵了?房价收入比(house-price‑to‑income ratios)指标揭秘真相
- java token 超时_前后端分离——token超时刷新策略
- siteservercms 缺点_SiteServer CMS 术语大全
- 机器学习- 吴恩达Andrew Ng 编程作业技巧
- 易筋SpringBoot 2.1 | 第廿三篇:SpringBoot之Docker入门
- PHP给下载链接添加内容信息,PHP自动给文章内容添加关联链接方法和示例
- java lambda有必要_深度分析:java8的新特性lambda和stream流,看完你学会了吗?
- get函数与getline函数
- JDBC-通过Driver接口获取数据库连接