You can do something like this to code for both versions:
/**
* Sets the Action Bar for new Android versions.
*/
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void actionBarSetup() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
ActionBar ab = getActionBar();
ab.setTitle("My Title");
ab.setSubtitle("sub-title");
}
}
Then call actionBarSetup()
in onCreate()
. The if
runs the code only on new Android versions and the @TargetApi
allows the code to compile. Therefore it makes it safe for both old and new API versions.
Alternatively, you can also use ActionBarSherlock (see edit) so you can have the ActionBar on all versions. You will have to do some changes such as making your Activities extend SherlockActivity
and calling getSupportActionBar()
, however, it is a very good global solution.
Note that when this answer was originally written, ActionBarSherlock
, which has since been deprecated, was the go-to compatibility solution.
Nowadays, Google's appcompat-v7
library provides the same functionality but is supported (and actively updated) by Google. Activities wanting to implement an ActionBar
must:
AppCompatActivity
Theme.AppCompat
derivativeTo get an ActionBar
instance using this library, the aptly-named getSupportActionBar()
method is used.