我有一个ListFragment活动。
我想为onItemClickedLongPress创建一个方法,以便在用户执行此操作时。弹出一个菜单。我熟悉创建菜单。
如果有人愿意,请给我进一步说明如何在ListFragment活动中设置覆盖longpress?
答案 0 :(得分:8)
编辑:此示例显示如何显示系统菜单fx之外的其他内容。来自https://github.com/lorensiuswlt/NewQuickAction的快速动作
@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
至少有2个setOnLongClickListener
方法......一个来自View
,另一个来自AdapterView
ListFragment
类)...最简单的方法是让AdapterView.OnItemLongClickListener
实施onViewCreated
,然后在getListView().setOnLongClickListener(this);
中添加代码{{1}}
答案 1 :(得分:5)
通过“长按”,我认为你指的是上下文菜单。对于ListFragment
,您所要做的就是注册上下文菜单:
@Override
public void onActivityCreated(Bundle icicle) {
registerForContextMenu(getListView());
}
执行此操作后,ListFragment
会在检测到长按时致电onCreateContextMenu()
和onContextItemSelected()
。
答案 2 :(得分:0)
修改后的Erich Douglass'进一步回答..由于某些原因,我自己的应用程序崩溃,直到我修改了我的代码并将注册放入onViewCreated,如下所示:
@Override
public void onViewCreated (View view, Bundle savedInstanceState) {
registerForContextMenu(getListView());
}
答案 3 :(得分:0)
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
// Show your popout menu here.
}
});