長文失礼します。AndroidのFragmentでActivityみたいな画面遷移を実装したいですがいい方法が見つかりません。
具体的に言いますとa,b,cのActivityがあってaからbに遷移し、バックキーなどでaに戻るこの時にaは、bに遷移する前のViewの状態は保持されてます。(ScrollViewのスクロール位置やCheckBoxのOn/Offとか)。まずこれを実装したいです。
あと、bからcに遷移しcからaに遷移します。この時にb,cは消去します。これはActivityだとIntentにclearTopみたいなフラグを付ければ実現できたような気がしますが、これと同じことをしたいです。
インターネットで実装方法を探したところしっくりする方法が見つかりませんでした。なので自分で試行錯誤やりましたが、最終的に下記のような方法になりましたが、問題点が残る実装となってしましました。こんなやり方しかないのか、他にいい方法があるのか教えて頂けないでしょうか。いい参考サイトがあればそれを教えて下さるだけでも結構です。おねがいします。
○画面遷移
FragmentTransaction#add(int,Fragment,String)を利用する、これだけだと前画面も表示されぱなしみたいなので、FragmentTransaction#hide(Fragment)を利用し非表示にします。
○現画面を消去し前回の画面に戻る
FragmentTransaction#remove(Fragment)を利用し現在表示されている画面を消去します。これだけだと、前回画面は非表示のままなので、show(Fragment)で再表示します。
○重ねた画面を全部消去し一番最初の画面を表示する(前述のclearTopみたいの)
FragmentManager#getFragments()で重ねたFragmentを全部取得しFragmentTransaction#remove(Fragment)で消去する。それで一番最初の画面をFragmentTransaction#add(int,Fragment,String)を利用し追加する。
○問題点
・show(),hide()を利用したFragmentはライフサイクルが発生しない
・FragmentTransaction#add(int,Fragment,String)を利用したFragmentのタグはコレクションで管理しないといけなくなってしまったので、まどろっこしい。
○疑問点
解決方法としてFragmentTransaction#addToBackStack(String)の利用を考えてみましたが、これで前画面にもどると戻った画面がなぜか初期化されてます。どっかのサイトにライフサイクルは発生するけど初期化はされないって書いてあった気がしたんですけど、なんか使い方間違えてるのでしょうか。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/03/12 14:53 編集
退会済みユーザー
2016/03/12 14:52 編集
2016/03/12 16:57
退会済みユーザー
2016/03/13 10:46 編集