使用ツール
Android Studio Giraffe | 2022.3.1 Patch 2
1. Android Studio で通常のプロジェクトを作成する。
ここでは Fragment を表示する*1ので、画面の存在するプロジェクトを作成する。
「Empty Activity」「Empty Views Activity」等のプロジェクトが対象。
「No Activity」でも構わないが、Default Activity の追加が必要になるので、ここでは割愛する。(選択しない)
*1本来、Fragment は表示するものではないが、問題を単純にするため表示する。
2. アクティビティに FragmentContainerView を配置する。
FragmentContainerView は Palette > Containers の中にある。
デザインモードの画面にドロップできないので、Component Tree に配置する。
FragmentContainerView を ConstraintLayout に設置すると「Missing Constraints in ConstraintLayout」の警告が表示される。
要素名 内容 備考 アクティビティ Android > app > res > layout > activity_main.xml - 部品 種類 FragmentContainerView 作成した Fragment をここに設置する。 id fragmentContainerView プログラムから R.id.fragmentContainerView として参照される。
放置でも構わないが、レイアウトの制約 (位置指定) を設定すると警告が消える。
3. Fragment を追加する。
ツリー Android > app を右クリックし、 New - Fragment - Fragment (Blank) を選択してフラグメントを追加する。
追加先: Android > app > res > layout > fragment_blank.xml
下記項目を記入し、 をクリックする。
要素名 内容 備考 Fragment Name BlankFragment BlankFragment.java が自動生成される。*2 Fragment Layout Name fragment_blank プログラムから R.layout.flagment_blank として参照される。 Source Language Java - Target Source Set main -
このとき自動的に TextView が fragment_blank.xml に追加される。
実際のプログラムを作成するときは不要なので削除するが、サンプルとして利用するため削除しない。
この TextView を削除すると Fragment が表示されているかどうか分からなくなる。
要素名 内容 備考 id - (空欄) 変更なし。(プログラムから使用しないため、設定しない) layout_width match_parent 変更なし。 layout_height match_parent 変更なし。 text @string/hello_blank_fragment 変更なし。(@string/hello_blank_fragment の内容は「Hello blank fragment」)
*2本稿では BlankFragment.java を編集しないが、この中で R.layout.fragment_blank が指定されているので、確認しておくこと。
4. Fragment の表示
4-1. MainActivity.java にコードを記述する。
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
// Fragment のインスタンスを生成する BlankFragment blankFragment = new BlankFragment(); // Fragment を FragmentContainerView に割り当てる FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); fragmentTransaction.add(R.id.fragmentContainerView, blankFragment); fragmentTransaction.commit();
} }