如何重置搜索Widget(SearchView)值?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

我有两个活动:第一个,HomepageActiviy有一个搜索小部件,使用其他活动搜索数据SearchActivity

我想要做的是,当我回到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();
    }
}

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

谢谢你的帮助!;)

提问于
用户回答回答于

searchView.setQuery( “”,假); //清除文字

searchView.setIconified(真); //关闭搜索编辑器并再次搜索图标

HomepageActivity插入的OnCreate函数后功能的onSaveInstanceState

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

  protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
         searchView.setQuery("", false);
        searchView.setIconified(true);
    }
用户回答回答于

你还可以尝试以下方法:

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

扫码关注云+社区