我有一个活动与一个片段列出一些数据。我已经使用SearchView实现了搜索(操作栏上的漂亮搜索字段)。如何使用android搜索管理器重置搜索
搜索工作正常,用户输入数据,按搜索按钮,结果按预期过滤。
我的问题是,我不能“重置”搜索回到所有结果。我已经尝试在searchManager对象上设置关闭和取消侦听器,但onDismiss和oncancel方法从未被调用。
这里是我的清单行动:
<activity
android:name=".ClientesActivity"
android:label="@string/title_activity_clientes"
android:parentActivityName=".MenuPrincipalActivity"
android:launchMode="singleTop" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="MenuPrincipalActivity" />
<meta-data android:name="android.app.searchable"
android:resource="@xml/cliente_searchable" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
</activity>
在ClientesActivity的方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
clientesService = new ClientesService(getBaseContext());
setContentView(R.layout.activity_clientes);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, ClienteFragment.newInstance(), ClienteFragment.class.getSimpleName())
.commit();
}
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
clientesService.findByNameLike(query);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.clientes, menu);
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true);
return true;
}
它不显示Listenners因为毕竟没有什么工作我回滚所做的更改。 但基本上o在onCreateOptionsMenu方法的'返回true'之前添加了监听器。 起初没什么奇怪的,只是匿名类重写了onDismiss方法实现的接口,试图在那里放置一些日志,并且方法从未被调用过。
“重置”是什么意思?按十字/删除搜索区域中的所有文字? – sandrstar
回到所有结果。十字架工作正常。 我已经有方法返回所有的记录,但OnDismiss/OnCancel事件永远不会被调用。 – Solci
那确切的场景呢?你想如何回到'所有结果'?如果传递空字符串/ null,'clientesService.findByNameLike()'是否返回'所有结果'? – sandrstar