ViewPagerの内のFragmentが挙動不審?
ViewPagerの内のFragment の Lifecycle イベントの呼ばれ方がおかしいようだ…なんだかいろいろおかしいようだ…。そんなときに思い出してください。私は思い出せずに1日悩みました。
たとえばViewPagerがネストしているとき
ViewPagerがネストしているときなどで、Fragmentを親としてViewPagerを作る場合に注意が必要です。
FragmentPagerAdapterのコンストラクタに引数として渡すFragmentManagerは **getChildFragmentManager()**で取得しなければいけません。Childです。
getFragmentManager()で取得したものを渡してしまうといつか不審な挙動が現れます。
android.support.v4.app.Fragment
なお、API16 (Android 4.1) 以下をターゲットに含めて開発している場合には、android.app.Fragment の getChildFragmentManager() がAPI17以上にしか対応していませんので、v4サポートライブラリのandroid.support.v4.app.Fragmentを使う必要があります。
同時に、FragmentPagerAdapterもv4サポートライブラリのandroid.support.v4.app.FragmentPagerAdapterを使用する必要があります。
API17以上がターゲットならばandroid.support.v13.app.FragmentPagerAdapterとandroid.app.Fragmentで良いでしょう。
備考
FragmentStatePagerAdapterを使用する場合にも同様の注意が必要でしょう。