butterknife 8.5.1 Fragment中的错误

时间:2017-03-13 11:16:41

标签: android

我在我的片段&中使用了butterknife 8.5.1。应用程序生成错误:java.lang.IllegalStateException:绑定已清除。 下面是我的代码的一部分:

文件名:BaseFragment: ....

 @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    if (mView == null && context != null) {
        mView = inflater.inflate(getLayoutId(), container, false);
        if (savedInstanceState != null) {
            onRestoreInstanceState(savedInstanceState);
        }
        unbinder = ButterKnife.bind(this, mView);
        initParams();
    } else if (mView != null) {
        ViewGroup parent = (ViewGroup) mView.getParent();
        if (parent != null) {
            parent.removeView(mView);
        }
    }
    return mView;
}
@Override
public void onDestroyView() {
    super.onDestroyView();
        unbinder.unbind();


}

... 有没有人遇到过这样的问题和帮助?谢谢!

2 个答案:

答案 0 :(得分:1)

这是因为你的行没有执行:

LocalDateTime

可能是因为您的代码不符合条件:

unbinder = ButterKnife.bind(this, mView);

将它绑在这样的条件之外:

if (mView == null && context != null)

或者你可以检查ButterKnife是否绑定。

答案 1 :(得分:0)

ButterKnife中使用fragment的正确方法:

private Unbinder unbinder;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout
    View view = inflater.inflate(R.layout.content_main, container, false);

    unbinder = ButterKnife.bind(this, view);

    return view;
}

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