2012-01-31 144 views
5

我設法創建了一個ActionBar選項卡菜單,調用擴展片段的不同類。 問題是,當我改變方向時,在菜單項之間切換什麼都不做。 但我終於明白了這個問題。Android ICS + ActionBar選項卡+方向更改

主要的問題是這裏的老片段不被刪除的方向變化時,所以總有一個未使用的標籤的只是用戶所選擇的選項卡

任何想法以上的副本?我缺少一些基本的東西?

謝謝

回答

15

我終於找到了我自己的解決方案,在我的自定義ActionBar.TabListener類我有ft.add將添加的片段,以我觀定義的onTabSelected方法。

當方向改變時,方法onTabUnselected沒有被調用,所以碎片仍然存在。

更換ft.addft.replace設法刪除所有舊片段,在新的地方正確顯示。

希望這有助於別人

1

我認爲這是更好地保存的selectedIndex上的活動娛樂。 這樣你就沒有問題,因爲選擇了相同的索引,而不需要取消選擇,對用戶來說也更好。

protected void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     int i = getActionBar().getSelectedNavigationIndex(); 
     outState.putInt("selectedTabIndex", i);  
} 

    //And then restore 
    private void initActionBar(Bundle savedInstanceState) { 
     ActionBar ab = getActionBar(); 
     ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     ab.addTab(...); 
      ... 

     if(savedInstanceState != null) { 
      int index = savedInstanceState.getInt("selectedTabIndex"); 
      getActionBar().setSelectedNavigationItem(index); 
     } 
-1

有標籤聽者的舊片段(得自onTabUnselected左()不會被調用),並將其分離的構造檢查。有一個專門爲ActionBarSherlock製作的選項卡偵聽器:FragmentTabListener.java。來自API演示的FragmentTabs.java中也有相同的構造函數代碼(沒有支持庫的情況下使用)。

相關問題