【发布时间】:2014-08-24 17:52:42
【问题描述】:
我关注google's tutorial 为 ActionBar 设置 SearchView,但遇到了一些问题。我目前正在使用 2.3.4 和 4.4.2 设备测试我的应用。
在我的 2.3.4 设备上遇到的问题
- 点击搜索按钮时,ActionBar 发生变化(搜索功能有效)
- 当您进行搜索时,它会转到预期的活动,但是当您按下后退按钮时,ActionBar 的布局会更改为问题编号 1 中 ActionBar 的预期布局,但是当您现在进行搜索时,它将无法正常工作.
在我的 4.4.2 设备上,没有问题,但作为附加问题,从搜索结果活动返回后如何折叠搜索视图?我希望清除搜索视图并将我的操作栏恢复为原始状态。
您可以在其中搜索的我的 MainActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
restoreActionBar();
//From Google tutorial
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
}
return true;
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
} else if (id == R.id.search){
//From Google tutorial
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB) {
//Removing this will fix problem number 1 but the search function will not work
onSearchRequested();
}
return true;
}
return super.onOptionsItemSelected(item);
}
好吧,对于低 api 设备的布局变化并不是什么大问题,但搜索功能和结果后恢复操作栏更重要
【问题讨论】:
标签: android android-actionbar searchview android-actionbar-compat