如何知道Fragment何时变得不可见

时间:2014-03-07 21:45:44

标签: java android android-viewpager fragment

我正在使用ViewPager和PagerSlidingTabStrip,我有3个片段,每个片段都有自己的自定义监听器。在每个片段中,我都覆盖了Destroy,Pause方法,但不幸的是,当我从一个片段移动到另一个片段时,我必须删除一个片段的监听器,但是由于片段保留在内存中,所以没有上述方法被调用。这些方法仅在我移动到另一个Activity时调用。那么任何身体都可以告诉我如何知道片段是否会变得不可见以便我可以删除监听器,否则这些监听器将会干扰我所有片段的数据。

3 个答案:

答案 0 :(得分:4)

我在我的片段中使用它,这被调用两次。 1)当你离开屏幕2)首次创建片段时。解决检查this link

@Override
    public void setUserVisibleHint(boolean visible){
        super.setUserVisibleHint(visible);
        if (!visible){
            //when fragment becomes invisible to user,do what you want...
        }
}

答案 1 :(得分:1)

使用ViewPager,您最好覆盖Fragment.setUserVisibleHint() Fragment.onHiddenChanged()并对可见/隐藏状态更改做出反应。您仍需要实施onPause() / onResume()。我在this answer中详细解释了它。

答案 2 :(得分:0)

您应该使用onPause()onResume()作为onDestroy()仅在片段从内存中删除时被调用,而不是在它停止运行时被调用。

此外,在分页设置中,相邻片段将继续运行。当前片段两侧各一个。

对于可见性检查,您可以检查此主题:

How to determine when Fragment becomes visible in ViewPager