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/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
美国再次推迟对华为的禁令,华为硬气回应!:美国再次推迟对华为的禁令,华为硬气回应!
诚聘深圳宝安区亚马逊高级助理:诚聘深圳宝安区亚马逊高级助理
如何增强品牌内容?品牌备案的亚马逊卖家可以使用视频啦!:如何增强品牌内容?品牌备案的亚马逊卖家可以使用视频啦!
没有评论:
发表评论