2015-07-21 42 views
1

我有一個單一的活動,讓我們說MainActivity。 在MainActivity的onCreate中,我正在加載FragmentOne。 FragmentOneListView,在單擊某個項目,它加載在MainActivityFragmentTwo。 現在我的問題是,當MainActivity顯示FragmentTwo,並且的被稱爲,如方向更改後等。MainActivity再次加載FragmentOne。 在相同的流的另一個問題是OptionsMenu,當片段創建的每個時間,它被附加了菜單多次。現在我已經保持了一面旗幟,並幫助savedInstance。有沒有其他方法?在單個活動中管理多個碎片的理想方式是什麼?

請注意,我是開發sdk,因此我想活動中的代碼量最小。

在此先感謝。

+0

試試這個http://stackoverflow.com/questions/19722979/implementing-multiple-fragments-in-a-single-activity-dynamically –

+0

@SaketMittal我已經通過它之前,這個問題是關於碎片之間的溝通,我的問題更可能是處理Activity-Fragment生命週期。 –

回答

0

檢查Fragment.setRetainInstance(布爾值):

公共無效setRetainInstance(布爾保留)

控制片段實例是否跨過活動重新創建保留
(例如從配置改變)。這隻能用於不在後面堆棧中的片段。如果設置,則在重新創建活動時,片段生命週期將略有不同:>當重新創建活動時:>

onDestroy()將不會被調用(但onDetach()仍然會因爲>片段與當前活動分離)。 由於片段未被重新創建,因此onCreate(Bundle)將不會被調用。 onAttach(Activity)和onActivityCreated(Bundle)仍然會被調用。

+0

沒有幫助,在發佈之前嘗試過。 我在這兩個片段: '@Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setRetainInstance(true); 日誌。d(「片段」,「片段二創建」); }' 日誌是有點像這樣: 'd /片段:MainActivity d /片段的的onCreate:的onCreate FragmentOne d /片段的:的onCreate MainActivity的:的onCreate FragmentTwo' 的旋轉屏幕 'd /片段後 D/Fragments:onCreate of FragmentOne' –

+0

@SwapnilBhoite無論如何,爲什麼你的活動不應該重新加載片段? [你可以查看有關運行時更改的文檔](http://developer.android.com/guide/topics/resources/runtime-changes.html) – Peyphour

相關問題