这是一个影响 3.0 之前的平台的问题,即当 Sherlock 充当代理来提供操作栏菜单项时。
我有一个包含两个片段的片段活动,每个片段都有自己的一组选项菜单。当活动开始时,第一个片段选项卡会显示出来,并且它的菜单项正常工作。但是,我第一次切换到另一个选项卡时,它的菜单项没有响应。如果我切换回第一个选项卡并再次选择另一个选项卡,它们就会开始正常触发。
看起来这是一个已知问题。看看这里的讨论。
我现在的解决方法是检测第一次选择第二个选项卡并以编程方式切换回第一个选项卡。这会强制用户再次选择第二个选项卡,但从那时起,只要用户停留在该活动中,它就可以正常工作。
我想知道是否有其他人找到了解决此问题的更优雅的解决方案。谢谢!
第一个片段:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
moveMenuItem = menu.add(Flashum.MENU_GROUP_MULTI, Flashum.MOVE_FLASHES_ID, 0, R.string.move_flashes);
cloneMenuItem = menu.add(Flashum.MENU_GROUP_MULTI, Flashum.CLONE_FLASHES_ID, 0, R.string.clone_flashes);
deleteMenuItem = menu.add(Flashum.MENU_GROUP_MULTI, Flashum.DELETE_FLASHES_ID, 0, R.string.delete_flashes);
moveMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
moveMenuItem.setIcon(R.drawable.move2red);
cloneMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
cloneMenuItem.setIcon(R.drawable.hard_drive_clone);
deleteMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
deleteMenuItem.setIcon(R.drawable.delete);
}
第二个片段:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
saveMenuItem = menu.add(Flashum.MENU_GROUP_SAVE, Flashum.SAVE_CHANGES_ID, 0, R.string.save_changes);
saveMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
saveMenuItem.setIcon(R.drawable.save);
menu.setGroupVisible(Flashum.MENU_GROUP_SAVE, true);
recMenuItem = menu.add(Flashum.MENU_GROUP_REC, Flashum.RECORD_ID, 0, R.string.record);
recMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
recMenuItem.setIcon(R.drawable.microphonehot);
}