12

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

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

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

4

1 回答 1

9

我认为这是不可能的,因为 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);
}
于 2016-08-10T14:33:14.627 回答