Kyr*_*iog 24 android android-widget
我有2个活动:第一个,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();
}
}
Run Code Online (Sandbox Code Playgroud)
如果窗口小部件显示为已折叠,则窗口小部件中的文本仍会记住搜索到的文本(在重新打开窗口小部件后).如何重置小部件的文本?
谢谢你的帮助!;)
BJV*_*BJV 56
您也可以尝试以下方法:
searchView.setQuery("", false);
searchView.clearFocus();
Run Code Online (Sandbox Code Playgroud)
Cri*_*vez 27
这是神奇的
searchView.setQuery( "",假); //清除文字
searchView.setIconified(真); //关闭搜索编辑器并再次创建搜索图标
在HomepageActivity中,在oncreate函数后插入onSaveInstanceState函数
每次打开新活动时,此功能都会触发, 在打开新活动之前,它将重置搜索窗口小部件的值
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
searchView.setQuery("", false);
searchView.setIconified(true);
}
Run Code Online (Sandbox Code Playgroud)
小智 10
这对我有用:
首先,我在活动的顶部声明了菜单项变量:
private MenuItem mSearchMenuItem;
Run Code Online (Sandbox Code Playgroud)
我在OnCreateOptionsMenu()中定义了变量:
mSearchMenuItem = menu.findItem(R.id.action_search);
Run Code Online (Sandbox Code Playgroud)
我在onResume()中声明了invalidateOptionsMenu():
@Override
protected void onResume() {
invalidateOptionsMenu();
super.onResume();
}
Run Code Online (Sandbox Code Playgroud)
最后,我在onPrepareOptionsMenu()的菜单项上调用了collapseActionView().
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
mSearchMenuItem.collapseActionView();
return super.onPrepareOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
刚刚找到了一种丑陋的方法来使其工作(阅读评论以查看差异):
\n\npublic class HomepageActivity extends Activity {\n // Declaring SearchView as an instance object\n private SearchView searchView;\n\n @TargetApi(11)\n @Override\n public boolean onCreateOptionsMenu(Menu menu) {\n MenuInflater inflater = getMenuInflater();\n inflater.inflate(R.menu.projectslist, menu);\n\n if(Build.VERSION.SDK_INT >= 11) {\n SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);\n // Using instance var instead of local var\n searchView = (SearchView) menu.findItem(R.id.homepage_search).getActionView();\n ComponentName component = new ComponentName(this, SearchActivity.class);\n searchView.setSearchableInfo(searchManager.getSearchableInfo(component));\n searchView.setIconifiedByDefault(true);\n // Setting query is not anymore required\n //searchView.setQuery("", false);\n }\n\n return super.onCreateOptionsMenu(menu);\n }\n\n [\xe2\x80\xa6]\n\n @TargetApi(11)\n @Override\n protected void onRestart() {\n super.onRestart();\n // Do not need to recreate menu\n /*if(Build.VERSION.SDK_INT >= 11)\n invalidateOptionsMenu();*/\n if(Build.VERSION.SDK_INT >= 11) {\n // Calling twice: first empty text field, second iconify the view\n searchView.setIconified(true);\n searchView.setIconified(true);\n }\n launchAsynchronousImageDownload();\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我认为这很丑陋,所以如果有人有更好的主意,请告诉我:)
\n| 归档时间: |
|
| 查看次数: |
26027 次 |
| 最近记录: |