如何使用应用栏执行搜索?
How do I perform a search using the App bar?
所以我尝试使用应用栏执行搜索并将查询传递给我称为“searchRequest”的属性。我要显示结果。
我一直在关注this guide in the documentation并尝试了但是后来我无济于事。
正如我所评论的那样,我的临时解决方案是调用我的加载程序并将 "searchRequest" 设为 class 属性。但这似乎会导致多种问题,例如尽管按下后退按钮,结果仍保留在屏幕上。
我已经尝试覆盖 onOptionsMenuClosed()
方法,为我的 searchView 设置一个 setOnCloseListener()
。
我怀疑我应该在专用的 SearchActivity 中执行此操作。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
this.searchRequest = query;
/*LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(BOOK_LOADER_ID, null,MainActivity.this);*/
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
}
也添加这个,每当搜索视图展开或折叠时都会调用它。
MenuItemCompat.setOnActionExpandListener(searchView,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem menuItem) {
// Refresh here with full list.
return true;
}
});
所以我尝试使用应用栏执行搜索并将查询传递给我称为“searchRequest”的属性。我要显示结果。
我一直在关注this guide in the documentation并尝试了但是后来我无济于事。
正如我所评论的那样,我的临时解决方案是调用我的加载程序并将 "searchRequest" 设为 class 属性。但这似乎会导致多种问题,例如尽管按下后退按钮,结果仍保留在屏幕上。
我已经尝试覆盖 onOptionsMenuClosed()
方法,为我的 searchView 设置一个 setOnCloseListener()
。
我怀疑我应该在专用的 SearchActivity 中执行此操作。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
this.searchRequest = query;
/*LoaderManager loaderManager = getLoaderManager();
loaderManager.initLoader(BOOK_LOADER_ID, null,MainActivity.this);*/
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
}
也添加这个,每当搜索视图展开或折叠时都会调用它。
MenuItemCompat.setOnActionExpandListener(searchView,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem menuItem) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem menuItem) {
// Refresh here with full list.
return true;
}
});