2012/05/24

Fragmentを使ったAndroidアプリの作成

いままでの知識と新しい情報

Androidアプリを作っていましたが、画面の切り替えにTabを使おうとしたところで、 Deprecatedクラスを避けるためにFragmentを使うことにしました。

minSdkを低い値にしているとはいえ、TabHost, TabWidgetを使うために標準ライブラリに代替クラスは準備されずに、 Support Librariesを使わなくてはいけないというのは少しおかしな印象を持ちます。 いずれにしても、良い機会なのでFragmentについての資料を読み漁っているところです。

いろいろ新しい仕組みが整いつつあるので、これまでProviderによるNetwork MVCパターンを使ってきた非同期更新の仕組みをLoaderに切り替えたり、ProgressBarで逃げてきたAsyncTaskを管理する処理でViewを持たないFragmentを使うなど、実装をやり直す余地はありそうです。

ただ、いままでの方法は、これはこれで問題もないので、とりあえずはTab表示したいActivityと使い回しをしたいActivityをFragmentに置き換えたり、バックグランドで処理をするのが面倒だったためAsyncTask + ProgressBarで逃げていたところをViewなしFragmentにするところから始めようかなと考えています。

まぁ、ここにきて時間が少しある事もあって、あんざいゆきさんの著書やYoutube講演/資料なんかを中心にAndroid 3.x以降の変更点を調べています。

いままでPlatform 2.3.xまでの知識で、1画面1Activityなアプリを作成してきて満足していたので、Fragmentは面倒そうに感じて避けてきましたが、いまは積極的に使うべきだと思っています。

標準的な枠組みの中で、これまで各自が個別に対応していた処理が行なえるのは、チームで開発する場合などに威力を発揮するはずです。

Fragmentの良いところ

Fragmentを使う事の利点は、明示的にViewを生成して返すonCreateViewメソッドが準備されている事でしょうか。 小さな事ですが、全体の流れやメソッドに一貫性が生まれつつあるように感じています。

とはいえ、単純にActivityをFragmentに変換しただけでは、いろいろ細かいところで適当ではない処理を行なっているので、使いまわせる部品となるようにBundleオブジェクトなどでインタフェースを考えてやらないといけないところがいくつかあります。

これからFragmentPagerAdapterを使ったり、FragmentActivityとFragmentの呼び出し順などライフサイクルをちゃんと理解しないといけないので、しばらくは忙しくできそうです。

0 件のコメント: