Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Adding a button to the ActionBar with ActionBarSherlock

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?

like image 905
noloman Avatar asked Apr 23 '12 10:04

noloman


2 Answers

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);
    }
like image 148
hanspeide Avatar answered Oct 20 '22 18:10

hanspeide


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.

like image 37
Joey Avatar answered Oct 20 '22 19:10

Joey