Android ViewPager 方向改变

Android ViewPager orientation change

我已经从 @antonyt 的 对这个 Whosebug question 的回答中读到 FragmentPagerAdapter 将尝试重用 FragmentManager.findFragmentByTag() 找到的现有片段方向改变。

这个我试过了。 FragmentPagerAdaptergetItem(int) 在第一次需要 Fragment 时被调用。方向改变后, getItem 不会被调用,这与 @antonyt 的 答案一致。但是为什么FragmentonCreate()又被调用了呢?我还以为没毁了?

所有未设置 setRetainInstance(true) 的片段在方向改变时被销毁。方向更改后,片段管理器会重新创建并重新附加所有片段(因此片段会经历整个生命周期)。

ViewPager 附加的所有片段都添加到带有特殊标签的片段管理器中。 ViewPager 尝试重用方向更改后重新创建的片段(通过在片段管理器中搜索标签)。如果不存在这样的片段,则调用 FragmentPagerAdapter.getItem(int) 来创建新片段。