По неизвестной причине когда-то мой фрагмент показывает пункты меню, принадлежащие другому фрагменту.Фрагмент отображает неправильные пункты меню
У меня есть один деятельность с обычаем обратно стека для поддержания правильного потока с помощью:
Map<Integer, List<Fragment>> fragmentStack = new HashMap<>();
Таким образом, каждая «закладка» имеет свой собственный backstack. Я переключение между фрагментами с:
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, fragment)
.commitNow();
Фрагменты сохраняются в карте, поэтому при переходе к существующему фрагменту Я использую его уже инициализирована вид.
Иногда, когда я переключаюсь с одного фрагмента на второй фрагмент, второй фрагмент отображает пункты меню из ранее созданного фрагмента в стеке, несмотря на то, что onCreateOptionsMenu правильно вызывается во втором фрагменте.
Как преодолеть это нежелательное поведение?
Действия, которые ведут к нарушению этого правила:
1. Начиная с первой вкладки. Карта инициализирована на ключ 0, с List<fragment>
с одним фрагментом, который называется A. Затем этот фрагмент отображается. (фрагмент A имеет пункты меню)
2. Переход на вторую вкладку. Карта, инициализированная в ключе 1, с List<fragment>
с одним фрагментом, называемым B, этот фрагмент отображается (заменяя фрагмент A). В фрагменте B также есть пункты меню.
3. Переход к первой вкладке. Используется предыдущий фрагмент A, включая уже инициализированный вид (не раздувая новый).
4. Щелчок по чему-то с навигацией к новому фрагменту C, находящемуся на той же вкладке. фрагмент C добавляется в список фрагментов под ключом 0 карты. фрагмент C не имеет элементов меню.
5. Переход на вторую вкладку. Отображается предыдущий фрагмент B, но с пунктами меню фрагмента A!
Вы используете фрагменты в ViewPager? – rupinderjeet
@rupinderjeet Нет, я использую нижний навигационный вид –