在有多个Fragment的Activity中使用上下文菜单时会出现上下文菜单所执行的命令与被执行的对象不一致的问题。比如:在Fragment(或ListFragment)中含有ListView,你給ListView对象注册了上下文菜单。样例代码:
在上下文菜单的点击实现方法(onContextItemSelected)中执行菜单操作时你会发现被操作的对象似乎总是第一个Fragment中的那个ListView。或者来回切换Fragment时是上一个Fragment里的ListView。这让人有些沮丧。
ListView mListView = (ListView) mRoot.findViewById(R.id.my_listview);
mListView.setOnCreateContextMenuListener(this);
在上下文菜单的点击实现方法(onContextItemSelected)中执行菜单操作时你会发现被操作的对象似乎总是第一个Fragment中的那个ListView。或者来回切换Fragment时是上一个Fragment里的ListView。这让人有些沮丧。
解决办法:1)在创建上下文菜单时设定不同的组ID(GroupID)。比如:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.add(this.getDataType(), MENU_EDIT, Menu.NONE, R.string.edit).setIcon(android.R.drawable.ic_menu_edit);
menu.add(this.getDataType(), MENU_DELETE, Menu.NONE, R.string.delete).setIcon(android.R.drawable.ic_menu_delete);
super.onCreateContextMenu(men