【问题标题】:onCreateContextMenu isn't being called未调用 onCreateContextMenu
【发布时间】:2012-01-29 21:34:44
【问题描述】:

看起来 onCreateContextMenu ins 根本没有被调用。在我的 ListActivity 的 onCreate 中,我有:

list = getListView();
registerForContextMenu(list);

(我知道这是多余的,我刚刚通过 getListView() 得到了相同的结果)。

这是我的 onCreateOntextMenu;

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    Log.d("LM", "onCreateContextMenu");

    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.context_landmarks, menu);
}

永远不会生成日志。没有人有什么建议吗?

【问题讨论】:

  • 把这个传递给其他人,我还在视图中添加了一个 onItemLongClickListener。我现在明白为什么这不起作用了。

标签: android listactivity contextmenu


【解决方案1】:

我的想法是 ListView 拦截事件而不是进入 contextMenu 行为。这对我来说很有意义,因为 OnItemLongClickListener 行为与 contextMenu 的行为重叠。如果不是,它如何识别 contextMenu 和 OnItemLongClickListener?

【讨论】:

  • 这也是我发现的。在返回代码显示长按正在工作后,我感到很震惊。
【解决方案2】:

我的问题与 lulumeya 的回答密切相关,这为我指明了正确的方向。我以前做过很多次上下文菜单,但不知何故直到现在都没有遇到过。

我在Adapter.getView(...) 中调用View.setOnClickListener(listener) 时应该是ListView.setOnItemClickListener(listener) 以避免与上下文菜单冲突。

总的来说,我确信 OnItemClickListener 更加优化,尤其是因为只使用一个侦听器实例,而不是每次创建或回收视图时都创建一个新实例。

【讨论】:

    【解决方案3】:

    尝试定位 registerForContextMenu(list);作为您在 onCreate 方法中调用的最后一个方法。 我的意思是这个方法应该在列表适配器被调用之后而不是之前被调用。

    【讨论】:

      【解决方案4】:

      只需删除 youwidget.setonLongclicklisteneryourwidget.setLongClickable

      然后在onCreate()中添加registerforContextmenu(yourwidget) 然后根据使用的小部件添加代码。

      希望对您有所帮助。

      【讨论】:

        【解决方案5】:

        我遇到了这个问题,只能通过确保来解决它

        1. 那是因为分别。 Activity 注册了 View,同样的 Activity 还必须覆盖 onCreateContextMenu();在 Fragment 中这样做是行不通的
        2. 由于我使用了一个额外的 Fragment 创建适配器(并向其注册),因此 Fragment 而不是 Activity 必须覆盖 onContextItemSelected()。

        我正在考虑放弃长按弹出窗口,转而使用卡片右侧边缘的 Youtube 风格按钮,弹出一个不会将其他所有内容淡入背景的菜单——顺便说一句,搜索词是什么?

        【讨论】:

          【解决方案6】:

          您必须在onCreate(Bundle savedInstanceState) 中调用registerForContextMenu(View view) 方法。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-04-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-05-23
            • 2011-10-14
            • 2013-10-19
            相关资源
            最近更新 更多