6

我有一个 ListFragment 活动。

我想为 onItemClickedLongPress 创建一个方法,以便用户执行此操作时。弹出一个菜单。我熟悉创建菜单。

因此,如果有人愿意,请给我有关如何在 ListFragment 活动中设置 Override the longpress 的进一步说明?

4

4 回答 4

8

编辑:此示例显示了如何显示系统菜单 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 不支持“好” setOnLongClickListenerListView因为ListView至少有 2setOnLongClickListener种方法……一个来自类View,第二个来自AdapterView类)……最简单的方法是让你ListFragment实现AdapterView.OnItemLongClickListener,然后onViewCreated添加代码getListView().setOnLongClickListener(this);

于 2011-09-14T15:49:24.427 回答
5

通过“长按”,我认为您指的是上下文菜单。对于 a ListFragment,您所要做的就是注册上下文菜单:

@Override
public void onActivityCreated(Bundle icicle) {    
    registerForContextMenu(getListView());
}

一旦你这样做了,ListFragment应该调用onCreateContextMenu()并且onContextItemSelected()当它检测到长按时。

于 2011-09-14T15:46:33.077 回答
0

进一步修改了 Erich Douglass 的回答.. 由于某种原因,我自己的应用程序会崩溃,直到我修改我的代码并将注册放入 onViewCreated,如下所示:

@Override
public void onViewCreated (View view, Bundle savedInstanceState) {
    registerForContextMenu(getListView());
}
于 2013-08-26T19:01:05.690 回答
0
getListView().setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        // Show your popout menu here.
    }
});
于 2014-07-15T15:05:08.050 回答