2012-03-22 58 views
7

有人可以向我解釋,也可以指向一個鏈接或示例,說明在處理片段時應該如何處理屏幕方向。我目前遇到的問題是我有一個帶有三個選項卡的操作欄的應用程序。每個選項卡包含一個片段。因此,當我翻轉裝置,只爲使用使用操作欄中的選項卡處理屏幕方向的片段

actionbar.setSelectedNavigationItem(1) 

顯示(因爲沒有混亂,其他標籤是可見的,但是當我點擊他們沒有任何反應選擇我設置了一個片段,他們不能被選中並顯示,其內容從未顯示)。在這些情況下是否有這樣做?有人可以給我一個建議,我會很感激。謝謝你。

回答

13

我有同樣的問題,在這裏找到了一個解決方案: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentTabs.html

問題是,目前已經有碎片從以前保存的狀態選項卡。你必須停用它們。

這裏的代碼片段爲您TabListener的構造函數:

public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) { 
     mActivity = activity; 
     mTag = tag; 
     mClass = clz; 
     mArgs = args; 

     // Check to see if we already have a fragment for this tab, probably 
     // from a previously saved state. If so, deactivate it, because our 
     // initial state is that a tab isn't shown. 
     mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag); 
     if (mFragment != null && !mFragment.isDetached()) { 
      FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction(); 
      ft.detach(mFragment); 
      ft.commit(); 
     } 
    } 

希望我可以幫助你。

+0

幾天前,我想到了同樣的情況。但解決它有點不同。在片段中的onDestroyView方法中,我爲該特定片段調用remove,以便它不會是以前狀態的任何片段。但我想你也可以解決這個問題。所以謝謝你! – Sandra 2012-04-06 07:50:55

+0

很好解釋,有道理,解決了一個特定的常見問題。非常感謝。 A + – LeffelMania 2012-08-02 04:11:44

+1

謝謝!順便說一句,我使用隱藏/顯示,而不是detach/attach是一些地方,以避免片段視圖娛樂(有時很長)。而且它也起作用。 – 2013-10-17 10:51:27