【问题标题】:Do all Fragment onCreateView methods called with FragmentActivity in android?android 中是否使用 FragmentActivity 调用所有 Fragment onCreateView 方法?
【发布时间】:2013-03-12 02:00:15
【问题描述】:

我使用了FragmentActivityViewPagerAdapterFragment 来构建标签格式。我的FragmentActivity 中有 3 个标签。我很困惑是否在调用FragmentActivity 方法或调用选项卡的onClick 时调用了所有Fragment onCreateView 方法?我在所有 3 个 Fragments 中设置了 3 个断点 onCreateView 方法。在调试期间,我发现只有前 2 个 onCreateView 方法被调用。请解释为什么只调用了 2 个?

【问题讨论】:

    标签: android fragment android-fragmentactivity


    【解决方案1】:

    ViewPagerAdapter 将根据用户需要管理创建片段和销毁片段。所以如果不设置mViewPager.setOffscreenPageLimit(NUM_TABS-1),默认是1(可以参考here

    这就是为什么它只创建前 2 个选项卡的原因,当您选择 tab3 时,它会破坏 tab1 的片段并创建 tab3 的片段。对于您的情况,如果您在调试时设置 mViewPager.setOffscreenPageLimit(2),您会看到它调用了 3 个 onCreateView 方法并且不会破坏任何片段的视图。希望对您有所帮助。

    【讨论】:

      【解决方案2】:

      它们是根据用户需求创建和销毁的。如果您滚动到第二个片段,您会看到它已创建。这只是一个优化。您是否认为具有例如 8 个片段的应用程序需要将 8 个片段保留在内存中?这会浪费资源。

      【讨论】:

      • 是的,我明白了。但是默认行为是什么。我的前 2 个片段是在开始时创建的,但不是第 3 个。当我单击第二个选项卡时,它调用第三个片段。这就是我感到困惑的原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2013-02-18
      相关资源
      最近更新 更多