android - 如何拦截ActionBarSherlock中 "Up"(主页按钮)按钮的点击?

标签 android android-actionbar actionbarsherlock android-menu

我使用 ActionBar Sherlock 为我的一个项目实现了搜索功能。所以现在我在 ActionBar 上有搜索编辑文本,就像官方 AB sherlock 项目存储库(在 github 上)的示例中一样:Collapsible action items

我的搜索编辑文本正在过滤 Activity 中的 ListView。当用户开始输入某些字符时,ListView 会被过滤。我通过在搜索编辑文本中添加一个 textWatcher 来做到这一点,如下所示:

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    menu.add(Menu.NONE, SEARCH_ACTION_MENU, 0, "Search")
        .setIcon(R.drawable.ic_search)
        .setActionView(R.layout.search_edittext)
        .setShowAsAction(
            MenuItem.SHOW_AS_ACTION_ALWAYS
                | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    /** We get a reference to the search edit */
    MenuItemWrapper menuItemWrapper = (MenuItemWrapper) menu.getItem(0);
    final EditText searchEdit = (EditText) menuItemWrapper.getActionView();
    /** We add a listener search filter listener */
    searchEdit.addTextChangedListener(filterWatcher); // filterwatcher is a textWatcher
    return true;
  }

当我单击搜索图标时,会显示搜索“编辑文本”,用户可以开始输入内容。此外,主页按钮显示为“向上主页按钮”(带有向左箭头)。

单击此箭头将使搜索 TextView 消失,但如果用户已经开始输入内容,则 ListView 将被过滤,并且当用户单击搜索 TextView 后不再可见时, ListView 不会重置主页“向上”按钮。

我的问题是:如何拦截点击“向上”按钮来重置我的 ListView ?我认为这是我重置列表的唯一方法。

我已经尝试过:

@Override
  public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
      case android.R.id.home:
        Log.d(Constants.LOG_TAG, "Home button clicked");
        return true;

      default:
        return super.onOptionsItemSelected(item);
    }
  }

当“主页按钮”显示为“向上”按钮时,它不起作用。

如有任何帮助,我们将不胜感激。

提前致谢,

最佳答案

您需要在 View 上实现 CollapsibleActionView 才能接收 onActionViewCollapsed() 回调。

您还应该升级到 dev 分支上的 ActionBarSherlock 版本,因为它对在 native 操作栏上使用时的可折叠操作项进行了重要修复。

关于android - 如何拦截ActionBarSherlock中 "Up"(主页按钮)按钮的点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740473/

相关文章:

android - 使用 glide 在 ActionBar 上设置图标

java - 如何检测未触摸/点击 View ?

android - Action Bar Style导致Action Bar消失

android - 如何保证我的操作栏选项卡在所有屏幕尺寸下始终可见?

android - 使用操作栏时如何隐藏标题栏?

android - 需要帮助设计一个 android 用户界面

android - 按给定条件更改 Firebase 数据库节点中的值

android - 关于 Vulkan Initialization/Deinitialization 和 Android App life cycle event 的问题

对话框中 FindViewById 处的 Android java.lang.NullPointerException

android - 如何覆盖 Sherlock 操作栏中的按下状态颜色?