长按ListView
上的每个项目时创建菜单。我创建了两个场景:
在ContextMenu
和Activtity
上创建Fragment
。
但是,它仅在Activity
上运行,而不在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 was chosen");
return true;
case R.id.b_item:
Log.i("ContextMenu", "Item 1b was chosen");
return true;
}
return super.onContextItemSelected(item);
}
}
我正在寻找创建菜单的方法,但仍然没有任何解决方案。 请告诉我如何解决它。 谢谢,
答案 0 :(得分:0)
我认为问题在于你打电话给:
super.onCreateContextMenu(menu, v, menuInfo);
您只需在Activity中调用它的实现。尝试删除此行。
编辑:它明确写在docs中:
默认实现调用Activity.onCreateContextMenu,但如果您不想要这种行为,则无法调用此实现。