Search code examples
androidactionbarsherlockandroid-actionbar

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?


Solution

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