2014-10-10 55 views
0

最近我添加了一个搜索片段的工具。某些片段具有ListView,因此当用户键入搜索文本时,ListView会过滤行。 这是用这个tutorial之后的ActionBar完成的。如何仅从ActionBar中搜索几个片段?

我将几个片段的侦听器附加到MainActivity中,因此当用户在屏幕顶部键入文本时,它会筛选片段中的行。但在其他片段中,不需要搜索任何东西,因此应该隐藏放大镜。

然而,一个放大镜绘制在每个屏幕。我也试图在活动没有表现出来,并在片段与此代码只能得出:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.main_invitro, menu); 
    menu.clear(); 
    // Associate searchable configuration with the SearchView 
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName())); 
    searchView.clearFocus(); 

    super.onCreateOptionsMenu(menu,inflater); 
} 

但是放大镜停留在其他碎片,也有可能请在顶部的文本。

是否有正确的方式来显示放大镜只在一些片段?

回答

0

我在另一个论坛有答案。

在MainActivity:

boolean isVisible; 
@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    menu.findItem(R.id.action_search).setVisible(isVisible); 
    return true; 
} 

要更新的动作条应该叫这样:

invalidateOptionsMenu();