Butterknife 从菜单绑定 SearchView

Butterknife bind SearchView from Menu

在我当前的 Android 项目中,我使用 Butterknife 库来绑定视图并为它们使用 onClick 注释。这一切即使在片段中也能很好地工作,但现在我无法找到解决方案:

我将新的 ToolBar 用作 ActionBar,并在菜单中添加 SearchView。为此 SearchView 我想使用 @OnTextChanged 注释但是当我使用菜单项 ActionView 调用绑定方法时 Butterknife 尝试再次重新实例化所有视图,当然在 ActionView 中找不到 RootLayout 的任何其他视图。

那么有没有一种方法可以只添加一个 ViewButterknife 或者我可以获得一个包含我的 RootLayoutToolBarView 的所有视图的视图所以我可以将此视图传递给绑定方法吗?例如,在 Activites 中,我也可以为菜单 ID 调用 findViewById,但是如果我使用 Fragment 中的 getView(),它就不起作用。有什么想法吗?

我认为这是不可能的,因为 SearchView 是一个菜单项。您在菜单声明中使用的 id 在菜单中标识此视图,不是 activity 的视图,这可能就是 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);
}