4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ViewPagerの内のFragmentが挙動不審?

Posted at

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.FragmentgetChildFragmentManager() がAPI17以上にしか対応していませんので、v4サポートライブラリのandroid.support.v4.app.Fragmentを使う必要があります。

同時に、FragmentPagerAdapterもv4サポートライブラリのandroid.support.v4.app.FragmentPagerAdapterを使用する必要があります。

API17以上がターゲットならばandroid.support.v13.app.FragmentPagerAdapterとandroid.app.Fragmentで良いでしょう。

備考

FragmentStatePagerAdapterを使用する場合にも同様の注意が必要でしょう。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?