我有ListFragment
,我使用registerForContextMenu()
注册了上下文菜单,并覆盖了onCreateContextMenu()
。
问题是,当我长按任何项目时,onCreateContextMenu()
永远不会被调用。
以下是一些代码:
public class List_F extends ListFragment {
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
registerForContextMenu(getListView());
setListAdapter(...);
setListShown(false);
// launch cursor loader
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int i = item.getItemId();
if (i == R.id.menu_item_delete) {
delete(info.id);
return true;
} else {
return super.onContextItemSelected(item);
}
}
}
知道为什么吗?
我也试过
getListView().setOnItemLongClickListener()
它甚至没有被召唤。
有什么想法吗?
答案 0 :(得分:4)
找到了罪魁祸首!
我在OnClickListener
的视图上设置了Adapter
。
这可能正在吃长篇大论。
我将每个视图中的OnClickListener
更改为OnItemClickListener
ListView