私のアプリには、次のアーキテクチャがあります。
MainActivity
|_ FirstFragment
| |_ GridFragment
| |_ MapFragment
|
|_ SecondFragment
|
|_ ThirdFragment
その点に注意してください:
MainActivity
を使用ActionBarSherlock
してSlidingMenu
います。SlidingMenu
FirstFragment
フラグメント ( 、SecondFragment
、 ) を切り替えますThirdFragment
。FirstFragment
グリッドモードとマップモードを切り替えるボタンをアクション バーに作成します。これは、そのサブフラグメントを切り替えることです。
達成したいこと
フラグメントを切り替えるときに、フラグメントの状態を保持する必要があります。これは、FirstFragment
マップ モード (MapFragment
サブフラグメントを表示) を選択し、スライド メニューから別のオプションを選択して戻ると、マップが再び表示されるはずです。現在、スライド メニューからセクションを選択すると、各フラグメントがリセットされます。
new FirstFragment()
現時点では、メニュー オプションが押されたときにトランザクションをコミットしているので、これは驚くべきことではありません。
ただし、最初に各フラグメントへの参照を親に持たせようとしました。たとえば、MainActivity
トランザクションをコミットするときに、以前に存在するかどうかがチェックされ、必要に応じてインスタンス化された 3 つのフラグメント メンバーがありました。これは、第 2 レベルのフラグメントを追加するまでは正常に機能し、その後、トランザクションをコミットするときに例外をスローし始めました (アクティビティが破棄されたと言っています)。
お気づきかもしれませんが、私は Android の専門家ではありません。このトピックに関するガイダンスが必要です。
それぞれの参照を持たずにフラグメントの状態を保持するにはどうすればよいですか?