无法在Fragment

时间:2015-04-28 03:24:43

标签: android listview android-fragments

长按ListView上的每个项目时创建菜单。我创建了两个场景: 在ContextMenuActivtity上创建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);
}

}

我正在寻找创建菜单的方法,但仍然没有任何解决方案。 请告诉我如何解决它。 谢谢,

1 个答案:

答案 0 :(得分:0)

我认为问题在于你打电话给:

    super.onCreateContextMenu(menu, v, menuInfo);

您只需在Activity中调用它的实现。尝试删除此行。

编辑:它明确写在docs中:

  

默认实现调用Activity.onCreateContextMenu,但如果您不想要这种行为,则无法调用此实现。