MenuItemCompat.setOnActionExpandListener已过时

16

我有一些代码,它会在搜索视图打开或关闭时设置一个布尔值。

MenuItemCompat.setOnActionExpandListener(action_search, new MenuItemCompat.OnActionExpandListener() {
            @Override
            public boolean onMenuItemActionExpand(MenuItem item){
                isSearch = true;
                return true;
            }
            @Override
            public boolean onMenuItemActionCollapse(MenuItem item){
                isSearch = false;
                return true;
            }
        });

它可以工作。我对它的响应方式感到满意。但是,因为它已经被弃用,setOnActionExpandListener被划掉并显示警告。

android.support.v4.view.MenuItemCompat.setOnActionExpandListener已经被弃用

有什么建议吗?

2个回答

43

android.support.v4.view.MenuItemCompat.setOnActionExpandListener 被弃用了。

是的,MenuItemCompat.setOnActionExpandListener 这个方法在 API level 26.1.0 中被弃用了。

有什么建议吗?

直接使用 MenuItem.setOnActionExpandListener(MenuItem.OnActionExpandListener)

  • 使用 MenuItemCompat.OnActionExpandListener 监听菜单项的扩展或折叠。该菜单项必须使用标志 SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW 配置为可以扩展或折叠其操作视图。

示例代码

MenuItem item = menu.findItem(R.id.action_order);
item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
     @Override
      public boolean onMenuItemActionExpand(MenuItem menuItem) {
          isSearch = true;
          return true;
      }

      @Override
      public boolean onMenuItemActionCollapse(MenuItem menuItem) {
           isSearch = false;
           return true;
      }
});

只有在搜索视图始终展开(标记为collapseActionView)时,它才起作用。 - user924
@AshwinH 很高兴听到这个消息,请随意为我的答案点赞。 - AskNilesh

11

该接口在API级别26.1.0中已被弃用。

请直接使用MenuItem.OnActionExpandListener,而不是MenuItemCompat.OnActionExpandListener

官方文档

示例:

  MenuItem menuItemSearch = menu.findItem(R.id.action_search);

     menuItemSearch.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem menuItem) {
            isSearch = true;
            return true;
        }

        @Override
        public boolean onMenuItemActionCollapse(MenuItem menuItem) {
            isSearch = false;
            return true;
        }
    });

奖金

设置OnQueryTextListenerOnCloseListener

    MenuItem menuItemSearch = menu.findItem(R.id.action_search);

  final SearchView searchView = (SearchView) menuItemSearch.getActionView();

     searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String s) {

          //Do something

            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            return false;
        }
    });

    searchView.setOnCloseListener(new SearchView.OnCloseListener() {
        @Override
        public boolean onClose() {

        // do something
            return false;
        }
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接