web-dev-qa-db-ja.com

Android menu xmlの複数のメニューに共通のメニュー項目を含める方法は?

メニューの多くには、常にすべてに同じ1つの項目があります。

そのアイテムを追加メニューとして定義し、他のすべてに含める方法はありますか?

このようなもの:

menu/main.xml

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:id="@+id/menu_main"
          Android:title="@string/text_mainmenu" />
</menu>

menu/other.xml

<menu xmlns:Android="http://schemas.Android.com/apk/res/Android"
      parent="@menu/main">
    <item Android:id="@+id/menu_other"
          Android:title="@string/text_othermenu" />
</menu>

プログラムでそれを行うことは可能であることを私は知っていますが、xml-wayの方が良いと思いました。

29
Tima

私の知る限り、 <include>はレイアウトXMLでのみ機能し、メニューXMLでは機能しませんが、試してみることができます。それがないので、プログラムによるオプション(両方のメニューXMLファイルを膨らませる)が私が知っている唯一のオプションです。

11
CommonsWare

各メニューを膨らませてスーパーに電話するのは素晴らしいことです!次に例を示します。

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.main, menu);
    getMenuInflater().inflate(R.menu.other, menu);
    return true;
}

スーパーが他のインフレーションの前後に呼び出すことでアイテムを追加する場合、またはそれらのアイテムを無視するためにまったく呼び出さない場合は、順序を制御できます。

54
azelez