当 SearchView 可见时,如何监听 ActionBar 导航按钮的点击事件?

How do I listen for click events for an ActionBar nav button when a SearchView is visible?

我正在尝试捕获 ActionBar 中导航按钮的点击事件。此方法捕获 最多 次点击:

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    if (menuItem.getItemId() == android.R.id.home) {
        // Nav button pressed. Do stuff here.
        return true;
    }

    return super.onOptionsItemSelected(menuItem);
}

但是当我的 SearchView 可见时它不会被调用。在此状态下,点击按钮将关闭 SearchView。再次点击会触发上面的回调。

这对我来说不够好。我的 activity(从 ActionBarActivity 扩展而来)专用于搜索,因此关闭 SearchView 没有意义。我只想在第一次点击时将用户导航到那里。 (请不要评论 UX 或 "why" 我想更改默认行为。我有一个规范要遵循!)

提前致谢...

要知道用户何时关闭 SearchView 您可以检查菜单项何时折叠:

@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);

    MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.search_view), new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            //The SearchView is opening
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            //The SearchView is closing. Do stuff here.
            return true;
        }
    });

    return true;
}