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

时间:2015-10-14 22:23:23

标签: android android-actionbar android-actionbar-compat android-actionbaractivity

我试图抓住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。再次点击 会触发上面的回调。

这对我来说不够好。我的活动(从ActionBarActivity延伸)专门用于搜索,因此关闭SearchView并不合理。我只想在第一次点击时将用户导出。 (请不要评论UX或"为什么"我想更改默认行为。我有一个规范要遵循!)

提前致谢...

1 个答案:

答案 0 :(得分:1)

要知道用户何时关闭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;
}