Android toolbar menu is not showing

I’m trying to add a menu to the ToolBar.
onCreateOptionsMenu method of my Activity is called, but no menu appears.

This is dashboard.xml (from menu folder)

  • Android layout with 2 evenly spaced Buttons
  • Android available mime-types?
  • Passing JSONObject into another activity
  • Android app crashes with SIGABRT Signal 6 only while Eclipse debugging
  • Android : detect click event at empty space of gridview inside linearlayout
  • LayoutTransition: Animate View next to an expanding View
  • <?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>
    

    NOTE: icon of this menu is darker than the background color of the action bar, so it should be visible.

    Inflating menu in Activity:

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

    And the main theme for the application:

    <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>
    

    Why onCreateOptionsMenu is called but menu doesn’t appears. I’m using appcompat-v7:21.0.3

    EDIT:

        @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);
        }
    

    Related posts:

    Why doesn&#039;t RecyclerView have onItemClickListener()?
    Upload multiple files on android using &lt;input type=&ldquo;file&rdquo; multiple /&...
    Retrofit SocketTimeOutException in sending multiparty or JSON data in android
    Trouble with Native OpenGL Renderer
    Permanent audio stutter on LGE Nexus 4 with the Deezer Android SDK
    Android:How To Get Media Recorder Output In MP3 Format?
  • Android service onCreate is called multiple times without calling onDestroy
  • Custom Fonts in Android
  • Android: Is there an idiom for Iterating through a SparseArray
  • How to obtain Signing certificate fingerprint (SHA1) for OAuth 2.0 on Android?
  • How can I get the dreaded WRITE_SECURE_SETTINGS permission for my android app?
  • Android ListView and OnClickListener: How to get the selected item
  • 9 Solutions collect form web for “Android toolbar menu is not showing”

    I’m not sure why, but when i place everything related menu inflating in onPrepareOptionsMenu method, everything works fine.

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

    I was also facing the same problem, but the actual error was, i forgot to introduce toolbar in java activity

    under AppCompactActivity, under on create method define your toolbar by id and call setSupportActionBar(ToolBar);

    Example is bellow:

    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);
    

    Try the following:

    <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>
    

    and the Java Code:

    @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;
    }
    

    Do you have Toolbar in your dashboard layout ?. Call setSupportActionBar(toolbar) in your activity. Use Theme.AppCompat.NoActionBar theme for the activities (If you are using toolbar in it)

    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);
    }
    }
    

    Check your styles.

    <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>
    

    Check your layout.

    <?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>
    

    Add theme in your activity in manifest

    android:theme="@style/AppTheme"
    

    Try changing:

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

    to:

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

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

    If you’re using a Toolbar you need to set it as the support action bar in onCreate:

    setSupportActionBar(toolbar);

    you guys are doing it wrong. you need to inflate your menu in onCreateOptionsMenu of the activity:

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

    The issue is resolved when I changed it to app:showAsAction to android:showAsAction

    If you are inflating your menu from a fragment, e.g. by overriding onCreateOptionsMenu method, make sure to call setHasOptionsMenu(true) in onCreateView of your fragment

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.