Дублирование меню Android исправлено с помощью clear, но оно очищает родительское меню активности - PullRequest
0 голосов
/ 22 марта 2019

Я создал другой фрагмент и заполнил меню на основе фрагмента. Я получал дубликаты пунктов меню, поэтому я использовал clear, как предлагалось, различные сообщения stackoveflow, но проблема в том, что когда я использую clear in фрагмента, он также очищает основные пункты меню деятельности.

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Когда я переключаюсь между фрагментами, я получаю дублированное меню

Возможно, у вас есть два активных фрагмента одновременно. Это может быть при использовании метода add вместо replace.

0 голосов
/ 23 марта 2019

Активность и все фрагменты внутри нее используют один и тот же экземпляр Menu. Поэтому независимо от того, где вы вызываете метод clear(), все элементы будут удалены.

Элементы меню, используемые для всех дочерних фрагментов, должны быть созданы внутри Activity. Фрагмент-специфичные опции должны быть созданы внутри соответствующего фрагмента. В идеале у вас не должно быть дублированных пунктов меню. Если два фрагмента имеют один и тот же элемент меню, а третий - нет, предпочтительнее создать элемент меню внутри каждого фрагмента, а не один элемент меню внутри действия При таком подходе вы не получите дубликаты.


Но если вы хотите просто удалить дубликаты, вы можете использовать метод menu.removeItem(itemId). Также вы можете скрыть лишний элемент с помощью menuItem.setVisible(false).

...