zoukankan      html  css  js  c++  java
  • 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();
        }
    

    作者:Seachal
    出处:http://www.cnblogs.com/ZhangSeachal
    如果,您认为阅读这篇博客让您有些收获,不妨点击一下左下角的【好文要顶】与【收藏该文】
    如果,您希望更容易地发现我的新博客,不妨点击一下左下角的【关注我】
    如果,您对我的博客内容感兴趣,请继续关注我的后续博客,我是【Seachal】

    我的GitHub       我的CSDN 我的简书

    本博文为学习、笔记之用,以笔记记录作者学习的知识与学习后的思考或感悟。学习过程可能参考各种资料,如觉文中表述过分引用,请务必告知,以便迅速处理。如有错漏,不吝赐教!

  • 相关阅读:
    投简历——个人记录
    光电经纬仪——查资料
    Spring Boot(十三):spring boot小技巧
    Spring Boot(十二):spring boot如何测试打包部署
    Python3 hasattr()、getattr()、setattr()函数简介
    Python3 格式化字符串
    Python3 join函数和os.path.join用法
    Python3 根据m3u8下载视频,批量下载ts文件并且合并
    it commit提示Your branch is up-to-date with 'origin/master'.
    git下,输入git log 进入log 怎么退出
  • 原文地址:https://www.cnblogs.com/Seachal/p/javalangillegalstateexception-bindings-already-cle.html
Copyright © 2011-2022 走看看