我有两个活动:第一个是HomepageActiviy
,它有一个使用另一个活动SearchActivity
搜索数据的搜索小部件。
我想要做的是,当我从SearchActiviy
返回到HomepageActivity
时,搜索小部件崩溃了,并且显示了一个空文本。
我试着做了以下事情:
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();
}
}
如果小部件很好地显示为折叠状态,则小部件中的文本仍然会记住搜索到的文本(在我重新打开小部件之后)。如何重置小工具的文本?
感谢您的帮助!;)
发布于 2013-05-31 04:33:34
您还可以尝试以下操作:
searchView.setQuery("", false);
searchView.clearFocus();
发布于 2015-04-17 09:44:52
这对我很有效:
首先,我在活动的顶部声明了菜单项变量:
private MenuItem mSearchMenuItem;
我在OnCreateOptionsMenu()中定义了这个变量:
mSearchMenuItem = menu.findItem(R.id.action_search);
我在onResume()中声明了invalidateOptionsMenu():
@Override
protected void onResume() {
invalidateOptionsMenu();
super.onResume();
}
最后,我在onPrepareOptionsMenu()中的菜单项上调用了collapseActionView()。
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
mSearchMenuItem.collapseActionView();
return super.onPrepareOptionsMenu(menu);
}
发布于 2013-08-22 04:15:48
searchView.setQuery("", false);
searchView.setIconified(false);
https://stackoverflow.com/questions/13142678
复制相似问题