当我的应用程序多次最小化时,片段onPause()不被调用

时间:2018-08-22 06:45:37

标签: android android-fragments android-viewpager fragment

我在ViewPager中有片段。当我最小化应用程序时,它将在onPause()内的Fragment上调用ViewPager,然后在我恢复应用程序时,它将调用onResume()。但是当我再次最小化它时,onPause()不再被调用。
您对此有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我认为我已找到问题的原因。在“父片段”的onStop()上,他们放置了以下代码:

try {
        Field childFragmentManager = Fragment.class
                .getDeclaredField("mChildFragmentManager");
        childFragmentManager.setAccessible(true);
        childFragmentManager.set(this, null);
    } catch (NoSuchFieldException e) {
        throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
        throw new RuntimeException(e);
    }

我不知道这样做的目的,但这似乎是支持嵌套片段的bug的一种解决方法。 Getting the error "Java.lang.IllegalStateException Activity has been destroyed" when using tabs with ViewPager

在上面的链接中,建议将此代码添加到onDetach()上。但似乎他们错误地将其放置在onStop()上。

当我将上面的代码转移到onDetach()时,子片段的生命周期现在没有问题。

这很可怕,因为我仅支持该项目,而不是最初创建它的人。我只是希望这不会有任何副作用。非常感谢所有给出答案/建议的人。我很感激。 :)