Активность и все фрагменты внутри нее используют один и тот же экземпляр Menu
. Поэтому независимо от того, где вы вызываете метод clear()
, все элементы будут удалены.
Элементы меню, используемые для всех дочерних фрагментов, должны быть созданы внутри Activity
. Фрагмент-специфичные опции должны быть созданы внутри соответствующего фрагмента. В идеале у вас не должно быть дублированных пунктов меню. Если два фрагмента имеют один и тот же элемент меню, а третий - нет, предпочтительнее создать элемент меню внутри каждого фрагмента, а не один элемент меню внутри действия При таком подходе вы не получите дубликаты.
Но если вы хотите просто удалить дубликаты, вы можете использовать метод menu.removeItem(itemId)
. Также вы можете скрыть лишний элемент с помощью menuItem.setVisible(false)
.