2

我有一个搜索结果页面活动,在操作栏中有一个 SearchView 小部件。在 onCreateOptionsMenu() 中,我自动展开它并显示如下查询:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search_menu, menu);
    MenuItem searchMenuItem = (MenuItem) menu.findItem(R.id.menu_search);
    SearchView searchView = (SearchView)searchMenuItem.getActionView();
    searchView.setOnQueryTextListener(this);
    searchMenuItem.expandActionView(); // expand the search item
    searchView.setQuery(query, false); // hide the keyboard
    searchView.clearFocus();
    return true;
}

主页按钮设置如下:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        finish();
        break;
    default:
        break;
    }
    return super.onOptionsItemSelected(item);
}

但是当用户点击后退或向上按钮时,搜索首先关闭,然后您必须再次按下以关闭活动。如何强制 Activity 立即完成?

4

1 回答 1

2

finish()您可以做的一件事是Activity,一旦SearchView通过实施以下方法折叠起来OnActionExpandListener

searchMenuItem.setOnActionExpandListener(new OnActionExpandListener() {
  @Override
  public boolean onMenuItemActionCollapse(MenuItem item) {
    finish();
    return true;      
  }
  @Override
  public boolean onMenuItemActionExpand(MenuItem item) {  
    return true;      
  }
});
于 2013-02-28T23:02:45.960 回答