[Android & Kotlin] Fragment をActivityに追加

ActivityにFragmentをアタッチしてみましょう。

Android Studio
2021.1.1 patch 2




Fragment

 
前回は 簡単なFragmentを表示 させたので、最初からFragmentが表示されたままです。

Activityの実行中に、Fragmentの追加、削除、置換などのFragmentTransactionを実行することでプログラマブルにFragmentを扱えます。
 

 

Fragment をActivityに追加

 
プログラムでActivityのレイアウトにFragmentを追加するには、レイアウトにフラグメントコンテナとして機能するFragmentContainerViewを前回と同様に含め、FragmentTransactionを使用してFragmentをインスタンス化し、Activityのレイアウトに追加します。

 

Activity のレイアウト

activity_main.xml にFragmentContainerViewを追加しますが
android:name 属性はいりません

 

Fragment クラス

次にFramentを継承したクラスを作成。例として、SampleFragment とします。

1x1.trans - [Android & Kotlin] Fragment をActivityに追加

以下のように記述
SampleFragment.kt

 

Fragment のレイアウト

Fragment用のレイアウトファイル fragment_main.xml を作成
これにTextViewを入れて Hello Fragment の文字列をリソースから呼びます。
 
fragment_main.xml

 

AndroidX Fragment library

build.gradle にandroidx.fragment:fragment-ktxを追加します。
バージョンは適宜合わせてください

 

MainActivity

MainActivity.kt

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

setReorderingAllowed:
setReorderingAllowed(true)を使わないとFragmentの遷移、back stack やアニメーションに問題が生じるようです。

You should always use setReorderingAllowed(true) when performing a FragmentTransaction. For more information on reordered transactions, see Fragment transactions.

 

サンプルコード

 
プログラマブルな生成についてまとめてみます。
ただこのままだとFragmentの大きさやActivityとの違いが分かりにくいので、サイズや背景色を設定してみます。

activity_main.xml

SampleFragment.kt

fragment_main.xml

リソース
strings.xml

build.gradle

MainActivity.kt

これで実行させてみるとこのようになります。
全体のMainActivityの画面の中にある、Hello Fragmentの背景が灰色っぽい矩形範囲がFragmentになります。
 
1x1.trans - [Android & Kotlin] Fragment をActivityに追加


 
 

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







アプリ開発が上達するお勧め

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンラインのプログラミングスクールがいいでしょう。

TECH ACADEMY
オンライン説明会



Code Camp
現役エンジニアによるオンラインプログラミングスクール【CodeCamp】


直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。



侍エンジニア塾
侍エンジニア塾 無料体験レッスン


とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


シェアする

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

フォローする