Принудительная кнопка меню переполнения на Android

Я разрабатываю приложение для Android 4.0.3. У меня есть несколько фрагментов, и на каждом из них отображается один пункт меню. Я хочу иметь кнопку переполнения меню, которая будет иметь 2 пункта меню. Как принудительно отобразить всплывающее меню и добавить в него пункты меню? Я добавляю пункты меню, вызывая функцию onCreateOptionsMenu в каждом фрагменте.

Любая помощь будет оценена по достоинству. Спасибо!


person RagHaven    schedule 01.06.2012    source источник
comment
В чем конкретно проблема, с которой вы столкнулись?   -  person CommonsWare    schedule 01.06.2012
comment
Я не могу понять, как принудительно отобразить кнопку меню переполнения.   -  person RagHaven    schedule 01.06.2012
comment
Не все устройства будут отображать кнопку на экране. Устройства или эмуляторы со специальной кнопкой МЕНЮ используют ее вместо экранной кнопки, поскольку именно к ней привыкли пользователи этих устройств.   -  person CommonsWare    schedule 01.06.2012
comment
ОБНОВЛЕНИЕ: Начиная с KitKat (4.4), устройства будут отображать кнопку переполнения на экране независимо от того, есть ли у них физическая кнопка меню. Конечно, это не помогает для более ранних версий Android, но, к вашему сведению, это, по крайней мере, забавный факт.   -  person Carl    schedule 24.03.2014


Ответы (1)


Чтобы принудительно войти в меню переполнения, сделайте следующее:

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
   menu.add(0, 2, 0, "Item 1").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

   return true;
}

SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW заставит элемент либо:

Android 3.0 + : панель действий в виде переполнения Android 2.3 - : кнопка меню

Если вы хотите воссоздать меню, вам нужно будет вызвать invalidateOptionsMenu(); Это будет воссоздано из OnCreateOptionsMenu.

person Tony    schedule 01.06.2012
comment
Я уже пробовал это, и это не сработало. Кнопка переполнения меню не была видна на эмуляторе. - person RagHaven; 01.06.2012
comment
Я внес изменения в свой исходный вопрос и добавил свой код, чтобы вы могли видеть, что я именно делаю. После добавления вышеуказанного кода, который вы упомянули, я все еще не могу принудительно отображать меню переполнения. - person RagHaven; 01.06.2012
comment
Commonsware прав. Эмулятор не показывает кнопку переполнения, но на моем планшете она есть. Спасибо за помощь! - person RagHaven; 01.06.2012
comment
Ваш планшет, вероятно, показывает кнопку переполнения, потому что у него нет физической кнопки меню. - person Carl; 24.03.2014