Как включить общий пункт меню в несколько меню в меню Android XML? - PullRequest
27 голосов
/ 02 декабря 2010

Во многих меню всегда один и тот же элемент для всех.

Есть ли способ определить этот элемент как дополнительное меню и включить его во все остальные?

Что-то вроде этого:

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лучше.

Ответы [ 2 ]

50 голосов
/ 10 февраля 2011

Раздувание каждого меню и обращение к супер работает отлично! Вот пример:

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

Вы можете контролировать порядок, если super также добавляет больше предметов, вызывая его до / после других раздутий или вообще не вызывая его, чтобы игнорировать эти предметы.

11 голосов
/ 02 декабря 2010

AFAIK, <include> работает только для разметки XML, а не для меню XML, хотя вы, безусловно, можете попробовать.Не имея этого, программный параметр (раздувающий оба XML-файла меню) - единственный вариант, который мне известен.

...