[Android] Fragment コードで記述する

FragmentはActivityと共に重要な機能を果たしていますが、いまいちわかりにくところがあります。最初に簡単なHello WorldをJavaコードで記述して表示させるところから始めてみましょう。
 

Android Studio
2021.2.1




Fragment

 
前回はタグ<fragment>を使って簡単にHello Worldを表示させました。

https://akira-watson.com/android/fragment-simple.html

この場合使いにくい場合があるのでMainActivityからダイナミックにFragmentを追加、削除ができるようにコードを使って記述してみます。
 

 

FragmentManager

 
Activityが呼び出すレイアウト、Fragmentとして、androidx.fragment.app.FragmentContainerViewを使います。

activity_main.xmml


 
次に、ActvityにFragmentを設定していきます。Fragmentの設定には一連のオペレーションであるトランザクション(フラグメントの追加、削除、置換など)を施します。

    1. FragmentManagerのインスタンス生成
    2. FragmentTransactionのインスタンスを取得
    3. インスタンスに対して張り付け方を指定する
    4. commit()で張り付けを実行する

コードではこのようにします。
 


 
savedInstanceState == null
最初に、BundleのsavedInstanceStateがnull、何もないときだけ設定をするようにします。FragmentはActivityのライフサイクル中に何度でも呼ばれることが可能なので最初だけ設定をするようにします。
 


 
FragmentManager:
以前は android.support.v4.app.FragmentManager や android.app.FragmentManager がありましたがAndroidXからは
androidx.fragment.app.FragmentManager
になります。

FragmentManagerは生成されたFragmentのインスタンスの状況を管理して、再度呼ばれると復元してくれます。
getSupportFragmentManager()からこのインスタンスを生成できます。
 
FragmentTransaction:
追加、削除、置換などのメソッドが用意されています。


Ref: FragmentTransaction
 
Fragmentのレイアウトとクラスは前回と同様です。

https://akira-watson.com/android/fragment-simple.html

 

サンプルコード

 
以上をまとめて、分かりやすいように背景色を設定してみます。

SampleFragment.java
fragment_main.xml
を追加で作成

1x1.trans - [Android] Fragment コードで記述する


MainActivity.java


 
MainActivityで呼んでいるレイアウト
activity_main.xml


 
Fragmentのクラスです。
SampleFragment.java


 
Fragmentが呼んでいるレイアウト
fragment_main.xml


 
リソース
strings.xml


 
これで実行させてみるとこのようになります。
 
1x1.trans - [Android] Fragment コードで記述する


 
 
関連ページ:

 
References:
androidx.fragment.app | Android Developers
FragmentTransaction
フラグメント | Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする