我不能为我的生活弄清楚为什么会这样。 我查看了ABS示例代码(适用于非listviews),我已经在线搜索并正确地按照说明操作,但我仍然有一些奇怪的错误。
在onCreate()期间,我调用此代码:
lv.setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
registerForContextMenu(view);
openContextMenu(view);
return true;
}
});
当长时间点击该项目时,由于某种原因它会继续:
openContextMenu()
View.showContextMenu()
AbsListView.showContextMenuForChild()
openContextMenu()
我确实有一个点击监听器集,但它不应该影响任何东西,因为它会在点击时打开一个新的活动。
为了完整性,这里是创建上下文菜单。
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
if (v.getId() == R.id.lvFines) {
menu.add("One");
menu.add("Two");
menu.add("Three");
menu.add("Four");
}
}
我是否使用了ActionBarSherlock中错误的“支持”功能?
答案 0 :(得分:4)
嗯,我觉得很傻,因为我在发布问题后很快就修好了。
问题是onItemLongClick()
方法,不使用用于上下文菜单。
相反,请在上下文菜单中注册LISTVIEW。
这是来源。
for onCreate():
registerForContextMenu(lv);
要在长按期间访问所选项目:
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
if (v.getId() == R.id.lv) {
ListView lv = (ListView) v;
AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo;
YourObject obj = (YourObject) lv.getItemAtPosition(acmi.position);
menu.add("One");
menu.add("Two");
menu.add("Three");
menu.add(obj.name);
}
}
这就是所有人!