我有一个 ListFragment 活动。
我想为 onItemClickedLongPress 创建一个方法,以便用户执行此操作时。弹出一个菜单。我熟悉创建菜单。
因此,如果有人愿意,请给我有关如何在 ListFragment 活动中设置 Override the longpress 的进一步说明?
编辑:此示例显示了如何显示系统菜单 fx 以外的内容。来自https://github.com/lorensiuswlt/NewQuickAction的 QuickAction
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//.......
registerForContextMenu(getListView());
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo amenuInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
Object item = getListAdapter().getItem(amenuInfo.position);
//item could be Cursor/String/YourObject it depends on Adapter
//show popup fx. QuickAction from https://github.com/lorensiuswlt/NewQuickAction
QuickAction qa = new QuickAction(getActivity());
qa.setAnimStyle(QuickAction.ANIM_AUTO);
qa.show(amenuInfo.targetView);
}
编辑:这个答案不好......为什么我用这种奇怪的方法?因为 eclipse intellisense 不支持“好” setOnLongClickListener
(ListView
因为ListView
至少有 2setOnLongClickListener
种方法……一个来自类View
,第二个来自AdapterView
类)……最简单的方法是让你ListFragment
实现AdapterView.OnItemLongClickListener
,然后onViewCreated
添加代码getListView().setOnLongClickListener(this);
通过“长按”,我认为您指的是上下文菜单。对于 a ListFragment
,您所要做的就是注册上下文菜单:
@Override
public void onActivityCreated(Bundle icicle) {
registerForContextMenu(getListView());
}
一旦你这样做了,ListFragment
应该调用onCreateContextMenu()
并且onContextItemSelected()
当它检测到长按时。
进一步修改了 Erich Douglass 的回答.. 由于某种原因,我自己的应用程序会崩溃,直到我修改我的代码并将注册放入 onViewCreated,如下所示:
@Override
public void onViewCreated (View view, Bundle savedInstanceState) {
registerForContextMenu(getListView());
}
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// Show your popout menu here.
}
});