业务场景:常规app开发 页面切换框。底下4个选项卡。切换 上面4个不同页面的切换。业务逻辑不再赘述。

我在BaseFragment里面使用了注解框架ButterKnife注册,代码如下:

onDestroyView() 里面进行解绑

以当前 方式 注册Fragment。

好多朋友肯定遇到了 多切换几次选项卡 出现了 崩溃现象:

java.lang.IllegalStateException: Bindings already cleared.

解决办法:

方案1:网上有大部分  相关介绍 是 butterknife 注册时机不对。。他们推荐把 注册时机修改为 if语句外面。

修改后代码为:

大家和 一开始对比一下。。发现 原来是在   if    语句里面,现在给拿出来了。。

这种方式解决了问题。我个人并不推荐这。我们需要找一下原因。为啥出现了这个问题。

方案二:出现这种问题 百分之99是因为 你想 组件 添加Fragment时候 用的 是   replace()方法,这种方法在每次切换添加的时候都会把上一个Fragment销毁掉。你可以打印一下每个Fragment的 onDestroyView()  方法就可以查看了。既然是这个方法的毛病。那么我们就选用另外一个方法 。。add()方法 。。然后 每次切换选项卡的时候 控制 Fragment的显示与隐藏就好了。下面我贴一下主要解决方法的代码。

List<String>tags=new ArrayList<>();//用来标志每个fragment的tag.避免 出现重复
List<BaseFragment>datalist=new ArrayList<>();//用来记录添加的Fragment
public void setFragmeng() {tags.clear();datalist.clear();tags.add("个人");tags.add("活动");tags.add("机构");tags.add("问答");fragmentManager=this.getSupportFragmentManager();//第一个FramgnetBaseFragment baseFragment1 = (BaseFragment) fragmentManager.findFragmentByTag(tags.get(0));if(baseFragment1 == null){baseFragment1 =new MyFragment();datalist.add(baseFragment1);}else{datalist.add(baseFragment1);}//第二个FramgnetBaseFragment baseFragment2 = (BaseFragment) fragmentManager.findFragmentByTag(tags.get(1));if(baseFragment2 == null){baseFragment2 =new MyFragment();datalist.add(baseFragment2);}else{datalist.add(baseFragment2);}//第三个FramgnetBaseFragment baseFragment3 = (BaseFragment) fragmentManager.findFragmentByTag(tags.get(2));if(baseFragment3 == null){baseFragment3 =new MyFragment();datalist.add(baseFragment3);}else{datalist.add(baseFragment3);}//第四个FramgnetBaseFragment baseFragment4 = (BaseFragment) fragmentManager.findFragmentByTag(tags.get(3));if(baseFragment4 == null){baseFragment4 =new MyFragment();datalist.add(baseFragment4);}else{datalist.add(baseFragment4);}FragmentTransaction ft=getSupportFragmentManager().beginTransaction();//把上面所有需要的Fragment添加进去for(int i=0;i<datalist.size();i++){ft.add( R.id.main_tab_content,datalist.get(i),tags.get(i));}ft.commit();setOnFragmentChanged(0);
}
 //选中的Fragement显示。其它的隐藏
