如何让我的可搜索 activity 在我的搜索栏小部件被单击时启动,而不是在我按 enter 时启动?

How can I get my searchable activity to launch when my search bar widget is clicked, not when I press enter?

我在地图视图顶部有一个搜索栏小部件,我想要的是当我单击该小部件时,地图视图被列表视图替换,列表视图在我输入查询时动态更改显示的项目并保留顶部的搜索栏小部件。然后,当我按搜索栏小部件上的后退箭头时,我 return 到地图视图。到目前为止,我已经按照教程实现了搜索栏,当我按下回车键时,它会启动另一个包含我的列表视图的 activity,但这不是我想要的,因为搜索栏小部件消失了。

我的问题是,有没有办法使用搜索栏小部件来完成此操作,或者我应该只实现一个编辑文本并在单击编辑文本时更改片段?

我遇到了同样的问题,我的实现方式是在 Activity 1 中有一个普通的搜索菜单图标,单击它会打开另一个 ListViewActivity。

SearchManager searchManager =
            (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    final MenuItem searchItem = menu.findItem(R.id.search);
    final SearchView searchView =
            (SearchView) searchItem.getActionView();
    searchView.setSearchableInfo(
            searchManager.getSearchableInfo(getComponentName()));

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            // Some code here
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            // Some code here
            return false;
        }
    });

    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            // Some code here
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            // Some code here
            return true;
        }
    });

    // Get the search close button
    ImageView closeButton = (ImageView) searchView.findViewById(R.id.search_close_btn);
    closeButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Some code here

            EditText et = (EditText) findViewById(R.id.search_src_text);
        }
    });

您可以覆盖 searchView 本身内的 textview,这样您就不必实现自定义 edittext 以及关闭和返回按钮