2011-11-15 27 views
3

我想知道我是否可以像活動一樣管理片段。
我實現了帶片段的選項卡功能(實際上,我無法使用TabHoststartActivityForResult得到結果),並且我希望在選擇選項卡菜單時保存其以前的視圖,如使用意圖FLAG_ACTIVITY_REORDER_TO_FRONT調用每個片段。每當我更換片段時,程序總是會創建新的片段。
有什麼想法?
在此先感謝。Android:如何在單個Activity中管理片段?

ps。我試圖使用savedInstanceState,但Bundle只提供putIntputString, putBundle等。是否可以保存視圖或其他對象?

@PatrickBoos 這是我的代碼。聲明FragmentManager fmFragmentTransaction ft

AFragment fragment = AFragment.getInstance(); 
if (!fragment.isAdded()) 
    ft.replace(res, fragment, tag); 
ft.commit(); 

和AFragment.newInstance()實現爲,

AFragment mThis; 
public static AFragment getInstance() { 
    if (mThis == null) 
     mThis = new AFragment(); 
    return mThis; 
} 
+0

你能後顯示你在哪裏做替換片段的一些代碼?我想你是一直在創造一個新片段的人。嘗試保存對創建標籤的引用,並在替換片段時使用它們。 –

回答

4

嘗試使用相似的代碼下面的東西重用片段

ContactListFragment contactListFragment = 
    (ContactListFragment)getFragmentManager().findFragmentByTag("ContactList"); 
if(contactListFragment == null){ 
contactListFragment = new ContactListFragment(); 
} 
ft.replace(R.id.fragment_container, contactListFragment,"ContactList"; 
ft.commit();  
+0

感謝您的關注。但可悲的是,它不起作用。它會拋出IllegalStateException,因爲片段不能被添加兩次(錯誤消息表示'已添加片段')。 – Aigori

相關問題