2014年11月4日火曜日

Android ActivityとFragment

ActivityとFragmentに関するメモ


ActivityとFragmentの役割

MVCのControllerに相当する。画面のライフサイクル、UIイベントの管理を行う。
 特に、Fragmentは再利用可能なUIコンポーネントのまとまりを管理し、Activityに組み込んで使用する。
 
 

ライフサイクル

Activityや連動したFragmentにはライフサイクルがあり、状態によって異なるメソッドが呼ばる。


Activityのライフサイクル


onCreate:Activityが最初にとる状態。画面の構成(XMLレイアウトのロード)やViewコンポーネントを取り出すなどの処理をする。

onStart:UIのインタラクションの実施準備を行う。

onResume:インタラクションを実施できる状態

onPause:ユーザが画面を離れようとしている状態。必要ならばデータの永続化を行う。

onStop:画面がユーザから見えなくなった状態。この状態で戻ろうとすると、onRestartを経て、onStartの状態へ遷移する。

onDestroy:画面がシステムによってメモリから追放される。参照が残っているとメモリリークが起こる。システムによってプロセスがkillされると、この状態を経ずに、終了する。


Fragment特有のライフサイクル

FragmentはHoneyCombで導入された比較的新しいコンポーネントだが、support.v4 を使用することで、2.x系の端末でも使用することが出来る。

onAttach:FragmentがActivityに組み込まれた状態。FragmentがActivityにコールバックを提供する場合、Activityが必要なインターフェースを備えているかどうかをチェックしておく。

onCreate:Fragmentを構築する状態。

onCreateView:FragmentがもつViewを構築する状態。レイアウトXMLをロードして返す。Viewをもたない場合nullを返すことも可能。

onActivityCreated:ActivityのonCreateの処理終了の状態

onStart:FragmentのUIが構築されて、描画された状態

onResume:FragmentのUIが構築・描画され、インタラクション可能な状態

onPause:ユーザが別の画面へ遷移する状態。必要な情報は永続化する。

onStop:Fragmentがユーザに見えない状態

onDestroy:Fragmentがメモリから破棄される直前の状態

onDetach:FragmentがActivityから切り離される状態


AndroidManifestでのActivity宣言


アプリケーションを構成する要素は、application要素の子に指定する。
ランチャーから暗黙的Intentを受け取るActivityの宣言もする。


Activityのレイアウト

setContentViewにレウアウトXMLのIDを渡す。


Activityの中で、Fragmentを動的に切り替える


Fragmentを保持する目的のLayoutを用意しておく。

FragmentManagerを使って、FragmentTransactionを取得する。

transactionは、add、replace、remove、commitによって、レイアウトの中身を追加・変更することが出来る。


Fragmentについて注意

初期化の際、コンストラクタやsetterでデータを受け渡してはならない。Fragmentの復旧時デフォルトのコンスタラクタしか呼ばれないからである。


練習

・各状態をToast表示して確認してみると良い。
・ActivityにFragmentを組み込むと良い。レイアウトXMLを作成すれば、簡単に画面の切り替えが出来ることを確認すると良い。



0 件のコメント:

コメントを投稿