我已阅读Some issues on github,但仍未找到解决方案。
我的问题是我无法在从BaseActivty
我的BaseActivity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewGroup rootView = (ViewGroup) this.findViewById(android.R.id.content);
View rootBaseView = getLayoutInflater().inflate(R.layout.activity_base, rootView, false);
ButterKnife.bind(this, rootBaseView);
....
int childLayoutID = getLayoutResId();
if (childLayoutID != LayoutConstants.NULL_LAYOUT_ID) {
View childRootView = getLayoutInflater().inflate(childLayoutID, mLinearLayoutFrameContainer, false);
mLinearLayoutFrameContainer.addView(childRootView);
}
....
setContentView(rootBaseView);
所以,我有抽象方法
public abstract
@LayoutRes
int getLayoutResId();
在任何子活动中,我都会返回特定的布局资源。
BaseActivity
中的所有视图都被正确注入,但在任何子活动视图中,即使使用@Nullable
注释也无法注入,视图在运行时为空。
我该如何解决这个问题。也许有一些解决方法?
附加信息
我尝试过不同的方法,比如
ButterKnife.bind(this);
ButterKnife.bind(this,mLinearLayoutFrameContainer);
onCreate
方法中的儿童活动。
但仍然相同
但是对于片段我有相同的情况并且有效。
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
Log.e("FRAGMENT", "ON VIEW CREATED " + getClass().getCanonicalName());
在任何子片段中,我根本不会调用ButterKnife
注入方法,仅注释注释的字段,当然我仅在onViewCreated
调用后super
开始使用视图。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setupViews();