2

私のアプリには、次のアーキテクチャがあります。

MainActivity
|_ FirstFragment
|   |_ GridFragment
|   |_ MapFragment
|
|_ SecondFragment
|
|_ ThirdFragment

その点に注意してください:

  • MainActivityを使用ActionBarSherlockしてSlidingMenuいます。
  • SlidingMenuFirstFragmentフラグメント ( 、SecondFragment、 ) を切り替えますThirdFragment
  • FirstFragmentグリッドモードとマップモードを切り替えるボタンをアクション バーに作成します。これは、そのサブフラグメントを切り替えることです。

達成したいこと

フラグメントを切り替えるときに、フラグメントの状態を保持する必要があります。これは、FirstFragmentマップ モード (MapFragmentサブフラグメントを表示) を選択し、スライド メニューから別のオプションを選択して戻ると、マップが再び表示されるはずです。現在、スライド メニューからセクションを選択すると、各フラグメントがリセットされます。

new FirstFragment()現時点では、メニュー オプションが押されたときにトランザクションをコミットしているので、これは驚くべきことではありません。

ただし、最初に各フラグメントへの参照を親に持たせようとしました。たとえば、MainActivityトランザクションをコミットするときに、以前に存在するかどうかがチェックされ、必要に応じてインスタンス化された 3 つのフラグメント メンバーがありました。これは、第 2 レベルのフラグメントを追加するまでは正常に機能し、その後、トランザクションをコミットするときに例外をスローし始めました (アクティビティが破棄されたと言っています)。

お気づきかもしれませんが、私は Android の専門家ではありません。このトピックに関するガイダンスが必要です。

それぞれの参照を持たずにフラグメントの状態を保持するにはどうすればよいですか?

4

1 に答える 1