Android Fragment:getActivity()从后台返回null

时间:2016-12-22 11:42:38

标签: android android-fragments android-activity android-viewpager

我正在开发一个有活动的android应用程序。该Activity有一个ViewPager,它使用FragmentStatePagerAdapter加载两个片段。

正在Activity的onResume方法上重新创建此适配器。

这就是错误的出现方式:

创建活动后,我将我的应用程序置于后台(使用设备的主页按钮),然后打开其他应用程序(特别是那些占用大量内存的应用程序)。之后,我从后台再次打开我的应用程序。我在viewPager中的一个片段中有这样的方法:

public void doSomething(){
    if(getActivity() != null) {
        ((HomeActivity) getActivity()).doThings():
    }
}

调试时我发现getActivity()方法此时返回null。所以“doThings()”方法永远不会被执行。我还注意到Fragment的视图已经创建了。

当我在应用程序的后台时间没有打开消耗内存的其他应用程序时,我没有这个问题。

这是溢出内存错误吗?为什么如果片段似乎正确加载,getActivity()方法返回null?

提前谢谢

1 个答案:

答案 0 :(得分:0)

您可以覆盖片段中的onAttach(Activity)方法,并在那里获得对您的活动的引用。