我阅读了 Android PageAdapter 和 FragmentPageAdapter 的文档,但没有看到任何区别。我的意思是其中一个是片段,另一个不是,但是...就只有这些吗?我对片段的经验不是很丰富,所以也许这就是我没有注意到任何区别的原因。
那么,如果我使用 FragmentPagerAdapter 或 PagerAdapter,有什么区别呢?
我阅读了 Android PageAdapter 和 FragmentPageAdapter 的文档,但没有看到任何区别。我的意思是其中一个是片段,另一个不是,但是...就只有这些吗?我对片段的经验不是很丰富,所以也许这就是我没有注意到任何区别的原因。
那么,如果我使用 FragmentPagerAdapter 或 PagerAdapter,有什么区别呢?
区别在于你可以在 FragmentPageAdapter
内部使用片段(Fragments)。如果你想要在代码的其他部分中使用片段,那么这就是适合你的适配器。
否则,如果你只想要不会被重用的代码,你可以使用 PagerAdapter
。
实现了一个PagerAdapter,它使用Fragment来管理每个页面。但是我强烈建议使用FragmentStatePagerAdapter类,因为它还可以处理保存和恢复片段状态的工作。
当页面数量很大时,FragmentStatePagerAdapter版本的pager更有用,更像一个列表视图。当用户看不到页面时,它们的整个片段可能会被销毁,只保留该片段的保存状态。这允许pager保持与每个已访问页面关联的内存量要少得多,而与FragmentPagerAdapter相比,代价可能是在页面之间切换时潜在的更高的开销。
使用FragmentPagerAdapter时,主ViewPager必须设置有效的ID。
子类只需要实现getItem(int)和getCount()就可以拥有一个工作适配器。