2013-02-23 24 views
2

我在我的Android應用程序中使用TabListener類似於此:http://developer.android.com/guide/topics/ui/actionbar.html#Tabs的Android TabListener:onTabSelected - 添加片段回棧

onTabSelected實現:

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
    Fragment preInitFrag = mActivity.getFragmentManager().findFragmentByTag(mTag); 
    if (preInitFrag == null) { 
     mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs); 
     ft.add(android.R.id.content, mFragment, mTag); 
    } else { 
     ft.attach(preInitFrag); 
    } 
} 

選擇一個選項卡每一次,我想要將其添加到後退堆棧。我怎樣才能做到這一點?使用參數ftft.addToBackStack("test"),它不起作用。它拋出一個致命異常:

java.lang.RuntimeException: 
    Unable to start activity ComponentInfo{.../...BaseActivity}: 
java.lang.IllegalStateException: 
    This FragmentTransaction is not allowed to be added to the back stack. 
+0

這是'addToBackStack(字符串名稱)'你應該傳遞給它的片段類的名稱。 – abc667 2013-02-23 18:47:08

+0

我不明白你的意見,對不起。如何在''onTabSelected''callback中執行'addToBackStack'? – Tim 2013-02-23 20:38:03

回答

3

,你在你的問題有這樣一段話大約後退堆棧(在該選項卡監聽器示例代碼下面的「警告」一節)連接到ActionBar guide

您也不能將這些碎片事務添加到後退堆棧。

該指南並沒有解釋爲什麼,但你想要什麼不被支持。您必須以其他方式保留標記歷史記錄,或根本不保留標籤歷史記錄。

+0

哦,我讀了這個頁面10多次,但是我沒有看到。好吧,我必須以其他方式解決它。謝謝。 – Tim 2013-02-23 22:06:57