19

I have been trying to add a button to the SherlockActionBar but I can't get it working.

This is the code that I have:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        android.view.MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, (android.view.Menu) menu);
        return super.onCreateOptionsMenu(menu);
    }

This is my menu.xml code:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/save_button"
          android:title="i"
          android:showAsAction="always" />
</menu>

This doesn't work, as even if I press the menu button, nothing shows up. Is there any other way? Am I making any mistake?

H.Muster
  • 9,297
  • 1
  • 35
  • 46
noloman
  • 11,411
  • 20
  • 82
  • 129

2 Answers2

38

You are using Android's Menu and MenuInflater, but should be using the classes that come with ActionBarSherlock:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater();
   inflater.inflate(R.menu.menu, (com.actionbarsherlock.view.Menu) menu);
   return super.onCreateOptionsMenu(menu);
}

It seems like you are intermingling the two right now. Make sure that you import only com.actionbarsherlock.view.Menu and com.actionbarsherlock.view.MenuInflater, and not its Android counterparts. I recommend you to do something like the following:

import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;

...

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = getSupportMenuInflater();
       inflater.inflate(R.menu.menu, menu);
       return super.onCreateOptionsMenu(menu);
    }
hanspeide
  • 2,819
  • 4
  • 25
  • 33
  • this works fantastically, but, is it possible to have the button across all my activities and fragments in the application? – noloman Apr 23 '12 at 11:44
  • Yes. Make a base activity containing the onCreateOptionsMenu(...) above. Next extend this activity in the activities where you want the ActionBar to be visible. – hanspeide Apr 23 '12 at 11:50
19

I think in the menu.xml. Your item does not declare android:showAsAction attribute completely. You must declare it like this:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/save_button"
          android:title="i"
          android:showAsAction="always|withText" />
</menu>

Since you did not specify any icon for the item action bar cannot display any item. By default icon are display than text.

Joey
  • 695
  • 6
  • 19
  • 1
    thanx!exaclty was i was looking!! ps remove spaces ("always|withText") – Paschalis Jul 16 '12 at 01:41
  • using both the accepted answer (by hanspeide) and this answer, got the end result of having an actionbar with an icon on it. Thanks ! – Muzikant Jul 19 '12 at 07:56