我在我的片段&中使用了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();
}
... 有没有人遇到过这样的问题和帮助?谢谢!
答案 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();
}