MainActivityと、Fragment1,Fragment2,Fragmnent3から成るアプリケーションを作成しています。
今回フラグメント間の遷移をコントロールするためのクラスを作成しました。そのクラスは以下のメンバ変数とメンバメソッドを持っています。
メソッドの中で使用されているfragmentManagerは、MainActivityから渡されたものです。
Kotlin
1private var _currentPage: Fragment 2 3fun addPage(fragment: Fragment){ 4val transaction = fragmentManager.beginTransaction() 5 transaction.add(R.id.fragment_container, fragment) 6 transaction.addToBackStack(null).commit() 7 _currentPage = fragment 8} 9 10fun removePage(){ 11 fragmentManager.popBackStack() 12} 13
フラグメントの遷移は、このaddメソッドを使用し、「次へ」ボタンを押していくたびにFragment1→Fragment2→Fragment3の流れで行われます。
同様に、各フラグメントにある「戻る」ボタンを押すと、removePageメソッドが呼ばれ、一つ前のフラグメントに戻る形になります。
質問ですが、_currentPageに常に移動後のフラグメントのインスタンスを割り当てておくにはどうしたら良いでしょうか?
addの場合は上記に書いたように、_currentPage = fragment(渡されたフラグメント)とすれば良いのですが、removeの場合が分かりません。
試しにpopBackStack()の後に以下を記載しましたが、取れませんでした。
_currentPage = fragmentManager.findFragmentById(R.id.fragment_container) as Fragment
これですと、例えばFragment3→Fragment2の移動の時、_currentPageにFragment3が入ってきてしまいます。
(本来は移動先であるFragment2が入ってきて欲しいです)
どうぞ宜しくお願いいたします。
あなたの回答
tips
プレビュー