Options menu not showing in ICS using compatibility library

Martyn picture Martyn · Dec 1, 2011 · Viewed 15.9k times · Source

I can't get an options menu to show in a Fragment in ICS in a project which uses the android-support-v4.jar library. I'm testing on a Galaxy Nexus handset.

We aren't using the action bar, and need the app to be 2.2+ compatible. We aren't seeing any options menu in the activity in ICS (the FragmentActivity doesn't support onCreateOptionsMenu)

I can get menus working in previous version of Android - I have all the correct framework to enable the options menu (as below) but nothing shows in ICS. When stepping through the code the onCreateOptionsMenu doesn't get called. Can anyone suggest a fix?

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;

public class SuperFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        setHasOptionsMenu(true);
        super.onCreate(savedInstanceState);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.display_options_actions, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.menu_sign_in:
                break;
            case R.id.menu_sign_out:
                break;
        }
        return true;
    }
    // ...
}

Target OS version in the manifest file:

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="14"/>

Answer

Martyn picture Martyn · Dec 2, 2011

Removing android:targetSdkVersion="14" from the manifest enables the options menu button again.

This is because I had a theme of @android:style/Theme.Black.NoTitleBar specified in my manifest - with the android:targetSdkVersion of 14, the options menu is being inserted in to the action bar menu, as opposed to the options menu button in the button bar at the bottom of the screen and the theme is removing the activity title, and the action bar.

The action bar can be removed, although I'm not sure if this will fix the issue as I'm yet to get it working so that it's compatible across versions 2.2 - 4.