SlidingMenu
(タブの代わりに) Side Drawer を表示するために a を使用します。現在、 の内部にSlidingMenuFragment
は、ListView
6 行の があり、それぞれがタブに相当します。ユーザーが 6 つのアイテムのいずれかに触れると、コンテンツ ビューはFramelayout
そのアイテムに対応する Fragment で を更新する必要があります。
元:
- 猫
- 犬
- 動物
猫を選択すると、 がSlidingMenu
消えてCatsFragment
が画面に表示され、そこに存在する古いフラグメントが置き換えられます。
質問:向きの変更も考慮して、コンテンツ ビューとの間でスワップされるすべてのフラグメントを格納する最善の方法は何ですか? スワップする必要があるたびに新しいフラグメントをインスタンス化しますか? または、それらすべてをインスタンス化し、それらをリストに保存して、そこから使用しますか?
私がしたこと:
- フラグメントのスワッピングが必要なときはいつでも、以下のコードを使用します。
簡単にアクセスできるようにフラグメントのリストを保存するには、ArrayList を使用します。この ArrayList を onRetainCustomNonConfiguration() に保存し、方向の変更後にそれを取得して、フラグメントの別のリストをインスタンス化しないようにしていますが、これは良い考えではないと思います。
getSupportFragmentManager() .beginTransaction() .replace(R.id.activity_main_framelayout, mFragmentsList.get(mCurrentFragmentPosition)) .commit();