2021年1月28日星期四

java.lang.IllegalStateException: Bindings already cleared. 2021-01-28

java.lang.IllegalStateException: Bindings already cleared.

使用 ButterKnife 从 7.x.x 升级到 10.x.x 后,某个 viewPager 中的
的 Fragment 方法报以下错误:

java.lang.IllegalStateException: Bindings already cleared.

查看代码git历史,是从

 ButterKnife.unbind(this);

变为了

 unbinder.unbind();

然后发现,

父类:

@Override public void onDestroyView() {  super.onDestroyView();  unbinder.unbind(); }

子类

 @Override public void onDestroyView() {  super.onDestroyView();  unbinder.unbind(); }

中都调用了 unbinder.unbind();
猜测是因为父类已经执行过unbind()了,子类再去执行unbind()引发的异常。

所以跳进 unbind() 查看源码:

public interface Unbinder { @UiThread void unbind(); Unbinder EMPTY = () -> { };}

选中unbind,然后用快捷键 option+command+B,跳到实现中:

@Override @CallSuper public void unbind() { AbsWebViewActivity target = this.target; if (target == null) throw new IllegalStateException("Bindings already cleared."); this.target = null; target.mWebView = null; target.tvLoadFail = null; target.btnLoadAgain = null; target.llLoadError = null; target.llProgressbar = null; }

果然发现了new IllegalStateException("Bindings already cleared.");

所以子类删除 unbinder.unbind()就可以了,子类修改如下:

 @Override public void onDestroyView() {  super.onDestroyView();  // unbinder.unbind(); }








原文转载:http://www.shaoqun.com/a/519994.html

跨境电商:https://www.ikjzd.com/

谷歌趋势:https://www.ikjzd.com/w/397

笨鸟:https://www.ikjzd.com/w/2713


java.lang.IllegalStateException:Bindingsalreadycleared.使用ButterKnife从7.x.x升级到10.x.x后,某个viewPager中的的Fragment方法报以下错误:java.lang.IllegalStateException:Bindingsalreadycleared.查看代码git历史,是从ButterKnife.unbind
代购公司:代购公司
oklink:oklink
美国再次推迟对华为的禁令,华为硬气回应!:美国再次推迟对华为的禁令,华为硬气回应!
诚聘深圳宝安区亚马逊高级助理:诚聘深圳宝安区亚马逊高级助理
如何增强品牌内容?品牌备案的亚马逊卖家可以使用视频啦!:如何增强品牌内容?品牌备案的亚马逊卖家可以使用视频啦!

没有评论:

发表评论