
In my application I am using the new Action Bar Compatibility sample from Google (located at <sdk>/samples/android-<version>/ActionBarCompat) which works great. The only problem I have is applying this to my PreferenceActivity in order to get a screen like the settings in the Android Market (see picture).
To fill the ActionBar with icons, each Activity must extend the ActionBarActivity class. The problem is that my Activity already extends PreferenceActivity and in Java classes can not extend more than one class.
There must be a way to get the ActionBar together with a PreferenceScreen. I would be glad if anybody could provide a solution for this common issue.
P.S.: A solution like in How to add a button to PreferenceScreen does not fit because the ActionBar is actually the title bar and so this is more a Java than a layout thing.
Edit: My answer below is rather hacky and it seems like it is now outdated (for pre Android 3.0) Have a look at the other answers for less hacky and more current solutions ~pyko 2014-09-01
I managed to get it working – not sure if this is the nicest/cleanest solution, but it works.
Had to make the following changes:
Make a copy of
ActionBarActivityand have the new class extendPreferenceActivityModify
onCreate()inActionBarHelperBase.javaslightly – make a special case forPreferenceActivityclassesHave your PreferenceActivity extend this class and add request for
FEATURE_CUSTOM_TITLEbefore you callsuper.onCreate()As far as I can tell, changes 2 and 3 are needed because for
PreferenceActivity:I guess the order of how components in
PreferenceActivityactivities are created is different to plainActivityactivities .