Подтвердить что ты не робот

Использование `onPrepareOptionsMenu()` на Android 3.0+

Мне любопытно, как (если вообще) onPrepareOptionsMenu(Menu) (и по расширению, onPreparePanel(int, View, Menu)) используется на Android 3.0+ при настройке API 11 или выше.

Мое мышление выглядит следующим образом:

An Activity ActionBar получает свое содержимое от onCreateOptionsMenu(Menu), где вы можете раздувать ресурс меню XML, добавлять элементы напрямую или какую-то их комбинацию. Любые фрагменты активности также получат этот вызов и имеют возможность сделать то же самое.

Чтобы обновить элементы в ActionBar, вы можете либо удержать экземпляр Menu, либо вызвать invalidateOptionsMenu(), который затем завершится снова вызывая onCreateOptionsMenu(Menu).

Таким образом, существует onPrepareOptionsMenu(Menu), а затем только вокруг для поддержки устаревших приложений, которые не нацелены на API 11 или новее?

Вызывает ли вызов getActionBar().hide() и getActionBar().show() вызов onPrepareOptionsMenu(Menu)?

Может ли это добавить или удалить фрагмент?

4b9b3361

Ответ 1

Из моего обширного тестирования это странно кажется, что оно работает точно так же, как и в версиях версии до 3.0, только при вызове при открытии меню переполнения. Обратный вызов не запускался ни в одном из событий, перечисленных в исходном вопросе.

Возможно, очевидный, но заслуживающий внимания факт: в этом обратном вызове доступно все меню, поэтому возможно манипулирование элементами, видимыми на панели действий, в меню переполнения и/или скрытом.

Ответ 2

Sice У меня недавно были схожие вопросы и напутал этот, я хотел бы добавить для более поздних читателей: Да, onPrepareOptionsMenu все еще работает. Однако вы должны просто вызвать стандартную реализацию для сотовых устройств (т.е. If (android.os.Build.VERSION.SDK_INT >= 11) вернуть super.onPrepareOptionsMenu(меню);) и использовать invalidateOptionsMenu() (при необходимости, при отражении) и onCreateOptionsMenu() вместо, esp. при использовании showAsAction. В противном случае меню не будет обновляться до его открытия. Например, если вы добавляете некоторые записи, когда элемент выбран, элементы будут волшебным образом отображаться на панели действий при открытии меню, а не при выборе элемента. То же самое относится к отмене выбора и скрытию пунктов меню.