У меня есть Fragment
внутри Activity
. Эта OptionsMenu
содержит OptionsMenu
.
Я использую FragmentTransaction
для запуска нового экземпляра того же класса Fragment, когда я выбрал OptionsMenu
, он отображается в double, потому что он загружается дважды.
Как я могу сделать, чтобы управлять OptionsMenu между фрагментами
Благодарю.
PS: Извините за английский
Я нахожу решение,
Я создаю OptionsMenu только в Activity. Я также получаю OptionsItemsSelected в Activity.
Когда onOptionsItemSelected() происходит, я получаю текущий фрагмент следующим образом:
FragmentManager fg = getSupportFragmentManager();
Fragment frag = fg.findFragmentById(R.id.fragmentMap);
Все мои фрагменты имеют одинаковый идентификатор, но я всегда получаю Фрагмент сверху. Тогда я могу позвонить:
frag.onOptionsItemSelected(item);
для получения фрагмента, и мой пользовательский интерфейс правильно обновляется.
Я надеюсь, что это помогает.
Попробуйте сыграть с setHasOptionsMenu(boolean)
в ваших расширяющихся классах Fragment
, если для этого параметра установлено значение true, FragmentManager
должен автоматически вызывать ваш текущий фрагмент onOptionsItemSelected
, он установлен в false, вы можете вручную вызвать эти обратные вызовы самостоятельно в своей Activity onOptionsItemSelected
.
Работал для меня... :)
Такой путь нет. Вы можете обращаться с BackPressed и показать свое собственное меню в виде новой fragmnet. Или управляйте своим меню параметров внутри бездействия FragmentTransaction в зависимости от вашего класса и содержимого фрагмента