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に移動。
Twoが追加生成。
Twoに移動。
Threeが追加生成。
Threeに移動。
Fourが生成。
Fourに移動。
この時は何も起きない。
Threeに戻る。
保存していたテキストTwoを使ってTwoのViewが復活。
Twoに移動すると、
OneのViewが復活。