如何在活动中使用绑定?
由于“对象来源”是Activity而不是View,因此我的应用程序会崩溃并出现类转换异常。
我只有一个想法可以在activity外绑定视图:将myActivity.findViewById(R.id.activity_root_view)作为binder的第二个参数发送(运行良好)。 我认为,这种方法应该可以在没有这个丑陋代码的情况下正常工作。你认为呢?
Butterknife 8.1.0-SNAPSHOT
public class MyViewController extends BaseViewController<MyActivity> {
@BindView(R.id.view_pager)
ViewPager viewPager;
public void bindViews() {
//bind(@NonNull Object target, @NonNull Activity source)
ButterKnife.bind(this, activity);
}
}
看起来不错。但是我的应用程序在生成的代码中崩溃了:
protected InnerUnbinder(final T target, Finder finder, Object source) {
...
target.viewPager = finder.findRequiredViewAsType(source, 2131558529, "field 'viewPager'", ViewPager.class);
...
}
butterknife.internal.Finder.findRequiredViewAsType 是一个方法名。
public final <T> T findRequiredViewAsType(Object source, int id, String who, Class<T> cls) {
View view = findRequiredView(source, id, who);
try {
return cls.cast(view);
} catch (ClassCastException e) {
String name = getResourceEntryName(view, id);
throw new IllegalStateException("View '"
+ name
+ "' with ID "
+ id
+ " for "
+ who
+ " was of the wrong type. See cause for more info.", e);
}
由于“对象来源”是Activity而不是View,因此我的应用程序会崩溃并出现类转换异常。
我只有一个想法可以在activity外绑定视图:将myActivity.findViewById(R.id.activity_root_view)作为binder的第二个参数发送(运行良好)。 我认为,这种方法应该可以在没有这个丑陋代码的情况下正常工作。你认为呢?
Butterknife 8.1.0-SNAPSHOT
viewPager
作为Presenter的一部分?我认为它是View的一部分。 - x0ronCreate
中设置活动内容后立即调用ButterKnife.bind(this);
。 - GabrielOshiro