今回は、Fragment上のボタンを押すと、新しいFragment切り替えて画面遷移をします。
また、戻るボタンを押した場合に元のFragmentに戻るようにします。
プロジェクトの作成
まずは、新しいプロジェクトを作成します。そのままBlank Activityで【Next】を押します。
【Finish】でプロジェクトが新規作成されます。
新しいFragmentの追加
プロジェクトの作成が終わると、まずパッケージ名を選択して、右クリックから、Android Componentを追加します。名前をSubFragmentとしたFragmentを追加します。
ここでlayout fileも作成するようにしておき、【OK】を押します。
Layoutは、ファイル名をfragment_sub、Root elementをLinearLayoutにして、【OK】を押します。
リソースファイルの修正
まずは、画面遷移の契機となるボタンをfragment_main.xmlに追加します。次に、sub_fragment.xmlにText Viewを追加します。
Fragmentの切り替え処理の実装
SubFragment.javaには、android.app.Fragmentがインポートされているため、SubFragmentクラスは、android.app.Fragmentから派生されていますが、サポートライブラリをしているので、これをandroid.support.v4.app.Fragmentから派生するように修正します。次に、MainActivity.javaにfragment_main.xmlの次へボタンを押した場合のイベントハンドラonClickNextを実装します。
Fragmentの操作は、トランザクションという単位で管理されています。これは、FragmentTransactionのbeginTransaction()からcommitを1つの単位として、管理しています。 まず、FragmentTransactionを使用して、トランザクションを開始し、現在表示しているFragmentを新しく生成したSubFragmentにreplaceします。
このままでは、戻るボタンを押すとアプリが終了してしまうので、addToBackStackを使用して現在のトランザクションの状態をBackStackに追加しておきます。
こうすると、戻るボタンを押した場合やpopBackStackを実行すると、commit前のFragmentの状態に戻すことができます。 そして、commitを行うと、Fragmentの切り替えが実行されます。
これで、Fragmentの切り替えができるようになりました。
実行
4.3のエミュレータで実行したら、このようになります。
【次へ】ボタンを押すと、SubFragmentが表示されます。
戻るボタンを押すと、上の画面に戻ります。
0 件のコメント:
コメントを投稿