1

以下のコードに示すように、別々のフラグメントに 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();
4

0 に答える 0