以下のコードに示すように、別々のフラグメントに 2 つのメニュー ボタンがあります。奇妙なことに、最初のフラグメント (そしてもちろん、2 番目のフラグメントのボタン) のボタン (「ホーム」) を押すと、2 番目のフラグメントの onOptionsItemSelected が起動します。
両方のフラグメントに onOptionsItemsSelected がある場合、最初のフラグメントの 1 つが両方のフラグメントのボタンに対して起動され、両方のボタンのメニュー ID が 1 として表示されます。
ボタンごとに異なる動作をさせるにはどうすればよいですか? (さまざまなイベントを発生させるか、さまざまなメニュー ID を生成することによって。)
public static class MenuFragment extends SherlockFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add("Home").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
}
}
/**
* Second fragment with a menu.
*/
public static class Menu2Fragment extends SherlockFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.add("Filter").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) // This gets fired when Menu 1 is selected
{
int id = item.getItemId();
Toast.makeText(getActivity(), "Option " + id+ " selected", Toast.LENGTH_SHORT).show();