Butterknife 从菜单绑定 SearchView
Butterknife bind SearchView from Menu
在我当前的 Android 项目中,我使用 Butterknife
库来绑定视图并为它们使用 onClick
注释。这一切即使在片段中也能很好地工作,但现在我无法找到解决方案:
我将新的 ToolBar
用作 ActionBar
,并在菜单中添加 SearchView
。为此 SearchView
我想使用 @OnTextChanged
注释但是当我使用菜单项 ActionView
调用绑定方法时 Butterknife
尝试再次重新实例化所有视图,当然在 ActionView
中找不到 RootLayout
的任何其他视图。
那么有没有一种方法可以只添加一个 View
和 Butterknife
或者我可以获得一个包含我的 RootLayout
和 ToolBarView
的所有视图的视图所以我可以将此视图传递给绑定方法吗?例如,在 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);
}
在我当前的 Android 项目中,我使用 Butterknife
库来绑定视图并为它们使用 onClick
注释。这一切即使在片段中也能很好地工作,但现在我无法找到解决方案:
我将新的 ToolBar
用作 ActionBar
,并在菜单中添加 SearchView
。为此 SearchView
我想使用 @OnTextChanged
注释但是当我使用菜单项 ActionView
调用绑定方法时 Butterknife
尝试再次重新实例化所有视图,当然在 ActionView
中找不到 RootLayout
的任何其他视图。
那么有没有一种方法可以只添加一个 View
和 Butterknife
或者我可以获得一个包含我的 RootLayout
和 ToolBarView
的所有视图的视图所以我可以将此视图传递给绑定方法吗?例如,在 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);
}