我有一个视图分页,其中包含2个片段。
现在,当用户加载活动时,两个视图都被加载,它们都包含分析标记,应用程序从两个片段发送视图标记。
我想限制这一点。我希望它不执行任何代码从fragment2,除非用户点击它从视图页签。
发布于 2018-09-13 20:22:22
在ViewPager的情况下,I think...the minimum offScreenPageLimit默认设置为1是不可能的,所以默认情况下它会每一面加载一个页面。因此,最好将其设置为自定义视图,并根据用户点击来加载片段。
或者检查这个变通方法,也许this会对您的情况有所帮助。我从未试过,但你可以试一试。
发布于 2018-09-13 20:40:46
您可以在fragment变得可见之后再做这些事情
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
else {
}
}发布于 2018-09-13 21:06:22
viewpager的最佳实现是回收viewpager项。你可以通过使用offScreenPageLimit来实现它。然而,在回答你的问题时,我自己也遇到过类似的情况,目前还没有完美的解决方案来实现这种情况。但是有一些你可以做的黑客行为。
一种解决方案是使用
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
else {
}
}只有当片段对用户可见时,才会执行此操作。但是这个函数也有一些缺陷。在某些边缘情况下,这不能很好地执行,这将导致一个空的片段。
如果我正在集成viewpager和tablayout,并且如果只有Viewpager,你可以覆盖"OnPageSelectedListener“,那么我所做的就是使用"OnTabSelectedListener”。
如果你使用的是OnTabSelectedListener,,当一个标签被选中时,你会在"OnTabSelected()“方法中得到回调。因此,当您获得回调时,请在相应片段中使用公共函数来加载数据(Api调用、设置适配器等)。
希望这能有所帮助
https://stackoverflow.com/questions/52313557
复制相似问题