これは、3.0より前のプラットフォームに影響する問題です。つまり、Sherlockがアクションバーのメニュー項目を提供するプロキシとして機能する場合です。
2つのフラグメントを含むフラグメントアクティビティがあり、それぞれに独自のオプションメニューのセットがあります。アクティビティが開始されると、最初のフラグメントタブが表示され、そのメニュー項目は正常に機能します。ただし、最初に他のタブに切り替えると、そのメニュー項目が応答しません。最初のタブに戻ってもう一方のタブをもう一度選択すると、正常に起動し始めます。
これは既知の問題のようです。こちらのディスカッションをご覧ください。
今のところ私の回避策は、2番目のタブが最初に選択されたことを検出し、プログラムで最初のタブに戻すことです。これにより、ユーザーは2番目のタブを再度選択する必要がありますが、その時点から、ユーザーがそのアクティビティに留まっている限り、通常どおり機能します。
他の誰かがこの問題のよりエレガントな解決策を見つけたかどうか疑問に思います。ありがとう!
最初のフラグメント:
@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);
}
2番目のフラグメント:
@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);
}