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