public void setOnFragmentChanged(int index){FragmentTransaction ft = fragmentManager.beginTransaction()for(int i=0;i<datalist.size();i++){if(i==index){//选中的Fragement显示。其它的隐藏ft.show(datalist.get(i));datalist.get(i).onResume();}else{ft.hide(datalist.get(i));datalist.get(i).onPause();}}ft.commit();}

以上几个主要方法添加进去就可以看出效果了。

ButterKnife与Fragment的爱恨情仇(java.lang.IllegalStateException: Bindings already cleared.)相关推荐

  1. java.lang.IllegalStateException: Bindings already cleared.

    简单介绍:用viewpager 里面有3个fragment.相互切换的时候报错(viewpager有回收fragment的机制)在第一次(第一次回收fragment正常)unbind的时候没有报错,第 ...

  2. 深入Java虚拟机之 --- JVM的爱恨情仇

    (本文参考深入理解JAVA虚拟机第二版第2章) 系列文章: 深入Java虚拟机之 - JVM的爱恨情仇 JAVA 垃圾回收机制(一) - 对象回收与算法初识 JAVA 垃圾回收机制(二) - GC回收 ...

  3. 深度解析单例与序列化之间的爱恨情仇

    转载自 深度解析单例与序列化之间的爱恨情仇 本文将通过实例+阅读Java源码的方式介绍序列化是如何破坏单例模式的,以及如何避免序列化对单例的破坏. 单例模式,是设计模式中最简单的一种.通过单例模式可以 ...

  4. 同步通信和异步通信的爱恨情仇

    前言 一开始在学习JMS的时候,心中一直有一个疑惑,由于那时候对JMS的了解还不够深入,我当时很不理解传统的RPC远程过程调用和java消息服务有什么区别,他们两不都是在两个不同的分布式或者集群系统传 ...

  5. Maven的爱恨情仇

    前言 在如今的互联网项目开发当中,特别是Java开发中,可以说Maven是随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven ...

  6. 初学者对C语言中指针的爱恨情仇

    C语言中指针和数组的爱恨情仇 文章目录 C语言中指针和数组的爱恨情仇 一.前言 二.为什么学指针 三.说明 四.跟我一起学 (一)C语言中的*和& 1.C语言中为什么存在&和* 2.& ...

  7. Spring发展史! 和那些巨头的爱恨情仇!

    ** 码农的春天----------Spring来了 关于Spring的发展起源要回溯到2002年,当时正是Java EE和EJB大行其道的时候,很多知名公司都是采用此技术方案进行项目开发.这时候有一 ...

  8. 产品经理和程序员的爱恨情仇

    产品经理跪求程序员,程序员跪求程序成功上线! 前几天纯银V在微博上发了一条微博「很多人吐槽"人人都是产品经理"这句话,其实在我看来,这句话的正确理解是"人人都应该学习产品 ...

  9. mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇

    毫不夸张的说,有一半以上的死锁问题由唯一索引贡献,后面介绍的很多死锁的问题都跟唯一索引有关.这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇 我们来看一个简化过的例子 # 构造数据 CREATE T ...

最新文章

  1. postman 接口 403 forbidden_接口测试怎么做?
  2. linux chroot 命令 设置根目录路径
  3. 计算机视觉与深度学习 | 基于MATLAB的Vibe算法消除鬼影(代码版)
  4. Serverless 工程实践 | 快速搭建 Kubeless 平台
  5. 我的20天项目经历--至今令我难忘的技术难题
  6. 这怕是我看过的最好的关于 “ 拜占庭将军问题 ” 的文章
  7. c语言缓冲池管理算法,操作系统复习资料
  8. kubernetes管理mysql_kubernetes云平台管理实战:tomcat + mysql(十二)
  9. 优秀的弹窗插件 jquery.lightbox_me.js
  10. 容器与拷贝构造函数的问题
  11. 难以置信:产品图标是黑色背景
  12. Debian回收站无法删除解决
  13. 大连超级计算机,ASC19世界大学生超级计算机竞赛在我校圆满落幕
  14. android版本下载京东,手机京东历史版本
  15. 论文--Learning to Predict Bus Arrival Time From Heterogeneous Measurements via Recurrent Neural Networ
  16. Pisces的属性配置文件加载
  17. 信息系统开发与管理第一遍总结
  18. 多因子模型matlab,【干货】不可不知的N种量化策略模型——量化因子
  19. CTF比赛解析备课与教学:漏洞扫描
  20. c语言魔方阵难不难,C语言魔方阵问题

热门文章

  1. 平安金融云为互联网金融行业注入发展新动能
  2. DELL IDRAC
  3. win10 创建访客_建立一个访客会很喜欢的网站
  4. 用vim编辑器在行首添加行号、序列号
  5. Building Maintainable Software-java篇之Couple Architecture Components Loosely
  6. 阿德莱德计算机专业本科,阿德莱德大学计算机科学专业详细解读 成为IT大神就靠它...
  7. TP9343系列路由器TL-WR886N刷OpenWRT(明月大神编译)
  8. python中以只读形式打开文件的模式是_详解python中各种文件打开模式
  9. Java-求数字n的所有约数
  10. 统计每个部门下男、女人数;统计所有部门中全是男生、全是女生、即有男生又有女生个数