Butterknife从菜单中绑定SearchView

时间:2015-09-21 21:30:13

标签: android butterknife

在我目前的Android项目中,我使用Butterknife库绑定视图并为其使用onClick注释。这一切在片段中都很有效,但现在我无法找到解决方案:

我使用新的ToolBar作为ActionBar,并在菜单中加注SearchView。对于此SearchView,我想使用@OnTextChanged注释,但当我使用菜单项ActionView的{​​{1}}调用bind方法时,尝试再次重新注册所有视图,当然在Butterknife中找不到ActionView的任何其他观点。

那么有没有办法只用RootLayout添加一个View,或者我可以获得包含ButterknifeRootLayout中所有观看次数的视图,这样我就可以将此视图传递给bind方法?例如,在Activites中,我也可以调用ToolBarView来获取菜单ID,但如果我使用片段中的findViewById则无效。有什么想法?

1 个答案:

答案 0 :(得分:8)

我认为这是不可能的,因为SearchView是一个菜单项。你在菜单声明中使用的id在菜单中标识了这个视图,而不是活动的视图,这可能就是为什么Butterknife无法绑定它。

我担心你必须这样做:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    inflater.inflate(R.menu.bookings_list_menu, menu);
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

    searchView.setOnSearchClickListener(...);
    searchView.setOnCloseListener(...);
    searchView.setOnQueryTextListener(...);

    super.onCreateOptionsMenu(menu, inflater);
}