Intereting Posts
Android objectAnimator animate backgroundColor of Layout Разница между проектом чистого проекта и восстановлением в студии Android Страница разработчика Android: понимание примера профилирования traceview Считывать и записывать данные с помощью GSON Почему андроид logcat не показывает трассировку стека для исключения во время выполнения? Реализовать AsyncTask в Fragment android Android: как использовать «adb shell wm» для имитации других устройств ToneGenerator очень сильно замедляет приложение Значок приложения Android не отображается Определение XML-родительского стиля градиента / формы / углов Что такое файл boot.img в android? Динамически изменить раскладку строк в ListView Расширение RelativeLayout и переопределение dispatchDraw () для создания масштабируемой ViewGroup Храните соединение XMPP (используя asmack) в режиме реального времени на Android Android Возможно ли разместить шаблон ограничения внутри ScrollView

OnCreateOptionsMenu никогда не называется

У меня возникли проблемы с выбором меню опций, работающим в Android. Я создавал приложения раньше, и все они отлично работали, но теперь меню просто не появляется.

Код:

@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.activity_video, menu); return true; } 

Весь метод никогда не называется (проверяется установкой точки останова). Активность суперпростая, у нее просто есть VideoView , с набором OnTouchListener .

Я использую Android 4.0.4 на Samsung Galaxy 10.1, уровень API 15, minSDK 15. Я что-то упустил?

Solutions Collecting From Web of "OnCreateOptionsMenu никогда не называется"

Если на телефоне, на котором вы тестируете, есть кнопка меню onCreateOptionsMenu, которую не будет вызывать при запуске с темой:

android:theme="@android:style/Theme.Black.NoTitleBar"

Но когда вы нажимаете кнопку меню, onCreateOptionsMenu . Я не знаю, что происходит на телефонах без аппаратных кнопок …

setHasOptionsMenu функцию onCreate из onCreate . onCreateOptionsMenu будет автоматически вызван.

В последних версиях Android при использовании библиотеки совместимости для панели инструментов очень часто случается, что для отображения элементов меню на панели инструментов вы должны сделать следующее:

 mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); 

В методе: Fragment#onCreateView(...) вы должны поставить:

 setHasOptionsMenu(true); 

Затем будет вызван ваш метод.

У меня была такая же проблема (меню не отображается, onCreateOptionsMenu не onCreateOptionsMenu ).

Если вы вызываете это внутри фрагмента, вам необходимо переопределить public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) не public boolean onCreateOptionsMenu(Menu menu) . Fragments не используют последнее, поэтому они даже не назовут его.

Меню активности

Меню фрагментов

Возможно, вы также переопределили методKeyDown и сделали его всегда верным . Возвращение true означает, что keyEvent будет предотвращено дальнейшее распространение. См. Следующий код:

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { /* handling event */ return true; //onCreateOptionsMenu won't be invoked. } 

Я была такая же проблема. Моя проблема была решена путем наследования другого класса активности.

Так я и делал:

Открытый класс WelcomeActivity расширяет активность

Но изменил это на:

Открытый класс WelcomeActivity расширяет AppCompatActivity

Таким образом, я говорил, что в вашу деятельность можно добавить панель действий.

Try This Это работает для меня: —

 @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); getMenuInflater().inflate(R.menu.home_page_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_delete: Toast.makeText(this, "You pressed the Delete!", Toast.LENGTH_LONG).show(); break; case R.id.menu_setting: Intent intent=new Intent(HomePage.this,Setting.class); startActivity(intent); finish(); Toast.makeText(this, "You pressed the Setting!", Toast.LENGTH_LONG).show(); break; } return super.onOptionsItemSelected(item); }