• 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 我的简书

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

  • 相关阅读:
    组合数学总结
    字符串算法总结
    数据结构总结
    CDQ分治(学习笔记)
    网络流(学习笔记)
    string
    water
    mine
    洛谷 P4035 【球形空间产生器】
    洛谷 P3306 【随机数生成器】
  • 原文地址:https://www.cnblogs.com/Seachal/p/javalangillegalstateexception-bindings-already-cle.html
Copyright © 2020-2023  润新知