Leo*_*hen 6 android android-viewpager
我有一个关于是否在ViewPager中使用View或Fragment的问题.
背景:我有一个包含ListView的Activity A. 每个ListView项打开活动B.活动B显示不同的内容,具体取决于在活动A中点击的ListView项.活动B的内容显示在ListView中.
问题:现在,我不需要在活动A和B之间来回切换内容,而是要求实现水平视图滑动以在活动B中切换所有内容.我找到的一个解决方案(尝试过并且有效)是创建Activity B的ListView的许多实例,并与ViewPager + PagerAdapter一起使用.在doc上找到的另一个可能的解决方案(尚未尝试过)是将ListView引入Fragment,创建片段的许多实例并将其与ViewPager + FragmentPagerAdapter或FragmentStatePagerAdapter一起使用.
我的问题是,使用每种方法有什么好处?我是否应该解决将ListView带入Fragment或只是简单地将ViewView与ViewPager一起使用的麻烦?
谢谢
Tre*_*vor 10
Fragment当我想将一些UI业务逻辑绑定到特定View(或一组)时,A 是一种有用的方法.如你所知,那个人Fragment有自己的生命周期回调等等,就像一个Activity愿意.
使用该方法可能更简洁,而不是单个Activity主机ListView通过单个主机PagerAdapter,因为它只需要处理驱动单个驱动器背后的逻辑.FragmentFragmentListView
这与我刚刚面临的情况非常相似.我正在显示各种垂直滚动形式(由许多输入字段组成)ViewPager.在我的情况下,我已经采用了这种Fragment方法,因为在我的情况下,ViewPager实际上需要在某些页面上显示完全不同类型的视图.例如,在前几页中,可能会显示用户输入表单.但在最后一页上,将显示一个图表.需要一组完整的逻辑来驱动该图.从单个驱动那些输入表单和一个图表Activity会有点混乱,我可能需要在几个委托类或其他东西中包含业务逻辑.所以对我来说,Fragments最终是明显的选择.我有我的InputFormFragment和a GraphFragment,它们每个都只包含View它们提供的s 的适用逻辑.
另一件需要考虑的事情是,在不久的将来,你也可能希望View在你的中显示不同的类型ViewPager.或者,您可能希望完全拥有另一个UI布局,也许是一个不使用它ViewPager但是将它们全部并排显示(例如,在横向模式下在大型平板电脑上使用的布局).有了Fragments,事情就变得更加模块化,你可以将代码考虑在内,以便更快地完成这项工作.另一方面,如果您通过使用Activity包含s 的简单PagerAdapter和所有逻辑的单个来实现您的目标ListView,您可能会发现将来需要更多工作来支持新类型View或特殊平板布局.
有一件事我要说的是已实施FragmentS IN一个ViewPager通过自己FragmentPagerAdapter和FragmentStatePagerAdapter,事情可能会变得有点尴尬,如果您有任何特殊要求; 管理Fragments有时候会很棘手.例如,对于我的UI,我需要能够以编程方式添加和删除ViewPager包含Fragments的UI .我还需要确保使用的适配器在显示后不会销毁Fragment它,因为我需要Fragment在某个时刻同时从所有s中收集数据.此外,我必须进行扩展和修改FragmentPagerAdatper,以确保Fragments onDestroy()正确地通过它们并从被删除FragmentManager时ViewPager删除.
Fragment■支持一种非常模块化的方式来构建适用于各种屏幕尺寸和方向的UI,并且它们如何允许您为各个UI元素封装业务逻辑和生命周期.但是,如果你的场景真的和ListViewa中的几个一样简单ViewPager并且你知道你永远不需要模块化,那么Fragments 的开销可能是一种过度杀伤力.