如何确定 Fragment 何时在 ViewPager 中可见

新手上路,请多包涵

问题:片段 onResume() in ViewPager 在片段真正可见之前被触发。

例如,我有 ViewPagerFragmentPagerAdapter 的 2 个片段。第二个片段仅适用于授权用户,我需要在片段可见时要求用户登录(使用警报对话框)。

但是 ViewPager 在第一个片段可见时创建第二个片段,以便缓存第二个片段并在用户开始滑动时使其可见。

所以 onResume() 事件早在第二个片段变得可见之前就在第二个片段中触发了。这就是为什么我试图找到一个在第二个片段变得可见时触发的事件以在适当的时刻显示一个对话框。

如何才能做到这一点?

原文由 4ntoine 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 906
2 个回答

如何确定 Fragment 何时在 ViewPager 中可见

您可以通过在 Fragment setUserVisibleHint 来执行以下操作:

 public class MyFragment extends Fragment {
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
        }
        else {
        }
    }
}

原文由 gorn 发布,翻译遵循 CC BY-SA 3.0 许可协议

科特林

override fun onHiddenChanged(hidden: Boolean) {
    super.onHiddenChanged(hidden)

    // Your code goes here..
}

原文由 Osama Remlawi 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题