2014-04-17 146 views
0

我想替換片段並銷燬先前的片斷。Android - 片段替換未被替換

這裏我的代碼:

FragmentManager manager = getFragmentManager(); 
FragmentTransaction newT = manager.beginTransaction(); 
newT.replace(R.id.activity_content currentFragment, CE_TAG); 
newT.commit(); 

我讀這篇文章:http://sapandiwakar.in/replacing-fragments/

我沒有把片段回棧,但我的fragement沒有被破壞!

onPause()onDestroy()onStop()永遠不會被調用。

謝謝。

+0

你怎麼知道它是不是壞掉了? – tyczj

+0

因爲我顯示日誌在onDestroy方法 –

回答

0

嘗試

Fragment f = new YOurFragment(); 

fragmentTransaction.remove(f).commit();

希望它可以幫助

+0

已經嘗試,但不起作用。 –

+0

你可以在你的onDestroy()方法中使用同一行,但是不要刪除(f)你應該調用remove(this) – mha90

+0

onDestroy永遠不會被調用! –

0

嘗試加入這一行的代碼提交事務之後。

getChildFragmentManager().executePendingTransactions(); 

請檢查此executePendingTransactions

如果您使用相同標記替換片段,可能會導致重疊問題。此外,如果您的片段容器是LinearLayout,則替換後無法更新(僅限於我的經驗)。

0

片段即使在不再可見之後仍保留在內存中。如果將其重新命名爲onCreateView,則會重新創建片段的可視部分,但實際的對象會被重用。來自文檔:

onDestroy()=您的活動之前收到的最終呼叫是 已銷燬。這可能是因爲活動正在完成 (某人稱爲finish()或者因爲系統暫時爲 銷燬此活動的實例以節省空間。您可以使用isFinishing()方法區分這兩個方案。

你應該考慮onDestroyView代替,或致電finish如果更適合你。

http://developer.android.com/reference/android/app/Fragment.html