2014-02-11 4 views
7

У меня есть активность, которая имеет 2 фрагмента.
1 фрагмент виден одновременно, и каждый фрагмент имеет другое меню опций.Различные меню для разных фрагментов

Я могу добиться такого поведения двумя разными способами.

1 - Я могу добавить другое меню для каждого фрагмента, вызвав onCreateOptionsMenu в каждом из них.
2 - я могу иметь только одно меню на уровне активности и может выбрать, чтобы показать конкретный вариант в onPrepareOptionsMenu

То, что я хочу знать:
Какой предпочтительный способ реализации этой функции?
Что рекомендуется?

ответ

3

Я бы воспользовался первым вариантом, так как наличие выделенного меню ресурсов для каждого фрагмента кажется более чистым, а также уменьшает сложность кода, который у вас будет, чтобы поддерживать то, что видно, а что нет (если вы пройдете через onPrepareOptionsMenu и код, чтобы скрыть & показать разные меню).

Если у вас есть какие-то действия в ваших фрагментах, вы можете создать базовый фрагмент, из которого будут выходить все ваши фрагменты.

7

Надеется, что это помогает

Добавления элементов в панели действий

Ваших фрагменты может вносить пункты меню к деятельности в Options меню (и, следовательно, Бар действий) по реализации onCreateOptionsMenu(). Однако для того, чтобы этот метод мог принимать вызовы, вы должны вызвать setHasOptionsMenu() во время onCreate(), чтобы указать, что фрагмент хотел бы добавить элементы в меню параметров (иначе фрагмент не получит вызов onCreateOptionsMenu()).

Любые предметы, которые вы добавляете в меню параметров из фрагмента, добавляются к существующим пунктам меню. Фрагмент также получает обратные вызовы onOptionsItemSelected(), когда выбран пункт меню.

Вы также можете зарегистрировать представление в макете фрагмента, чтобы предоставить контекстное меню, вызвав registerForContextMenu(). Когда пользователь открывает контекстное меню, фрагмент получает вызов onCreateContextMenu(). Когда пользователь выбирает элемент, фрагмент получает вызов onContextItemSelected().

http://developer.android.com/guide/components/fragments.html

Смежные вопросы