片段中不适当的上下文菜单 [英] Inappropriate Context Menu within a Fragment
问题描述
我有一个带有导航抽屉和一个片段的活动.每个人都有自己的带有上下文菜单的ListView.
I have an activity with a Navigation Drawer and a fragment. Each of them has his own ListView with a Contextual Menu.
导航抽屉中的上下文菜单可以正常工作.
The Context Menu inside the navigation drawer works fine.
问题出在片段内的菜单上.当我进入片段的上下文菜单时,将同时显示导航抽屉的菜单和片段的菜单.
The problem is with the menu inside the fragment. When I enter the fragment's context menu, BOTH navigation drawer's menu AND fragment's menu are displayed.
活动方法
@Override
protected void onCreate(Bundle savedInstanceState) {
registerForContextMenu(mDrawerList); // mDrawrList is the navigation drawer's ListView
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()) {
case R.id.action_edit:
// Do some stuff
return true;
case R.id.action_delete:
// Do some stuff
return true;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.drawer, menu);
}
片段的方法
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setHasOptionsMenu(true);
mListView = (ListView) view.findViewById(R.id.list);
registerForContextMenu(mListView);
// ...
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch(item.getItemId()) {
case R.id.action_edit:
// Do some stuff
return true;
case R.id.action_delete:
// Do some stuff
return true;
}
return super.onContextItemSelected(item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getActivity().getMenuInflater().inflate(R.menu.fragment_menu, menu);
}
谢谢.
推荐答案
已解决.
问题是活动的 onCreateContextMenu
被调用了.
The problem was that the activity's onCreateContextMenu
was called.
我刚刚从片段的 onCreateContextMenu
方法中删除了 super.onCreateContextMenu(menu,v,menuInfo);
.
I just removed super.onCreateContextMenu(menu, v, menuInfo);
from the fragment's onCreateContextMenu
method.
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
getActivity().getMenuInflater().inflate(R.menu.fragment_menu, menu);
}
希望它将对某人有所帮助.
Hope it'll help someone.
这篇关于片段中不适当的上下文菜单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!