Меню панели инструментов Android не отображается

Я пытаюсь добавить меню в ToolBar. onCreateOptionsMenu метод моей Activity вызывается, но меню не отображается.

Это dashboard.xml (из папки меню)

 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context="com.app.android.ui.dashboard.DashboardActivity"> <item android:id="@+id/action_scan_qr" android:icon="@drawable/ic_drawer" android:title="@string/menu_scan_qr" app:showAsAction="always" /> </menu> 

ПРИМЕЧАНИЕ: значок этого меню более темный, чем цвет фона панели действий, поэтому он должен быть видимым.

Надувное меню в действии:

 public class DashboardActivity extends ActionBarActivity { @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.dashboard, menu); return true; } 

И основная тема для приложения:

 <style name="Theme.Application.Base" parent="Theme.AppCompat.Light"> <item name="colorPrimary">@android:color/white</item> <item name="colorPrimaryDark">@android:color/white</item> <item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="drawerArrowStyle">@style/Theme.Application.DrawerArrowStyle</item> <item name="android:textColorSecondary">@android:color/darker_gray</item> </style> 

Почему onCreateOptionsMenu но меню не отображается. Я использую appcompat-v7:21.0.3

РЕДАКТИРОВАТЬ:

  @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getContentViewId()); toolbar = (Toolbar) findViewById(R.id.tool_bar); if (toolbar == null) { throw new Error("Can't find tool bar, did you forget to add it in Activity layout file?"); } setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } 

Solutions Collecting From Web of "Меню панели инструментов Android не отображается"

Я не уверен, почему, но когда я помещаю все связанное меню, раздутое в методе onPrepareOptionsMenu, все работает нормально.

 @Override public boolean onPrepareOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.dashboard, menu); return super.onCreateOptionsMenu(menu); } 

Я также столкнулся с той же проблемой, но фактическая ошибка была, я забыл ввести панель инструментов в java-активность

В разделе AppCompactActivity , в разделе «Метод создания» определите свою панель инструментов по id и вызовите setSupportActionBar(ToolBar);

Пример:

 public class secondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); 

Попробуйте следующее:

 <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" tools:context="com.example.lolipoptest.MainActivity" > <item android:id="@+id/action_settings" android:orderInCategory="100" android:showAsAction="never" android:title="@string/action_settings"/> </menu> 

И Java-код:

 @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } 

У вас есть панель инструментов в макете вашей панели? Вызовите setSupportActionBar (панель инструментов) в своей деятельности. Используйте тему Theme.AppCompat.NoActionBar для действий (если вы используете в ней панель инструментов)

 import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.Toolbar; import android.view.Menu; public class DashboardActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.dashboard, menu); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 

Проверьте свои стили.

 <resources> <!-- Base application theme. --> <style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="android:windowBackground">@color/white</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme" parent="AppTheme.Base"> </style> <style name="ToolbarTheme" parent="AppTheme" > </style> <color name="light">#FFBB33</color> <color name="colorPrimary">#FFBB33</color> <color name="textColorPrimary">#FFBB33</color> <color name="colorPrimaryDark">#FF8800</color> <color name="colorAccent">#ff9977</color> <color name="white">#ffffff</color> </resources> 

Проверьте свой макет.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize" app:titleMarginStart="20dp" android:paddingRight="10dp" android:background="@color/colorPrimaryDark" app:theme="@style/ToolbarTheme" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="15dp" android:text="Hello Toolbar" /> </LinearLayout> 

Добавить тему в вашу активность в манифесте

 android:theme="@style/AppTheme" 

Попробуйте изменить:

  .... xmlns:app="http://schemas.android.com/apk/res-auto" > .... app:showAsAction="ifRoom" 

чтобы:

  .... xmlns:yourapp="http://schemas.android.com/apk/res-auto" > .... yourapp:showAsAction="ifRoom" 

https://developer.android.com/training/basics/actionbar/adding-buttons.html

Если вы используете Toolbar вам нужно установить ее как панель действий поддержки в onCreate :

setSupportActionBar(toolbar);

Вы, ребята, делаете это неправильно. Вам нужно раздуть ваше меню в onCreateOptionsMenu активности:

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

Проблема решена, когда я изменил ее на приложение: showAsAction для android: showAsAction

Если вы раздуваете свое меню из фрагмента, например, переопределяя метод onCreateOptionsMenu , обязательно вызовите setHasOptionsMenu(true) в onCreateView вашего фрагмента