Android toolbar menu is not showing
Solution 1
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);
}
Solution 2
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 below:
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);
toolbar.showOverflowMenu();
Solution 3
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
Solution 4
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;
}
Solution 5
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"
Procurares
Updated on January 19, 2022Comments
-
Procurares over 2 years
I'm trying to add a menu to the ToolBar.
onCreateOptionsMenu
method of myActivity
is called, but no menu appears.This is dashboard.xml (from menu folder)
<?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 usingappcompat-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); }
-
pablisco over 9 yearsNot entirely true, the library adds the toolbar if not present and the right theme is used
-
Akash over 9 yearsCheck this one stackoverflow.com/questions/26638089/…
-
cimenmus about 8 yearsit is correct. i had the same problem. i did you said and it solved
-
Jan Šimek about 8 yearsIt does work indeed, but why? What is the purpose of
inflate()
? The official documentation doesn't even mention this. -
Vinay Bhargav about 8 yearsIt could be just overlapping color problem. If your toolbar is black color and the menu text is also in black color, you can't really see it. Even overflow menu icon was also black :D (It happened in my case). Further dismay- if there are only one or two menu options, even menu button does not seem to work (because menu is already present in toolbar)
-
Adnan Ali about 8 yearsit will continuously create when ever it is clicked,So use this @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
-
Dinesh almost 8 yearsthanks Bro it was surprisingly acting. fabulous +1 for you
-
kingston over 7 yearsDo you really call super.onCreateOptionsMenu(menu) and not super.onPrepareOptionsMenu(menu)?
-
Antroid about 7 yearsi had everything set up but didnt use setSupportActionBar(ToolBar); introducing setSupportActionBar made the action button show up
-
kostyabakay almost 7 yearsIt will loop the options menu
-
Nicks over 6 yearsThanks you save my hours :)
-
Inder almost 6 yearskindly consider adding more information in your answer
-
Subhasmith Thapa about 5 yearsThanks. Saved my time
-
RandomEngy over 4 yearsShould be returning "true" at the end: developer.android.com/guide/topics/ui/menus
-
RandomEngy over 4 yearsShould be returning "true" at the end: developer.android.com/guide/topics/ui/menus . Also the recommendation is to override onCreateOptionsMenu instead of onPrepareOptionsMenu.
-
mufazmi about 4 yearsnope, when you do this, and error will be show you.