я видел несколько сообщений о вопросах, где openOptionsMenu() не будет работать на разных версиях Android, например:openOptionsMenu() не будет работать AppCompat-v7 22.1.0 или более поздняя версия
openOptionsMenu() across android versions
но проблема, которая, как мне кажется, связана с версией используемой библиотеки поддержки appcompat-v7.
В сущности, с новыми версиями AppCompat-v7 меню появится хорошо, когда openOptionsMenu() вызывается, если ваша деятельность распространяется активность но не будет работать, если вы расширяете ActionBarActivity или AppCompatActivity (т.е. использовать библиотеку совместимости). В более старых версиях appcompat-v7 он отлично работает.
Это воспроизводимым, следующим образом:
- В Android Studio, Import Sample 'ActionBarCompat-Basic'
- Добавить кнопку на экране, которая вызывает openOptionsMenu()
- Обратите внимание, что это отлично работает, поскольку в образце используется старая версия библиотеки appcompat-v7: 21.0.3.
- Измените зависимость для использования appcompat-v7: 23.0.1, перестройте, а при нажатии на кнопку меню будет не.
- Изменение основной деятельности продлить активность (т.е. не приложение совместимости) - это работает
- Изменение основной деятельности для расширения AppCompatActivity (т.е. с использованием libarry совместимости приложений) - он не
После некоторого тестирования я «Мы обнаружили, что это перестало работать в appcompat-v7: 22.1.0 и больше не будет работать ни в одной новой версии этой банки.
Это поведение идентично на эмуляторе и на физическом устройстве, а также на версиях 5.1.1 (23) и 2.1 (7) Android, которые были двумя версиями, с которыми я тестировал.
Я добавил комментарий к этой ошибке: Android issue tracker bug
Любые предложения, идеи или обходные оценили!
-Стив
Я испытываю такую же ошибку :( –