2014-01-14 5 views
1

Я прочитал несколько сообщений о проблемах меню параметров Android, но никто не помогает мне решить эту проблему.Меню Android ActionBar не перерисовывает пункты меню

Android версии: API 15 & API 16

Использование ActionBarCompat поддержка библиотеки

У меня есть фрагмент пейджера с 2 фрагментами. Фрагмент «Подробности» отобразит/спрячет кнопки на основе определенного флага. Когда я впервые загружаю экран, пункты меню отображаются соответствующим образом. Когда я предпринимаю некоторые действия и вернусь к экрану, мое меню не похоже, что в нем есть элементы, но есть разделительная панель. Не отображаются кнопки (хотя они должны быть). Если я перейду на другую вкладку и перейдя непосредственно на вкладку «Подробности», кнопки появятся так, как ожидалось.

enter image description here

Я освежающие пункты меню в другом месте в моем приложении без проблем - с помощью SupportInvalidateOptionsMenu, HasOptionsMenu = True, menu.Clear() во время OnCreateOptionMenu и т.д. и т.п.

  1. Почему не меню. Clear() на самом деле расчистки моего меню
  2. Почему не являются пунктами меню, но если я просто уйду, а затем обратно (который вызывает только/OnPrepareOptionsMenu обратных вызовов OnCreateOptionsMenu), они

Примечание - пункты меню показать, как ожидается, на API 17+

+0

Почему вам нужна поддержка V7 для API 15 и выше? InvalidateOptionsMenu должен вызывать OnPrepareOptionsMenu, так что скрывайте или удаляйте его. – Cheesebaron

+0

Вызов InvalidateOptionsMenu вызывает OnPrepareOptionsMenu ... Я ударил точки останова там, мое значение _visible toggle верное, но когда метод обратного вызова завершается, видимость элемента меню не изменяется. – chrisriesgo

ответ

1

В конце концов, у меня было две проблемы, и не осознают этого.

  1. Мой AVD был плохим (что заставило мое меню иметь странные промежутки в нем - как показано на рисунке выше). Как только я удалил AVD и построил новый, я смог увидеть некоторые пункты меню, хотя кнопка «Сохранить» все равно не будет повторно рисовать
  2. Существует проблема с синхронизацией между моментами, когда InvalidateOptionsMenu пытался выполнить и когда мой ViewPager пытался рисовать себя и отправлять свои собственные Invalidate-вызовы.

Эта ссылка привела меня к правильному ответу:

https://code.google.com/p/android/issues/detail?id=29472

Особенно комментарии # 8 и # 20

 Смежные вопросы

  • Нет связанных вопросов^_^