Fragmentを利用してより良いUIを開発することができる
FragmentはAndroid 3.0(API Level 11)から利用が可能になりました。FragmentはActivityのロジックとUIを分ける上で非常に便利なAPIです。Fragmentを利用することで、Activity内で煩雑な画面サイズ対応をする必要がなくなります。例えば、タブレット端末とスマートフォン端末で表示を切り替えたい時などにFragmentは非常に重宝します。上記の画像では、タブレット端末ではActivityAにFragmentAとFragmentBを同時に表示させています。一方、スマートフォンではActivityAでリスト項目を選択するとActivityBに存在するFragmentBが起動します。
FragmentはActivityと似ている
FragmentはActivityと同様に、ライフサイクルがあります。FragmentとActivityのクラスは非常に似た性質を持っていますので、すでにActivityのみで開発してしまっているアプリでも、Fragmentに簡単に移行させることもできます。それでは今回はFragmentがどのように動くのかを簡易なおみくじを開発しながら見て行きましょう。
Fragmentのクラスを利用する
Fragmentの生成は、静的な方法と動的な方法があります。今回は静的な方法をご紹介いたします。動的な方法についてはこちらを参考にしてください(動的な方法では予めViewを用意して、それをFragmentに置き換える、という方法をとります)。まず、Fragmentを継承したクラスを用意します。
以上で非常に簡単ですが、Fragmentとしては最低限の機能が完成しました。Activityを実装する場合とほぼ同じメソッドをオーバーライドすることができます。主に、onCreateViewメソッドにてFragmentが起動された際の動作をハンドリングしていきます。public class OmikujiFragment extends Fragment{
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
また、onDestroyメソッド(Fragmentが終了した際に呼び出される)では利用したオブジェクトの破棄やガーベジコレクションを行うことで、アプリのメモリ使用量を削減することができます。