当前位置: 首页 > 知识库问答 >
问题:

ActionMode OnCreateActionMode未调用

田焕
2023-03-14
AdapterView.OnItemLongClickListener mOnItemLongClickListener = new AdapterView.OnItemLongClickListener()
    {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
        {

            if (mActionMode != null)
            {
                return false;
            }
            Toast.makeText(getActivity(), "Long Click", Toast.LENGTH_LONG).show();
            lstRooms.setOnItemClickListener(null);
            mActionMode = getActivity().startActionMode(mActionModeCallback);
            view.setSelected(true);

            return true;
        }
    };
lstRooms.setOnItemLongClickListener(mOnItemLongClickListener);
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback()
    {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu)
        {
            lstRooms.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
            lstRooms.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener()
            {
                @Override
                public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked)
                {
                    Toast.makeText(getActivity(), "Clicked", Toast.LENGTH_LONG).show();
                }

                @Override
                public boolean onCreateActionMode(ActionMode mode, Menu menu)
                {
                    MenuInflater inflater = mode.getMenuInflater();
                    inflater.inflate(R.menu.room_context_menu, menu);
                    mode.setTitle("HELLO WORLD");
                    return true;
                }

                @Override
                public boolean onPrepareActionMode(ActionMode mode, Menu menu)
                {
                    return false;
                }

                @Override
                public boolean onActionItemClicked(ActionMode mode, MenuItem item)
                {
                    return false;
                }

                @Override
                public void onDestroyActionMode(ActionMode mode)
                {

                }
            });
            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu)
        {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item)
        {
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode)
        {
            mActionModeCallback = null;
        }


    };

没有调用onCreateActionMode之类的方法,所以我的标题栏没有设置,尽管操作栏会变成黑色,但出于某种原因,我知道文本应该是白色的,就好像我创建了可以工作的对象之后,我做了ActionMode.setTitle(“hello”)一样,只是回调函数不工作。

如前所述,另一个问题是,当我执行view.setselected(true)时,列表视图项没有显示它已被选中。我还尝试过lstroom.setitemchecked(position,true)

共有1个答案

越姚石
2023-03-14

我已经弄清楚问题出在哪里了。

我对多选择模式侦听器的工作方式有一个误解。我所做的是在监听器中注册OnItemLongClickListener,将其设置为MultiChoice,然后在其中创建ActionMode.Callback,然后创建MultiChoice监听器。我没有意识到MulitiChoiceListener实际上可以创建ActionMode.Callback,所以它们彼此冲突。

相反,我去掉了所有这些,只创建了一个MultiChoiceModeListener,它本身就创建了上下文操作栏。

 类似资料:
  • 我正在开发一个带有ActionBars的应用程序,它支持姜饼和其他功能。所以基本上我在使用支持库并扩展 行动B活动 对于我所有的活动。除了 onSupportNavigateUp() 方法。它只是不被调用在留档中所述。 每当用户选择从操作栏在应用程序的活动层次结构中向上导航时,就会调用此方法。 这很容易,但我一直不明白为什么它不能像预期的那样工作,谷歌也帮不上忙。这是虫子吗?还是我错过了什么?

  • 运行playstore Build Apk时,未调用Marshmallow Runtime Permissions onRequestPermissionsResult,但正常调试Apk时运行良好。谁来帮帮我。。谢谢 OnRequestPermissionResult方法

  • 我很难让正常工作。无论我怎么努力,我都不能让它被称为。 我的应用程序的体系结构如下所示:我的主活动包含一个片段,其中包含一个ViewPager,而ViewPager又有四个子片段实例。目前,我正在(成功地)用填充活动中的初始选项菜单,但我希望添加一些对应于每个活动子片段的额外选项。 如果有人知道这里发生了什么,我会非常感激,因为我已经被困在这个问题上两天了。 更新--我已经搞清楚了现在的问题是什么

  • CustomDialog 下面是http://www.theappguruz.com/blog/android-take-photo-camera-gallery-code-sample

  • 我使用: null 我正在使用zuul和负载平衡rest模板从另一个微服务调用一个微服务: 请求到达下游服务,但未在ZullFilter中设置头(我使用了不同的头): 我还创建了一个过滤器: 我错过了什么?为什么不能调用筛选器?在我的案件中是否应该引用?

  • 我试图发送一个意图,从一个活动中的创建启动一个意图服务。但是,IntentService的onHandleIntent永远不会被接收。我尝试过用意图过滤器改变清单,但似乎没有任何效果。没有抛出异常,但是根本没有调用IntentService。 这是onCreate 这是IntentService类的创建者和OnHandleContent,我知道它不会被调用,因为logcat从不显示“检索到的意图”

  • 给定websocket配置: 和客户端JavaScript: 并从服务器发送此消息: 回调不会被激发。 javascript控制台显示已建立连接: 已连接到STOMP:已连接用户名:jschmoe心跳:0,0版本:1.1订阅ID:sub-0目标:/user/topic/abc 并且tomcat控制台显示: 正在处理订阅目的地=/topic/abc-useryl3ovhr2订阅ID=sub-0会话=

  • 问题内容: 我有一个非常简单的Servlet和一个非常简单的HttpSessionListener: 我的方法从未被调用(没有日志输出),最终我在调用getSession()的那一行上得到一个 我尝试拨打电话时也没有问题,但存在相同的问题。 我不明白- 注释不足以调用我的侦听器吗?Eclipse甚至在下方将其显示为侦听器。 问题答案: 原来这是愚蠢的Eclipse问题之一… Project-> C