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>