Фрагмент не раздувает меню после инициализации панели инструментов поддержки действий - PullRequest
0 голосов
/ 30 января 2019

У меня есть активность в appcompat без темы панели действий.Я запускаю фрагмент внутри действия, чтобы отобразить список элементов.Элементы отображаются в двух режимах: список и удаление.Когда экран открывается, он всегда находится в режиме списка.Панели действий отличаются в двух режимах отображения.В режиме списка в панели действий у меня есть два пункта меню с правой стороны, которые отображаются, когда фрагмент открывается на время.Когда я возвращаюсь из режима удаления в режим списка, пункты меню тогда не раздуваются.Как сделать так, чтобы пункты меню увеличивались при переходе из режима удаления в режим списка.

После входа в экран пользователь переходит в режим списка.У меня есть setHasOptionMenu (правда);в моем фрагменте.Поэтому onCreateOptionMenu и onPrepareOtionsMenu оба вызываются, и оба пункта меню надуваются должным образом.

Когда я переключаюсь из режима списка в режим удаления (что происходит, когда вы нажимаете на элемент меню удаления, отображаемый на панели действий навверху слева), я надуваю новый пользовательский вид и удаляю все виды с панели инструментов, а затем добавляю этот пользовательский вид на панель инструментов, чтобы изменить панель действий в соответствии с режимом удаления:

View customView = LayoutInflater.from(getActivity()).inflate(
R.layout.delete_mode_toolbar_layout, null);
Toolbar toolbar = mActionBarHelper.getToolbar();
toolbar.removeAllViews();
toolbar.addView(customView);

И этоработает совершенно нормально с режимом удаления.

Но теперь, когда я возвращаюсь в режим списка, я снова делаю то же самое.

View customView = LayoutInflater.from(getActivity()).inflate(R.layout.list_mode_toolbar_layout,null);
Toolbar toolbar = mActionBarHelper.getToolbar();
toolbar.removeAllViews();
toolbar.addView(customView);
Objects.requireNonNull((AppCompatActivity)getActivity()).supportInvalidateOptionsMenu();

Но на этот раз в режиме списка действиеПанель отображается правильно в соответствии с пользовательской панелью инструментов в режиме списка, и вызываются oncreateoptionsmenu и onprepareoptionsmenu.Но пункты меню не завышены.

Извините, но из-за некоторых ограничений это весь код, которым я могу поделиться.Пожалуйста, прокомментируйте свои сомнения, я могу попытаться очистить их в комментариях.

Поэтому, пожалуйста, кто-то может помочь мне понять, почему пункты меню не раздуваются после возврата из режима удаления в режим списка.

Заранее спасибо.

1 Ответ

0 голосов
/ 30 января 2019

Я нашел решение, которое является решением моей ситуации, но не решением моего вопроса.

Теперь при переходе из списка в режим удаления сначала спрячьте макет настраиваемой панели инструментов в режиме списка, уже присутствующий впанель инструментов (сохраняя ссылку на макет панели инструментов в режиме списка), затем накачайте макет панели инструментов режима удаления и добавьте его на панель инструментов с помощью toolbar.addView (view).Теперь, возвращаясь в режим списка снова из режима удаления, просто удалите пользовательский макет панели инструментов удаления с панели инструментов, используя toolbar.removeView (просмотр), а затем сделайте видимым макет панели инструментов режима списка, уже присутствующий на панели инструментов.

...