2

我编写了一个代码来将Activity A启动到Activity B.活动A和B都具有片段实现。onDetach没有调用片段?

方案:如果活动一个经常推出包含片段,活动B则大部分时候,它错过了Fragment.onDetach..I与日志检查,通常它给我以下重写方法日志:

  1. onAttach
  2. 列表项
  3. OnCreatView
  4. onViewCreate然后按设备的后退按钮
  5. 的onPause
  6. 的onStop
  7. onDestroyView
  8. onDetach

现在我按设备返回从活动B按钮,再次启动活动A则发射活动B和频繁重复相同的序列,然后登录顺序获得按下列顺序变化:

  1. onAttach
  2. 列表项
  3. OnCreatView
  4. onViewCreate然后按设备的后退按钮
  5. 的onPause
  6. 的onStop
  7. onDestroyView与
  8. onAttach重复而不onDetach

有时它重复相同的行为在onPause之后也。

我使用

getSupportFragmentManager().beginTransaction() 
     .replace(R.id.fragment_container, fragment).addToBackStack(null).commitAllowingStateLoss(); to add fragment in Activity. 

有什么我missing..any建议?

+0

所有片段事务都是异步的,也许fragmentmanager优化了这种行为,并且不会为了在此之后重新附加它而分离片段? – dominik4142 2014-10-17 09:16:15

+0

@pskink重新启动相同的片段..任何建议! – CoDe 2014-10-17 09:45:43

+0

重新启动?对不起,我没有得到它 – pskink 2014-10-17 09:46:46

回答

0

片段被销毁后被分离。你所做的是在破坏视图之后直接解开的。记住破坏和破坏视图是碎片中​​的两个不同的东西。 因此请尝试onDestroyView,然后onDestroy然后onDetach。

+0

onDetach在片段被破坏时不被调用,但当它停止连接到任何活动时!碎片可以(也应该)保留以备后用,由碎片管理器保存。 – dominik4142 2014-10-17 10:18:00