次のようなことを行って、両方のバージョンのコードを作成できます。
/**
* 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");
}
}
次に、を呼び出しactionBarSetup()
ますonCreate()
。はif
、新しいAndroidバージョンでのみコードを実行し@TargetApi
、コードをコンパイルできるようにします。したがって、古いAPIバージョンと新しいAPIバージョンの両方で安全になります。
または、 ActionBarSherlock(編集を参照)を使用して、すべてのバージョンでActionBarを使用することもできます。SherlockActivity
アクティビティを拡張したり呼び出したりするなど、いくつかの変更を行う必要がありますgetSupportActionBar()
が、これは非常に優れたグローバルソリューションです。
編集
この回答が最初に作成されたときActionBarSherlock
、それ以降は非推奨になりましたが、互換性の解決策として利用できることに注意してください。
現在、Googleのappcompat-v7
ライブラリは同じ機能を提供していますが、Googleによってサポートされています(そして積極的に更新されています)。マストを実装したいアクティビティActionBar
:
- 拡張する
AppCompatActivity
Theme.AppCompat
導関数を使用する
このライブラリを使用してインスタンスを取得するActionBar
には、適切な名前のgetSupportActionBar()
メソッドが使用されます。