我在其 Xml 布局文件中有一个带有自定义视图的 Activity:
<com.example.androidmontreal.mvp.infrastructure.views.AndroidRaceResultsView
android:id="@+id/raceResults"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
...
在此活动的 onCreate 方法中,我使用 Butterknife 注入我的视图:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mvp_main);
ButterKnife.inject(this);
...
}
在我的自定义视图中,我有一个列表视图。在添加 Butterknife 之前,我曾经在onFinishInflate
方法中为 listview 设置适配器:
@Override
protected void onFinishInflate() {
super.onFinishInflate();
...
listView.setAdapter(resultsAdapter);
}
然而,自从添加 Butterknife 后,我在设置适配器的行上得到了一个 NPE,因为在那个阶段 listview 是 Null。
我的理解是,视图只有Butterknife.inject()
在调用 Activity 中的方法时才会实例化,但这是在视图膨胀之后发生的。我不知道什么时候应该为listView设置适配器。
编辑:我的自定义视图上的子视图似乎为空,即使在utterknife.inject()
活动上被调用也是如此。Butterknife.inject
但是,如果我向我的方法添加调用onFinishInflate
,我会收到一条错误消息java.lang.IllegalStateException: Required view with id '2131034112' for field 'listView' was not found