android– 如何确定片段何时在ViewPager中可见

android– 如何确定片段何时在ViewPager中可见,第1张

概述问题:ViewPager中的片段onResume()在片段实际可见之前被触发.例如,我有两个使用ViewPager和FragmentPagerAdapter的片段.第二个片段仅供授权用户使用,我需要让用户在片段可见时登录(使用警告对话框).但是当第一个片段可见时,ViewPager会创建第二个片段,以便缓存第二个片段,并在用

问题: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中可见所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1104534.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存