【问题标题】:manage life cycle of fragments that use in SlidingTabLayout管理在 SlidingTabLayout 中使用的片段的生命周期
【发布时间】:2015-11-16 09:37:48
【问题描述】:

在我的应用程序中,我使用 SlidingTabLayout 来制作选项卡,我的应用程序有三个选项卡,每个选项卡都附有片段,因此我在运行应用程序时从片段扩展了三个类 向我展示一起创建的第一个和第二个片段的 onCreateView 和 OnCreate 我想在单击第二个选项卡时创建第二个选项卡的 onCreateView 和 OnCreate 因为我在单击第二个选项卡时从 web 服务加载了东西 就像 Facebook 应用程序在单击选项卡时发生加载内容

【问题讨论】:

  • 不明白你的问题
  • Facebook 应用程序有四个选项卡,当您单击任何一个选项卡应用程序加载数据取决于选项卡单击时,我想在我的应用程序中进行此操作@sud

标签: android android-fragments android-tabs


【解决方案1】:

您似乎正在使用 SlidingTabLayoutViewPagerViewPager 默认管理 3 个项目(当前在“左”/“右”侧一对一),其中一个显示,另外 2 个处于空闲状态。您无法减少此类项目的数量,因此您唯一的方法是将您的 Web 服务调用从 onCreate/onViewCreated 移动到其他地方。例如,您可以在第二个片段中调用setHasOptionsMenu(true),并在第二个片段的onOptionsMenuCreated 回调中实现您的Web 服务调用。

【讨论】:

  • 它对我有用,但我想保存从网络服务下载的项目的实例,以便在再次单击第二个选项卡时显示它们再次加载实例@Lingviston
  • 然后实现第二个片段的 onSaveInstanceState 方法并将您的项目保存到 Bundle 那里;使用 onCreate/onCreateView 等方法中的 Bundle 参数恢复您的项目。根据恢复的项目数据恢复您的视图状态;如果片段中已经存在项目数据,则不要再次调用 webservice;使用 FragmentStatePagerAdapter 作为 ViewPager 的适配器。但实际上这超出了您最初的问题。
  • 谢谢我知道,但这对我来说是第二个问题这些步骤是否为我的项目保存实例 1-将 FragmentPagerAdapter 更改为 FragmentStatePagerAdapter 作为我的 ViewPager 的适配器 2-在第二个活动中实现保存实例方法 3-在创建 /CreateView 时从包中恢复项目感谢您的帮助@Lingviston
  • @yousef 如果您的数据已经加载,请不要忘记调用 Web 服务。只需检查您的“数据”变量是否为非空。如果有帮助,不要忘记接受答案。
【解决方案2】:

在view pager中有一个预定义的方法叫setOffscreenPageLimit,

setOffscreenPageLimit(int limit)

设置在空闲状态下视图层次结构中当前页面任一侧应保留的页面数。

例如。

ViewPager.setOffscreenPageLimit(3);

【讨论】:

  • TS 的问题实际上是由于无法调用 setOffscreenPageLimit(0) 而出现的。他当前不在屏幕上的片段从网络加载了一些他不想加载的数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2014-07-28
相关资源
最近更新 更多