在我目前的Android项目中,我使用Butterknife
库绑定视图并为其使用onClick
注释。这一切在片段中都很有效,但现在我无法找到解决方案:
我使用新的ToolBar
作为ActionBar
,并在菜单中加注SearchView
。对于此SearchView
,我想使用@OnTextChanged
注释,但当我使用菜单项ActionView
的{{1}}调用bind方法时,尝试再次重新注册所有视图,当然在Butterknife
中找不到ActionView
的任何其他观点。
那么有没有办法只用RootLayout
添加一个View
,或者我可以获得包含Butterknife
和RootLayout
中所有观看次数的视图,这样我就可以将此视图传递给bind方法?例如,在Activites中,我也可以调用ToolBarView
来获取菜单ID,但如果我使用片段中的findViewById
则无效。有什么想法?
答案 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);
}