java.lang.IllegalArgumentException: The observer is null.异常解决方案
来源:互联网 发布:中美网络马云百度 编辑:程序博客网 时间:2024/05/18 03:14
今天在调用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(),或者别的什么销毁方法。
没试验不知道效果如何仅供参考。
- java.lang.IllegalArgumentException: The observer is null.异常解决方案
- java.lang.IllegalArgumentException: The observer is null.最终解决方案
- 安卓java.lang.IllegalArgumentException: The observer is null.解决方案
- 解决方案:java.lang.IllegalArgumentException: The observer is null
- android java.lang.IllegalArgumentException: The observer is null 异常解决
- java.lang.IllegalArgumentException: The observer is null.异常解决
- java.lang.IllegalArgumentException: The observer is null.
- java.lang.IllegalArgumentException: The observer is null.
- viewpager java.lang.IllegalArgumentException:The observer is null
- Android使用ViewPager导致java.lang.IllegalArgumentException: The observer is null.
- android退出一个含有listview的activity时报java.lang.IllegalArgumentException: The observer is null.
- IllegalArgumentException:The observer is null的解决方法
- 异常java.lang.IllegalArgumentException: null
- java.lang.IllegalArgumentException: host parameter is null
- java.lang.IllegalArgumentException: host parameter is null
- java.lang.IllegalArgumentException: host parameter is null
- java.lang.IllegalArgumentException: the bind value at index 1 is null or java.lang.IllegalArgumen
- 问题:java.lang.IllegalArgumentException:the bind value at index is null
- 友元函数 友元类
- 观察者模式
- SQL语句快速介绍
- 如果类是个泛型类的话dllImport 代码不能编译
- s3c2410触摸屏驱动(2.6内核)分析
- java.lang.IllegalArgumentException: The observer is null.异常解决方案
- Jquery 给列表框select赋值和获选中值
- WCF 入门
- 字符串的操作方法
- matlab基础之128点fft分析数据,各个数据的频谱整体分析
- C#如何用Graphics画出一幅图表
- 输入子系统--event层分析(以GPIO_Keys为例)
- 12864
- Javascript为元素动态的添加事件包括两种情况: