对Activity的引用被破坏了吗?

时间:2014-02-07 17:41:11

标签: android android-fragments

我有一个Activity实现FragmentDelegate并处理我的所有片段。我的片段来自CCPFragment:

public class CCFragment extends SherlockFragment{
    public FragmentDelegate m_fragmentDelegate;

    public void setFragmentDelegate(FragmentDelegate fd){
        m_fragmentDelegate=fd;
    }
}

当片段被创建并添加到我的视图中时,它会接收Activity并保存对它的引用:

fragment.setFragmentDelegate(this);

现在,我想,如果一个Activity被破坏,片段也会被破坏。但我的问题是,当我按下主页按钮,然后一段时间后,我再次打开我的应用程序,片段的m_fragmentdelegate为空!怎么可能呢?

1 个答案:

答案 0 :(得分:0)

好吧,我不是百分百肯定的,但这就是我的想法:如果应用程序被最小化,Android有时会破坏一些打开的视图。当您重新打开它时,Android会尝试将应用程序恢复到其最后状态,从而重新创建您的片段。现在,如果Android重新创建了Fragment,setFragmentDelegate()当然永远不会被调用。我要解决此问题的方法是使用片段onAttach()方法,而不是使用setFragmentDelegate()设置侦听器。有关示例,请参阅here