2014-10-10 51 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();