【问题标题】:onPause(), onStop(), setUserVisibleHint(), and onHiddenChange() is not getting Called while using ViewPager Fragments使用 ViewPager 片段时未调用 onPause()、onStop()、setUserVisibleHint() 和 onHiddenChange()
【发布时间】:2016-06-27 14:10:47
【问题描述】:

我有一个 ViewPager,其中包含 2 个选项卡(2 个单独的片段)。

我的第二个选项卡由另一个 ViewPager 中的另外 6 个子选项卡(每个单独的片段)组成。

现在当我在 6 个子选项卡之间切换时,会调用 setUserVisibleHint() 方法。

但是当我出现在我的 6 个子选项卡(即片段)中的任何一个上时,我尝试在 2 个父选项卡之间切换。子标签片段的 onPause()、onStop()、setUserVisibleHint() 和 onHiddenChange() 等方法都不会被调用。

那么你能帮我知道当我在 2 个父选项卡之间切换时会调用子片段的哪个方法吗?

如果没有任何方法会被子片段调用,那么我如何实现或知道父选项卡之间存在切换并在子片段中调用方法?

【问题讨论】:

    标签: android android-fragments android-viewpager android-tabs


    【解决方案1】:

    在这种情况下,您不应依赖片段生命周期。它由适配器控制,如果调用了这些回调中的任何一个,它并不能保证任何事情。

    请改用onPageChangeListener。例如,您可以通过onResume 中的addOnPageChangeListener 将其设置在ViewPager 对象上,并在onPause 中调用removeOnPageChangeListener。它有一个方法onPageChanged,每次切换页面时都会调用它。

    【讨论】:

    • 感谢您的回答,但我没有得到您要求我在实现 ViewPager 的 Activity 中设置这些提到的侦听器的一件事?或在哪里?我有单独的 FragmentClass、单独的 Adapter 类和单独的 Activity 类。
    • 在你有ViewPager的地方设置监听器,我相信你的活动中有它。如果您需要从侦听器访问您的片段,请将此作为参考:stackoverflow.com/questions/8785221/…
    猜你喜欢
    • 2013-10-08
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多