7

私のアプリには、2 つのフラグメントをホストする 1 つのアクティビティがあります。MenuItem を Menu に追加した場合、フラグメントでそれを取得できますか? アクティビティの OptionMenu と子フラグメントの OptionMenu の間のリンクは何ですか?

4

3 に答える 3

5

渡された引数としてを呼び出す必要setHasOptionsMenu();があり、 onCreate オプション メニューをオーバーライドできます。true

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Enable the option menu for the Fragment
    setHasOptionsMenu(true);
}

フラグメントごとに異なる optionsMenu が必要な場合は、2 つの異なるメニュー xml ファイルを定義し、それらをonCreateOptionsMenu

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    inflater.inflate(R.menu.fragment1_menu, menu);


}
于 2013-03-15T03:11:54.730 に答える
0

MenuItem次のように、Activity に追加して、id で s でonCreateOptionsMenu()それらを取得できることがわかりました。Fragment

アクティビティ:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
     itemId= 0;
     menu.add(0, itemId, 0, "item");
     return super.onCreateOptionsMenu(menu);
}

断片:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
    itemId= 0
    MenuItem menuItem= menu.findItem(itemId);                         
}
于 2013-03-16T21:38:30.710 に答える
0

サブフラグメントでアクティビティのメニューのイベントをキャッチすることはできません。代わりに、フラグメントに のようなものを実装させることができますMenuItem.OnMenuItemClickListener。アクティビティのonOptionsItemSelected(MenuItem item)メソッドでは、単に を呼び出しますYourFragmentonMenuItemClick().

于 2013-03-15T04:03:23.373 に答える