我目前正在尝试使用 Android 的 ButterKnife 库来处理一些样板代码(https://github.com/JakeWharton/butterknife)
我已经设置好了,并让它半工作,但我遇到了一个我无法解决的问题:/
我有一个包含 1 个单个 ListView 元素的 Fragment,我在这个 ListView 上附加了一个包含多个元素的页脚视图。
这是我使用该库的片段中的代码片段:
public class UsersFragment extends Fragment {
@InjectView(R.id.users_listview_id) AutoUpdatingListView list;
private View footerView;
@InjectView(R.id.add_user_footer_firstname_edittext_id) BootstrapEditText firstnameEditText;
@InjectView(R.id.add_user_footer_middlename_edittext_id) BootstrapEditText middlenameEditText;
@InjectView(R.id.add_user_footer_lastname_edittext_id) BootstrapEditText lastnameEditText;
@InjectView(R.id.add_user_footer_cancel_button_id) BootstrapButton cancelButton;
@InjectView(R.id.add_user_footer_okay_button_id) BootstrapButton okayButton;
@InjectView(R.id.add_user_footer_facebook_button) BootstrapCircleThumbnail facebookButton;
@InjectView(R.id.add_user_footer_google_plus_button) BootstrapCircleThumbnail googlePlusButton;
@InjectView(R.id.add_user_footer_twitter_button) BootstrapCircleThumbnail twitterButton;
@InjectView(R.id.add_user_footer_linkedin_button) BootstrapCircleThumbnail linkedInButton;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.user_fragment, container, false);
footerView = ((LayoutInflater) getActivity().getSystemService(Activity.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.add_user_footer_view, null, false);
ButterKnife.inject(this, rootView);
list.setAdapter(adapter);
}
}
上面的代码不起作用,因为我只能注入 1 个视图,如果我尝试使用它们(2x 注入),第二个注入会覆盖第一个,留下空值。
我似乎无法使用常规 findViewById() 指定哪个视图包含哪些元素。
澄清一下,这是我的非 ButterKnife 代码(100% 有效):
list = (AutoUpdatingListView) rootView.findViewById(R.id.users_listview_id);
firstnameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_firstname_edittext_id);
middlenameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_middlename_edittext_id);
lastnameEditText = (BootstrapEditText) footerView.findViewById(R.id.add_user_footer_lastname_edittext_id);
正如您在上面看到的,我可以指定“rootView”或“footerView”作为 findViewById 的目标。
任何人都可以帮助解决这个问题?因为它现在让我发疯..