FragmentStatePagerAdapter

FragmentPagerAdapterは、画面切り替えでViewをattach, detachする。
Viewの状態は維持されているため、メモリを使う。
FragmentStatePagerAdapterは、画面切り替えでadd, removeを使っているので、Viewが破棄される分メモリは使わない。
ただし、Viewの復元には工夫が要る。

FragmentStatePagerAdapter  |  Android Developers

CustomFragment.javaで、

初回生成の時は、はsavedInstanceStateがnullなので、newInstanceの時にsetArgumentsしたテキストをgetArgumentsで取得すればいい。
切り替えで破棄と再生成される時は、onSaveInstanceStateでテキストを保存しておいてるので、savedInstanceStateがnullではないから、そこから取得する。
どっちに来るかログを出してるので、あとで見てみる。
CustomFragmentStatePagerAdapter.javaは、

FragmentStatePagerAdapterから派生させてる以外は変わらない。
MainActivity.javaでは、

CustomFragmentStatePagerAdapterオブジェクトcfspaをセットしてる。

起動時
起動時

起動時。
Zeroだけど、

右隣のOneも初回生成
右隣のOneも初回生成

右隣のOneも初回生成。

スワイプでOneに移動
スワイプでOneに移動

スワイプでOneに移動。

Twoが追加生成
Twoが追加生成

Twoが追加生成。

Twoに移動
Twoに移動

Twoに移動。

Threeが追加生成
Threeが追加生成

Threeが追加生成。

Threeに移動
Threeに移動

Threeに移動。

Fourが生成
Fourが生成

Fourが生成。

Fourに移動
Fourに移動

Fourに移動。

この時は何も起きない
この時は何も起きない

この時は何も起きない。

Threeに戻る
Threeに戻る

Threeに戻る。

保存していたテキストTwoを使ってTwoのViewが復活
保存していたテキストTwoを使ってTwoのViewが復活

保存していたテキストTwoを使ってTwoのViewが復活。

Twoに移動すると
Twoに移動すると

Twoに移動すると、

OneのViewが復活
OneのViewが復活

OneのViewが復活。

Sample/android/FragmentStatePagerAdapter/FragmentStatePagerAdapter/src/FragmentStatePagerAdapter at master · bg1bgst333/Sample · GitHub