【问题标题】:Start Fragment before hand事先启动 Fragment
【发布时间】:2016-06-29 09:09:51
【问题描述】:

我有一个父片段 P,其中每个包含 10 个按钮,单击时将用子片段 C1 到 C10 替换 P 中的一个容器。在操作栏中单击下一步时,我还应该能够从 C1 导航到 C2。我能够做到这一点,但是由于每个子片段都进行了繁重的初始化(加载 SVG、surfaceview 等),因此过渡并不顺利。是否可以在 C1 中启动下一个片段,即 C2 并将其置于暂停状态,以便在单击 C1 中的下一个时可以直接恢复。

这在某种程度上类似于 ViewPager 中的 OffScreenLimit,但是当我看到视图分页器源代码时,它不会替换现有片段,而只是将视图滚动到新片段 X。

用 ViewPager 替换现有框架,如 here 所示是一种可能的解决方案,但这需要对现有代码库进行大量更改,这是我最不想做的事情

【问题讨论】:

    标签: android performance android-fragments design-patterns android-viewpager


    【解决方案1】:

    您可以在创建活动时启动所有片段,然后调用它。

    你知道如何初始化fragment吗?

    如果没有:

    Fragment C1 = FragmentC1.newInstance();
    Fragment C2 = FragmentC2.newInstance();
    Fragment C3 = FragmentC3.newInstance();
    ...
    

    然后,当您单击一个按钮时,只需发送您要打开的信息,您知道如何在一个按钮中生成片段吗? 你需要它的代码吗?

    【讨论】:

    • 我知道如何初始化它。但是上面的代码会把片段带到暂停状态吗?我希望片段 C2 进行所有预处理,例如读取 svg 并预先转换为位图,当我在 C1 中单击下一个时,C2 必须简单地显示位图。
    • developer.android.com/images/fragment_lifecycle.png 请检查此图像,并阅读 onCreate();和 onPause();和 onResume(); developer.android.com/guide/components/fragments.html
    • 请注意,要启动片段生命周期,必须以某种方式动态使用片段管理器将其添加到活动中。通过简单地调用 Fragment.newInstance 的片段生命周期不会被启动
    • 如果您知道在 C1 中启动 C2 生命周期的方法,请提供帮助(您不能简单地通过调用 FragmentTransaction.replace(...) 替换 C1 并添加 C2)
    • 请再次阅读问题。这不仅仅是简单的片段替换!我已阅读您提供的链接,但在这种情况下没有帮助
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多