【问题标题】:How do I listen for click events for an ActionBar nav button when a SearchView is visible?当 SearchView 可见时,如何侦听 ActionBar 导航按钮的单击事件?
【发布时间】:2015-10-14 22:23:23
【问题描述】:

我正在尝试在我的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 或“为什么”我想更改默认行为的 cmets。我有一个规范要遵循!)

提前谢谢...

【问题讨论】:

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


    【解决方案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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      相关资源
      最近更新 更多