[Fragmentによるタブ作成 関連記事]
Androidアプリでタブを用いた画面を作ろうと思っていろいろ調べてみた。
- TabActivityを使う方法
この方法は簡単に実装できるようだが、この TabActivityはAndroid3.0以降ではdeprecated (非推奨) になっている。
- Fragment を使う方法
FragmentはAndroid SDK 3.0 からでないとサポートされていない。
TabActivityは非推奨なので使わないことにした。今回はAndroid SDK 3.0 以前でもFragment を使えるようにしたいのでその作業をメモっていく。
どうすれば?
サポートライブラリを手にいれよう!
Android SDK 3.0 以前でもFragment を使えるようにするにはどうしたらいいのか。
Googleは、Android1.6以降のSDKでもFragment が使えるようにサポートライブラリを準備している。このサポートライブラリは、android-support-v4.jar と名前のファイルで提要されており、このライブラリを組み込むことでFragmentが使えるようになる。
サポートライブラリのダウンロード
サポートライブラリ を手に入れる方法はAndroidの公式リファレンスの Support Library に詳しく記載されている。このリファレンスを参考にファイルをダウンロードする。
- Android SDK Manager を実行する。
- "Android Support Library" をチェックしてインストールする。
インストールされているか確認する。<sdk>/extras/android/support/ にサポートライブラリがインストールされている。今回の目的ファイル android-support-v4.jar はv4 ディレクトリ内にある。
この android-support-v4.jar をプロジェクトでビルドすることによりAndroid1.6以降のSDKでもFragment が使えるようになる。
プロジェクトで使えるように設定
- プロジェクトのrootに"libs" ディレクトリがなければ作成する。
- libs 内にandroid-support-v4.jar をコピーする。
- ライブラリへのビルドパスを通す。
自分の環境では新規プロジェクトを作成した時点で上記1-3まで完了していたが確認のためみていく。
※r20 以上であればプロジェクト作成時に自動的にライブラリが登録されるようだ。
root 直下に "libs" のディレクトリがある。また、その中にビルドしたい"android-support-v4.jar" があることが確認できる。公式リファレンスでは 例として <sdk>/extras/android/support/v4/android-support-v4.jar となっているがビルドパスさせ通れば上記のように"libs"の直下にファイルを置いても問題ないようだ。
ビルド・パスについて確認する。
"Project > Properties > Java Buld Path > Libraries" を開く。ビルドパスに"android-support-v4.jar" が設定されていることがわかる。設定されてない場合は、"Add JARs..." ボタンで追加する。
以上で、Android1.6以降のSDKでもFragmentが使えるようになった。
注意点
"android-support-v4.jar" を使ったFragmentは、3.0以降で標準で対応しているFragmentとは使い方が異なるところがある。注意点として少しだけみていく。
- パッケージ名が異なる
3.0以降で標準は "android.app" だが、"android-support-v4.jar"を使う場合は、"android.support.v4.app" となる。
- アクティビティの親クラス
"android-support-v4.jar"を使う場合は、"FragmentActivity" を継承する。
- メソッドの変更
"Activity.getFragmentManager()"の代わりに"FragmentActivity.getSupportFragmentManager()" を使うなど。
他にも"3.0以降で標準対応"と"android-support-v4.jar" とで使い方が異なるところがあると思うが、書籍などで"3.0以降で標準対応"のFragmentで説明されている箇所は置き換えて考えるよう注意が必要だ。
参考
以上
[Fragmentによるタブ作成 関連記事]