android – Overriding onOptionsItemSelected from SherlockFragmentActivity-ThrowExceptions

Exception or error:

Yesterday, I found a great library that allowed me to have a “facebook menu” with a button on the top left of an action bar which, when pressed, would slide in a menu of items from the left.

The problem is that I wish to make use of the ActionBarSherlock library as well to make sure that my application is backwards compatible with the action bar. When using the library I, among other things, need to override onOptionsItemSelected as such :

@Override
public boolean onOptionsItemSelected(MenuItem item) 
{
    int id = item.getItemId();

    if (id == android.R.id.home) {

        rbmView.toggleMenu();

        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

Now I went into the library and saw that the developer had made onOptionsItemSelected final. I removed it and tried overriding it again only to find that the product was that whenever I press the button nothing happens. Nothing at all.

Any idea on how I would go about using the darvds_ribbonmenu library along with actionbarsherlock?

How to solve:

Turns out that when using ABS you will need to specify the namespace of MenuItem to make sure that you’re overriding the correct method. My solution was as follows :

@Override
public boolean onOptionsItemSelected(com.actionbarsherlock.view.MenuItem item) 
{
    int id = item.getItemId();
    Log.d("item ID : ", "onOptionsItemSelected Item ID" + id);
    if (id == android.R.id.home) {
        rbmView.toggleMenu();

        return true;

    } else {
        return super.onOptionsItemSelected(item);
    }
}

###

Change import android.view.MenuItem; to import com.actionbarsherlock.view.MenuItem;. Otherwise, you’re just using an entirely different MenuItem than the one you’re importing.

Leave a Reply

Your email address will not be published. Required fields are marked *