首页 > 解决方案 > 如何仅在片段可见时调用 onCreateView?

问题描述

我正在使用带有 5 个片段的ViewPager,我的问题是当第一个片段可见时,它已经加载了第二个片段。

我读了一些关于viewPager.setOffscreenPageLimit();但默认值是“1”并且不能设置为“0”的东西,因为ViewPager需要这个用于滑动动画。

所以默认情况下总是会加载第二个片段。

但我的问题是,我在两个片段中都有一个全局 Arraylist,每个片段中加载了不同的值,当我在片段一上时,这些值被覆盖,因为第二个片段被调用。

当每个片段对用户可见时,如何只为每个片段调用 onCreateView?

标签: javaandroidandroid-viewpager

解决方案


首先,我不会使用全局列表。如果您需要保存类似类型的列表,请创建一个 baseFragment。如果您的目标是在片段之间共享过滤,那么只需将应用的过滤器传递给每个片段,以便它知道如何在加载或传递列表时管理其列表,但不要使用只是自找麻烦的全局。

其次,onCreate 是故意在寻呼机上调用的,因此您可以在它显示在屏幕上之前预加载一些内容。这是为了在用户左右滑动时提高渲染性能。如果你在滑动发生时加载,它会变得很糟糕而且很糟糕。

最后考虑将您的逻辑移至 onResume,除非您有充分的理由不这样做。如果这对您不起作用,则监视页面更改事件并调用您在每个 baseFragment 上创建的共享“加载”方法,您可以在那里简单地调用和处理您的代码。


推荐阅读