==Android Fragment==
[[Android][Android Tips]]
*http://developer.android.com/guide/components/fragments.html
*フラグメントをアクティビティレイアウトの一部に追加すると、アクティビティのビュー階層のViewGroup の中で、自分のビューレイアウトを定義し生存する
*アクティビティレイアウトに、レイアウトファイルに<<fragment>>と宣言する、もしくはアプリケーションコードからViewGroupに追加することでことで挿入できる。
*しかしながらフラグメントは、アクティビティレイアウトの一部であることは必須ではない。
*フラグメントを自身のUIを持たない、アクティビティのための不可視なワーカーとして使うこともできる
*戻りとして、フラグメントのルートとなるViewを返すように実装する。
<<blockquote>>ListFragmentのサブクラスである場合、デフォルトの実装では、ListViewを返すため、実装する必要はない<</blockquote>>
*onCreateView() からレイアウトを返すために、XMLで定義されたレイアウトリソースからViewを生成することができる。
====フラグメントをアクティビティレイアウトファイルの中で宣言====
<<?xml version="1.0" encoding="utf-8"?>> <<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">> <<fragment android:name="com.example.news.ArticleListFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />> <<fragment android:name="com.example.news.ArticleReaderFragment"
android:id="@+id/viewer"
android:layout_weight="2"
android:layout_width="0dp"
android:layout_height="match_parent" />> <</LinearLayout>>*<<fragment> > の android:name 属性はレイアウトの中でインスタンス化するFragmentを特定する
*システムがアクティビティレイアウトを生成するとき、それぞれのフラグメントをインスタンス化し、おんCreateView()メソッドを呼び出す。
*それに対して、addToBackStack()を呼び出した場合、フラグメントは停止され、ユーザーが戻る場合に、再開される。
<<blockquote>>それぞれのフラグメントトランザクションに、setTransaction() を コミット前に呼ぶことによって、トランザクションアニメーションを適用できる。<</blockquote>>
*commit() を呼び出すことは、トランザクションを直ちに実行することではない。
*性格には、アクティビティのUIスレッドに直ちに実行するようにスケジュールする。
*通常これは、トランザクションが、他のスレッドに依存していないかぎり、必要ではない。
<<blockquote>>注意:commit()でトランザクションをコミットできるのは、アクティビティの保存時まで。この時点を過ぎてcommit()を試みると例外となる。なぜなら、コミット後の状態はアクティビティがリストアするときに失われてしまう<</blockquote>>
ため。