画面回転してもFragment再生成しないでレイアウト変更したい+取得したデータ使い回したい
お題
- 画面回転させて、縦/横で別のレイアウトを表示する
- 縦画面のときは ListView を表示
- 横画面のときは GridView を表示(1行2列)
- ただし、一度取得したデータは使いまわしたい
縦画面
横画面
実装のポイント
- Activity
- コンフィグ変更のたびに毎回 再生成
- Fragment
- Fragment#setRetainInstance(true) を設定し、Activity 再生成時に Fragment は再生成されないようにする(Fragment#onCreate/onDestroy を抑止)
- Activity 再生成のたびに走る Fragment#onCreateView でレイアウト再読込させる
- データ取得
- 一度だけ(今回の例では一度だけ呼び出される Fragment#onCreate 内で)
- レイアウト
メイン部分のコード。(コード全体はこちら)