在我的应用程序中,我有4 fragment
进入 MainActivity ,我使用ViewPager
来展示此fragments
。
在每个fragments
中,我都有API调用。
但是当运行应用程序时,运行此4 fragments
中的所有API调用!
我想在每个fragments
点击时,然后运行此API调用。
我在fragment
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
我该怎么办?请帮帮我
答案 0 :(得分:2)
这是因为由于屏幕页面限制默认值而在启动活动时已经加载了片段,因此代码运行所有片段,您必须将屏幕页面限制设置为零,这样只有一个片段将一次加载:
yourViewPager.setOffscreenPageLimit(0);
public void setOffscreenPageLimit(int limit)设置页数 应保留在视图中当前页面的任一侧 处于空闲状态的层次结构。超出此限制的页面将被重新创建 需要时从适配器。这是作为优化提供的。如果 您事先知道需要支持的页数或 在你的页面上有适当的延迟加载机制,调整它 设置可以在感知到的寻呼动画的平滑性方面具有益处 和互动。如果您有少量页面(3-4) 可以一次保持活动状态,在布局上花费的时间更少 新创建的视图子树作为用户来回页面。您 应该保持这个限制,特别是如果您的页面很复杂 布局。此设置默认为1.参数:limit - 多少 页面将在空闲状态下保持在屏幕外。
<强>更新强>
正如我从this question所知,最小页面限制 1 且不能小于此值,因此最佳解决方案是this answer async doc 1}}要在每个片段中检查的函数:
setUserVisibleHint