Fragmentの作成

Fragmentの作成

Fragmentを使った画面の作成は
FragmentActivityのサブクラスを作成してから
Fragmentの生成、追加をする

Fragmentは、Activityへ配置する部品で
複数のFragmentの配置ができる

Fragmentは自分自身のライフサイクルを持つため
イベント処理、Activityの実行中でも追加、削除が可能

Fragmentのライフサイクルは
Activityのライフサイクルと連動しているので
Activityが休止状態になると
Fragmentも休止状態になる

また、Activityが破棄されるとFragmentも破棄される

まずは、FragmentActivityのサブクラスの作成

public class Fragment extends FragmentActivity implements onClickListener{

}

次に、FragmentのレイアウトファイルをXMLで作成

<LinearLayout
 xmlns:android="http://schemes.android.com/apk/res/android"

android:id="@+id/myfragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

</LinearLayout>

次に、JavaでFragmentのためのサブクラスを作成する
これには、レイアウトファイルをロードして生成する

extends Fragment

でFragmentを使えるようにする

今回は、動的にViewを追加する

@Override
public View onCreateView(LayoutInflater inflater , ViewGroup container, Bundle savedInstanceState){

return inflater.Inflate(R.layout.fragment, container, false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState){

super.onViewCreate(view, savedInstanceState);

TextView text = (TextView)findViewById(R.id.text);
text.setGravity(Gravity.CENTER);
text.setText(getArguments().getString(“value”));
}

[/java]

次に、Fragmentを動的に追加する
onClick()をOverrideして
追加ボタンを押したタイミングで
Fragmentクラスを追加、更新する

@Override
public void onClick(View v){

FragmentManager manager = getSupportFragmentManager();
Fragment fragment = manager.findFragmentById(R.id.parent);

if(R.id.btn_add_code == v.getId() || R.id.btn_add_xml == v.getId()){

if(fragment == null){

FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.parent, getMyFragment(v.getId(), true), "MyFragment");

transaction.commit();

}else{
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.parent, getMyFragment(v.getId(), false));
transaction.commit();

}
}else if(R.id.btn_remove == v.getId() && fragment. != null){
FragmentTransaction transaction = manager.beginTransaction();
transaction.remove(fragment);
transaction.commit();
}
}

Fragmentの追加、更新には
FragmentManagerクラスの
beginTransaction()を使うことで
トランザクションを開始する

そして、次に追加、更新、削除した後に
commit()で、トランザクションをコミットする

FragmentManagerクラスの
findFragmentById()で
生成済みのFragmentが取得できないのなら
add()で、Fragmentを追加すればいい

Fragmentが生成済みなら
replace()でFragmentを更新できる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です