
问题:VIEwPager中的片段onResume()在片段实际可见之前被触发.
例如,我有两个使用VIEwPager和FragmentPagerAdapter的片段.第二个片段仅供授权用户使用,我需要让用户在片段可见时登录(使用警告对话框).
但是当第一个片段可见时,VIEwPager会创建第二个片段,以便缓存第二个片段,并在用户开始滑动时使其可见.
因此onResume()事件在第二个片段变为可见之前就被触发了.这就是为什么我试图找到一个事件,当第二个片段变得可见时,它会在适当的时刻显示一个对话框.
如何才能做到这一点?
解决方法:
更新:Android支持库(第11版)最后是fixed the user visible hint issue,现在如果您使用片段支持库,那么您可以安全地使用getUserVisibleHint()或覆盖setUserVisibleHint()来捕获gorn的答案所描述的更改.
更新1这是getUserVisibleHint()的一个小问题.默认情况下,此值为true.
// Hint provIDed by the app that this fragment is currently visible to the user.boolean mUserVisibleHint = true;因此,在调用setUserVisibleHint()之前尝试使用它时可能会出现问题.作为一种解决方法,您可以像这样在onCreate方法中设置值.
public voID onCreate(@Nullable Bundle savedInstanceState) { setUserVisibleHint(false);过时的答案:
在大多数用例中,VIEwPager一次只显示一个页面,但如果您在AndroID支持库pre-r11中使用FragmentStatePagerAdapter,则预缓存的片段也会处于“可见”状态(实际上不可见).
我覆盖:
public class MyFragment extends Fragment { @OverrIDe public voID setMenuVisibility(final boolean visible) { super.setMenuVisibility(visible); if (visible) { // ... } } // ...}捕获片段的焦点状态,我认为这是你所说的“可见性”最合适的状态,因为VIEwPager中只有一个片段实际上可以将其菜单项与父活动的项目放在一起.
总结以上是内存溢出为你收集整理的android – 如何确定片段何时在ViewPager中可见全部内容,希望文章能够帮你解决android – 如何确定片段何时在ViewPager中可见所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)