java - 如何仅在片段可见时调用 onCreateView?
问题描述
我正在使用带有 5 个片段的ViewPager,我的问题是当第一个片段可见时,它已经加载了第二个片段。
我读了一些关于viewPager.setOffscreenPageLimit();
但默认值是“1”并且不能设置为“0”的东西,因为ViewPager需要这个用于滑动动画。
所以默认情况下总是会加载第二个片段。
但我的问题是,我在两个片段中都有一个全局 Arraylist,每个片段中加载了不同的值,当我在片段一上时,这些值被覆盖,因为第二个片段被调用。
当每个片段对用户可见时,如何只为每个片段调用 onCreateView?
解决方案
首先,我不会使用全局列表。如果您需要保存类似类型的列表,请创建一个 baseFragment。如果您的目标是在片段之间共享过滤,那么只需将应用的过滤器传递给每个片段,以便它知道如何在加载或传递列表时管理其列表,但不要使用只是自找麻烦的全局。
其次,onCreate 是故意在寻呼机上调用的,因此您可以在它显示在屏幕上之前预加载一些内容。这是为了在用户左右滑动时提高渲染性能。如果你在滑动发生时加载,它会变得很糟糕而且很糟糕。
最后考虑将您的逻辑移至 onResume,除非您有充分的理由不这样做。如果这对您不起作用,则监视页面更改事件并调用您在每个 baseFragment 上创建的共享“加载”方法,您可以在那里简单地调用和处理您的代码。
推荐阅读
- java - 尝试不同的解决方案后,使用 JUnit4 Runner 进行 Spring 测试不起作用
- php - 使用 DateTime::createFromFormat() 而不滚动(错误)日期
- javascript - “未捕获的 TypeError:fileReader.readAsDataurl 不是函数”自动函数套管问题
- r - 使用 R 中的先前值应用可变变化率
- c++ - 在 C++11 中通过构造函数启动线程
- android - Xamarin.Forms.Forms.Init() 未找到
- git - 每天和每个开发人员的代码图提交量
- java - 如何通过hibernate jpa中的两个辅助表连接两个实体?
- ios - 节点中的 AVPlayerViewController
- javascript - 从 HTML 页面上传文件的问题