74
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

【Android】Androidの基本を覚えた後に覚えたいこと~はじめてのFragment②~

【Android】Androidの基本を覚えた後に覚えたいこと~はじめてのFragment①~の続きです。

Fragmentの使用

前回も、「コードの中で追加する」で少し触れていますが、コード上でActivityへFragmentを追加する方法を詳しくまとめます。
以下、サンプルコードです。

MainActivity.java
// FragmentManagerからFragmentTransactionを作成
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();

// 実際に使用するFragmentの作成
Fragment newFragment = new SampleFragment();

// Fragmentを組み込む
transaction.replace(R.id.fragment_container, newFragment);

// backstackに追加
transaction.addToBackStack(null);

// 上記の変更を反映する
transaction.commit();

FragmentTransaction
Fragmentを使用するときには、FragmentTransactionを使用します。

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();

このFragmentTransaction(transaction)に対して、Fragmentの変更などを設定していきます。

ActivityへFragmentを組み込む
今回のサンプルコードではreplaceメソッドを使用しています。

transaction.replace(R.id.fragment_container, newFragment);

第1引数はFragmentが入るViewのID、第2引数は挿入するFragmentです。
第1引数で指定したViewのIDの部分にすでにFragmentが存在する場合は、そのFragmentをremnove(削除)してから、第2引数のFragmentをadd(追加)します。

このほかにもFragmentをActivityに追加したり、削除したりすることもできます。
以下に、その他のメソッドをあげます。

メソッド 説明
add (int containerViewId, Fragment fragment)もしくはadd (Fragment fragment, String tag) Fragmentを追加する。追加したいFragmentと追加したい場所のidもしくはtagを指定する
remove (Fragment fragment) Fragmentを削除する
replace (int containerViewId, Fragment fragment) すでにFragmentが存在する場合には、一度removeしてからaddする
hide (Fragment fragment) Fragmentを非表示にする
show (Fragment fragment) Fragmentを表示する

Fragmentをbackstackに登録

transaction.addToBackStack(null);

このコードは、backstackにFragmentを追加しています。
バックキーを押すことによって、この状態の画面に戻ることができるようになります。

コミット
commitメソッドを呼び出すことで、これまでの変更を反映できます。

transaction.commit();

commitメソッドは、変更をすべて設定し、最後に呼び出す必要があります。

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
74
Help us understand the problem. What are the problem?