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