to create menu when long click on each item on listview
. created 2 scenarios: create contextmenu
on activtity
, fragment
. however, run on activity
, not on fragment
. below code implemented on fragment:
public class contacttabfragment extends fragment { listview listview; list<contact> listcontacts; listvaultcontactsadapter adapter; @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view rootview = inflater.inflate(r.layout.fragment_contacts, container, false); initview(rootview); registerforcontextmenu(listview); listcontacts = vaultproviderutil .getlistofvaultcontacts(contacttabfragment.this .getactivity().getapplicationcontext()); adapter = new listvaultcontactsadapter( contacttabfragment.this.getactivity(), listcontacts); listview.setadapter(adapter); return rootview; } private void initview(view rootview) { listview = (listview) rootview.findviewbyid(r.id.listvaultcontacts); } @override public void oncreatecontextmenu(contextmenu menu, view v, contextmenuinfo menuinfo) { super.oncreatecontextmenu(menu, v, menuinfo); menu.add(menu.none, r.id.a_item, menu.none, "menu a"); menu.add(menu.none, r.id.b_item, menu.none, "menu b"); menu.add(menu.none, r.id.c_item, menu.none, "menu c"); menu.add(menu.none, r.id.d_item, menu.none, "menu d"); menu.add(menu.none, r.id.e_item, menu.none, "menu e"); menu.add(menu.none, r.id.f_item, menu.none, "menu f"); } @override public boolean oncontextitemselected(menuitem item) { switch (item.getitemid()) { case r.id.a_item: log.i("contextmenu", "item 1a chosen"); return true; case r.id.b_item: log.i("contextmenu", "item 1b chosen"); return true; } return super.oncontextitemselected(item); }
}
i'm looking way create menu still don't have solution. please tell me how solve it. thanks,
i think problem when call the:
super.oncreatecontextmenu(menu, v, menuinfo);
you call implementation of in activity. try remove line.
edit: explicitly written in docs:
the default implementation calls activity.oncreatecontextmenu, though can not call implementation if don't want behavior.