看起来根本没有调用onCreateContextMenu。在我的onCreate for ListActivity中,我有:
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);
}
永远不会生成日志。没有人有任何建议吗?
答案 0 :(得分:8)
我的想法是ListView拦截事件而不进入contextMenu行为。这对我来说很有意义,因为OnItemLongClickListener行为与contextMenu重叠。如果不是它如何识别contextMenu和OnItemLongClickListener?
答案 1 :(得分:1)
我的问题与lulumeya的答案密切相关,这使我指出了正确的方向。我之前已经多次完成了上下文菜单,直到现在还没有遇到过这种情况。
我在View.setOnClickListener(listener)
中呼叫Adapter.getView(...)
时应该ListView.setOnItemClickListener(listener)
,以避免与上下文菜单冲突。
通常,我确信OnItemClickListener更加优化,特别是因为每次创建或回收视图时,只使用一个侦听器实例而不是创建新实例。
答案 2 :(得分:0)
尝试找到registerForContextMenu(list);作为你在onCreate方法中调用的最后一个方法。 我的意思是这个方法应该在之前调用列表适配器之后调用。
答案 3 :(得分:0)
只需删除youwidget.setonLongclicklistener
和yourwidget.setLongClickable
然后在registerforContextmenu(yourwidget)
中添加onCreate()
然后根据使用的小部件添加代码。
希望它会有所帮助。
答案 4 :(得分:0)
我遇到了这个问题,只能通过确保
来解决我正在考虑放弃长按弹出窗口,在卡片右边缘放置一个Youtube风格的按钮,弹出一个菜单,不会将其他所有内容淡化为背景 - 那个btw的搜索词是什么? / p>
答案 5 :(得分:-2)
您必须在registerForContextMenu(View view)
中调用onCreate(Bundle savedInstanceState)
方法。