我已将 ViewPager 和 Fragment 的数量实现为子项,此处每个子项覆盖自己onAttach, onCreateView, onViewCreated and setUserVisibleHint
。
在我的应用中,导航行为是随机的,每次都不按顺序排列。由于页面查看器执行缓存以加载额外的子项,这就是我的问题所在。我不确定何时应该初始化/释放子类的成员。
你们的建议,在这种情况下最好使用PageViwer,或者我应该为每个组件采用传统的活动流程。
答案 0 :(得分:2)
ViewPager
通常用于移动高效的水平项目导航。典型的用例是
有关详细信息,请参阅有关Swipe Views Android Design pattern。
的部分关于生命周期,它基本上使用与任何其他Fragment相同的生命周期。唯一的区别是,生命周期方法可以稍后或早于您的预期调用,因为片段的缓存ViewPager
实现。
我不确定何时应该初始化/释放子类的成员。
您基本上应该依赖两种方法:onStart()
和onStop()
。在onStart()
中,您可以创建类成员并初始化您想要的所有内容。在onStop()
方法中,您应该取消初始化所有内容并删除您在onStart()
中设置的所有侦听器。
方法setUserVisibleHint()
独立于onStart()
或onStop()
使用。你最好不要初始化或破坏那里的任何东西。您不能将其视为生命周期方法,因为它不是。只是为了给你一个提示,你的片段对用户是可见的。您可以在此处启动或停止动画,或请求数据更新或执行类似任务。这是此方法的唯一目的。
你们提出的建议是否优先使用 在这种情况下,PageViwer或我应该采用传统的活动流程 对于每个组件。
如果您的活动符合上述某一点,我建议您使用ViewPager
。否则你可能会考虑其他选择。
更新:您很可能不会经常覆盖片段的onCreate()
和onDestroy()
生命周期方法。您将使用onCreateView()
和onDestroyView()
方法。在那里你可以实现所谓的静态初始化,初始化在片段仍然存活时不会改变。这是布局初始化和类似的任务。
答案 1 :(得分:1)
ViewPager用法
屏幕幻灯片是整个屏幕与另一个屏幕之间的过渡,对于设置向导或幻灯片等UI很常见。
如果你对Fragment有很好的了解,那么ViewPager就是实现的正确组件。 因为viewpager提供了一个可以添加片段运行时的地方。
例如。 如果要在项目中使用TabBar,则viewpager是正确的组件。因为它提供了一个可以添加Fragment运行时的地方。 Tabbar在Android应用程序中很常见。它提供了很多我们可以用来添加片段运行时的功能。 Facebook应用程序使用ViewPager来管理选项卡。 Viewpager提供了应用程序的流畅性。
您可以从此网址下载示例并检查您的要求是否符合
答案 2 :(得分:1)
ViewPager
It is an widget
Allows the user to swipe left or right to see an entirely new screen.
Easy to show the user multiple tabs
Dynamically add and remove pages (or tabs) at anytime.
阅读更多内容:http://architects.dzone.com/articles/android-tutorial-using