SearchView
上的ActionBar
小部件中请求搜索之后
单击软键盘的搜索操作按钮,输入文本为
已从SearchView
清除。我已阅读SearchView的官方文档,以及here和here的指南,但没有运气。
编辑: 我发现只要我滚动ViewPager就会发生这种文本重置。
答案 0 :(得分:2)
试试这个:
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String query)
{
mSearchView.setQuery(query,false);
return false;
}
@Override
public boolean onQueryTextChange(String newText)
{
return false;
}
});
答案 1 :(得分:0)
如果您的搜索小部件调用另一个活动来处理查询,它将被清除,因为活动是新创建的。
因此,您需要从2个位置手动设置查询:
onCreateOptionsMenu
初始化搜索小部件onNewIntent
您收到查询的地方为什么来自2个地方?因为如果新创建了搜索处理活动,则首先调用onNewIntent
,并且尚未准备好使用搜索窗口小部件。在这种情况下,请在onNewIntent
保存查询并将其设置为onCreateOptionsMenu
。否则,可以直接设置为onNewIntent
。
以下是一个例子:
private String mQuery;
private SearchView mSearchView;
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
mQuery = intent.getStringExtra(SearchManager.QUERY);
if (mSearchView != null) {
mSearchView.setQuery(mQuery, false);
}
// Do something with the new query
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the actionbar items
getMenuInflater().inflate(R.menu.actionbar_items, menu);
// Get SearchView and set the searchable configuration
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// Disable collapsing the search widget
mSearchView.setIconifiedByDefault(false);
// Set the query
mSearchView.setQuery(mQuery, false);
return true;
}