0
我已經在操作欄中使用SearchManager和SearchView實現了搜索功能。顯示搜索視圖的相同活動執行搜索並顯示搜索結果。這工作正常,我可以從onNewIntent()獲得搜索查詢,沒有問題。如何清除搜索結果?
當用戶點擊後退按鈕退出搜索模式時,我需要重新顯示所有項目。我該如何做到這一點?我嘗試攔截搜索管理器的OnDismiss和OnCancel以及搜索視圖的OnClose。什麼都沒有被調用。下面的代碼:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) this.getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
//Try to detect end of search session. None of the listeners getting called.
searchManager.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel() {//...}
});
searchManager.setOnDismissListener(new OnDismissListener() {
@Override
public void onDismiss() {//...}
});
searchView.setOnCloseListener(new OnCloseListener() {
@Override
public boolean onClose() {
return false;
}
});
return true;
}
該活動的清單文件條目是這樣的:
<activity
android:name="com.example.MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>