android - Fragment 内带有工具栏的 SearchView

标签 android android-fragments android-appcompat android-toolbar android-design-library

我在 fragment 内使用SearchViewToolbar,我想注册SearchView.OnQueryTextListener接口(interface),以便我可以在用户时得到回调执行搜索。

我使用 Toolbar 来扩展菜单(在 onCreateView 内):

mToolbar = (Toolbar) v.findViewById(R.id.toolbar);
mToolbar.inflateMenu(R.menu.menu_main);
mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        onOptionsItemSelected(item);
        return false;
    }
});

以这种方式展开菜单不会调用 onCreateOptionMenu 方法,通常我们在该方法中注册回调:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.menu_main, menu);
        mGoTodayMenuItem = menu.findItem(R.id.action_go_to_today);
        mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

        SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
        mSearchView.setQueryHint("Search");
        mSearchView.setSearchableInfo(searchManager
                .getSearchableInfo(getActivity().getComponentName()));
        mSearchView.setOnQueryTextListener(this);
    }

最佳答案

之所以没有调用onCreateOptionsMenu(),是因为您需要在 fragment 的onCreateView()中调用setHasOptionsMenu(true)

<小时/>

您可以从onCreateView()中删除此代码

mToolbar = (Toolbar) v.findViewById(R.id.toolbar);
mToolbar.inflateMenu(R.menu.menu_main);
mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
    @Override
    public boolean onMenuItemClick(MenuItem item) {
        onOptionsItemSelected(item);
        return false;
    }
});

做完这一切之后。您可以轻松地使用搜索 View 的 onCreateOptionMenu() 实现。

希望有帮助。 干杯!

关于android - Fragment 内带有工具栏的 SearchView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31851982/

相关文章:

android - 如何查看flutter app的混淆结果?

java - 使用 Picasso Library 目标不能为空

android - ScrollView 内的 ViewPager 不工作

android - 打开抽屉导航时,工具栏按钮不响应触摸

android - 如何为 Spinner 的下拉菜单设置不同的主题?

android - ActionBarCompat 显示溢出菜单中的每个操作

android - Android 中的十六进制颜色有时是八位数字。如何? #FFFFFF 和 #FFFFFF00 有什么区别?

android - 为什么 Android 通知的 LED 设置不起作用

android导航组件向上按钮,箭头显示但popTo不起作用

android - DialogFragment 内的 fragment ,空白屏幕