Android ViewPager 方向改变
Android ViewPager orientation change
我已经从 @antonyt 的 对这个 Whosebug question 的回答中读到 FragmentPagerAdapter
将尝试重用 FragmentManager.findFragmentByTag()
找到的现有片段方向改变。
这个我试过了。 FragmentPagerAdapter
的 getItem(int)
在第一次需要 Fragment
时被调用。方向改变后, getItem
不会被调用,这与 @antonyt 的 答案一致。但是为什么Fragment
的onCreate()
又被调用了呢?我还以为没毁了?
所有未设置 setRetainInstance(true)
的片段在方向改变时被销毁。方向更改后,片段管理器会重新创建并重新附加所有片段(因此片段会经历整个生命周期)。
ViewPager
附加的所有片段都添加到带有特殊标签的片段管理器中。 ViewPager
尝试重用方向更改后重新创建的片段(通过在片段管理器中搜索标签)。如果不存在这样的片段,则调用 FragmentPagerAdapter.getItem(int)
来创建新片段。
我已经从 @antonyt 的 对这个 Whosebug question 的回答中读到 FragmentPagerAdapter
将尝试重用 FragmentManager.findFragmentByTag()
找到的现有片段方向改变。
这个我试过了。 FragmentPagerAdapter
的 getItem(int)
在第一次需要 Fragment
时被调用。方向改变后, getItem
不会被调用,这与 @antonyt 的 答案一致。但是为什么Fragment
的onCreate()
又被调用了呢?我还以为没毁了?
所有未设置 setRetainInstance(true)
的片段在方向改变时被销毁。方向更改后,片段管理器会重新创建并重新附加所有片段(因此片段会经历整个生命周期)。
ViewPager
附加的所有片段都添加到带有特殊标签的片段管理器中。 ViewPager
尝试重用方向更改后重新创建的片段(通过在片段管理器中搜索标签)。如果不存在这样的片段,则调用 FragmentPagerAdapter.getItem(int)
来创建新片段。