重置搜索微件(搜索视图)值

2022-09-01 07:04:38

我有2个活动:第一个,有一个搜索小部件,使用另一个活动搜索数据,.HomepageActiviySearchActivity

我想做的是当我从 返回时,搜索小部件折叠并带有空文本。SearchActiviyHomepageActivity

我试图做以下事情:

public class HomepageActivity extends Activity {
    @TargetApi(11)
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.projectslist, menu);

        if(Build.VERSION.SDK_INT >= 11) {
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.homepage_search).getActionView();
            ComponentName component = new ComponentName(this, SearchActivity.class);
            searchView.setSearchableInfo(searchManager.getSearchableInfo(component));
            searchView.setIconifiedByDefault(true);
            searchView.setQuery("", false);

        }

        return super.onCreateOptionsMenu(menu);
    }

    […]

    @TargetApi(11)
    @Override
    protected void onRestart() {
        super.onRestart();
        if(Build.VERSION.SDK_INT >= 11)
            invalidateOptionsMenu();
        launchAsynchronousImageDownload();
    }
}

如果小部件很好地显示为折叠,则小部件中的文本仍会记住搜索的文本(在我重新打开小部件后)。如何重置小部件的文本?

感谢您的任何帮助!;)


答案 1

您也可以尝试以下操作:

searchView.setQuery("", false);
searchView.clearFocus();

答案 2

这就是魔术

searchView.setQuery("", false); 清除文本

searchView.setIconified(true); 关闭搜索编辑器并再次制作搜索图标

主页中活动在 oncreate 函数之后插入 onSaveInstanceState 函数

每次打开新活动时,都会触发此函数,在打开新活动之前,它将重置搜索小部件的值

  protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
         searchView.setQuery("", false);
        searchView.setIconified(true);
    }

推荐