FragmentTransactionは、フラグメントの追加や置き換えなどの操作をするクラス・・・。
FragmentTransaction | Android Developers
FragmentManagerの項では、Fragmentタグを2つ用意して、activity_main.xmlに静的に埋め込んだ・・・。
今回は、メニューアイテムが選択されたら、FragmentTransactionで動的にフラグメントを切り替える・・・。
activity_main.xmlは、
LinearLayoutの中には、FrameLayoutのframelayout1が1つだけ・・・。
このframelayout1をFragmentに置き換えていくのである・・・。
fragment_main.xmlとして、
フラグメントの外側はLinearLayout・・・。
中にはTextView・・・。
このLinearLayout、fragment_main_linearlayoutの背景色と、TextView、fragment_main_textviewのテキストが、フラグメントが切り替わるたびに変わるようにする・・・。
Folderを追加・・・。
menuフォルダ・・・。
それができたら、またXMLを追加・・・。
main.xml・・・。
メニューを3項目・・・。
Classを追加・・・。
MainFragment.javaとし、Browseを選択して、
Fragmentを選択して、
これで、Fragmentが親クラスのMainFragmentとなったので、これを追加・・・。
MainActivity.javaでは、
onCreate時に、getFragmentManager()でfragmentManagerを取得・・・。
Menu1が選択されたら、fragmentManager.beginTransactionでfragmentTransactionが取れる・・・。
MainFragmentオブジェクトfragmentを生成したら、textを"fragment1"、colorを"red"として、Bundle型argsにセットしておいて、fragment.setArgumentsでセット・・・。
fragmentTransaction.replaceでframelayout1をfragmentに置き換える・・・。
fragmentTransaction.commitを呼ばないと、確定にならないので注意・・・。
Menu2、Menu3も同様に・・・。
Menu2はtextが"fragment2"でcolorが"green"、Menu3はtextが"fragment3"でcolorが"blue"・・・。
で、置き換えが起こると、MainFragmentのonCreateViewが呼ばれる・・・。
inflater.inflateでR.layout.fragment_mainをもとにビューが作成される・・・。
fragmentViewにそのビューをいったん入れておく・・・。
また、getArgumentsで渡されたパラメータを取り出してtextとcolorに・・・。
fragmentView.findViewByIdでR.id.fragment_main_textviewなtextViewを見つけたら、textView.setTextでtextをセット・・・。
fragmentView.findViewByIdでR.id.fragment_main_linearlayoutなlinearLayoutを見つけたら、linearLayout.setBackgroundColorでcolorに指定された色をセット・・・。
最後にfragmentViewを返す・・・。
これでフラグメントに指定したtextとcolorが反映される・・・。
最初は白いが、
メニューを出して、Menu1を押すと、
赤いFragment1・・・。
メニューを出して、今度はMenu2を押すと、
緑のFragment2・・・。
メニューを出して、今度はMenu3を押すと、
青のFragment3になった・・・。
こんな風に、フラグメントをメニューで動的に切り替えられるようになった・・・。