Android 带继承问题的ButterKnife绑定视图
我已经读过了,但仍然没有找到解决办法 我的问题是无法在继承自Android 带继承问题的ButterKnife绑定视图,android,view,dependency-injection,butterknife,Android,View,Dependency Injection,Butterknife,我已经读过了,但仍然没有找到解决办法 我的问题是无法在继承自baseactivity myBaseActivity中的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ViewGroup rootView = (ViewGroup) this.findViewById(android.R.id.conte
baseactivity
myBaseActivity中的代码
@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
注释也无法插入,视图在运行时为null
我怎样才能解决这个问题。也许有一些解决办法
其他信息
我试过不同的方法,比如
ButterKnife.bind(this);
ButterKnife.bind(this,mLinearLayoutFrameContainer);
在onCreate
方法中的子活动中
但还是一样
但对于fragment,我也有同样的情况,它是有效的
@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
inject方法,字段只是注释,当然,我只在onViewCreated
调用super
之后开始使用视图
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setupViews();
我认为Jake在他对你的bug报告的评论中解释了这个问题:你不能两次注入同一个对象——这就是为什么它在另一个对象的额外片段上工作,而不是在同一个活动上。使用baseactivity概念,你无法实现它。您可以查看此-&谢谢您的帮助。请有人在低层次上解释一下,为什么这是不可能的,我认为这将是有益的信息和对许多开发人员和职位是这个问题的答案。(不幸的是,我没有足够的时间深入实施)我面临着同样的问题。有没有可能解决了?