【问题标题】:How to search only in several fragments from ActionBar?如何仅在 ActionBar 的几个片段中搜索?
【发布时间】:2014-12-05 10:25:55
【问题描述】:

最近我添加了一个用于在片段内部搜索的工具。一些片段具有 ListView,因此当用户键入搜索文本时,ListView 会过滤行。 这是在 tutorial 之后使用 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);
}

但放大镜停留在其他片段中,也可以在顶部键入文本。

是否有正确的方法仅在某些片段中显示放大镜?

【问题讨论】:

    标签: android android-fragments android-actionbar


    【解决方案1】:

    我在另一个论坛上得到了答案。

    在 MainActivity 中:

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

    要更新 ActionBar,应该这样调用它:

    invalidateOptionsMenu();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 2020-01-23
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多