我有一個活動與一個片段列出一些數據。我已經使用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