2012-03-19 91 views
0

我還沒有使用android 3.0+,也沒有操作欄,所以我有一個關於可以在操作欄中實現的選項卡的問題。它僅限於更換碎片嗎?選項卡可以:第一個活動,第二個片段?從我檢查過的例子中,有一個主要的活動有一個操作欄,每個標籤的內容都是一個單獨的片段。很抱歉,如果我的問題是明顯的。提前感謝你。android 3.0+動作欄選項卡

回答

2

我沒有看到你使用活動作爲第一個使用片段爲他們所有的優勢嗎?片段非常強大,可以提供與活動一樣多的片段。

話雖如此,你應該能夠得到一個回調時,選擇一個選項卡,所以在該回調中,你所要做的就是加載一個活動。確保您在加載新的活動時通過當前選定的選項卡,以便用戶可以看到選擇了哪一個。

使用片段的原因是您不必加載新的活動,並且可以用新內容替換當前片段。

+0

的事情是,我想在第一個活動兩個片段,這是第一個標籤。因此,如果我使用第一個選項卡的片段,該片段是否可以包含另外兩個片段?我有點困惑,希望我也不會迷惑你。 – Sandra 2012-03-19 16:06:01

+0

您不能在另一片段內嵌入片段。 – Mimminito 2012-03-19 16:08:43

+0

所以我應該將它們嵌入到一個活動中,並且該活動可以是該活動欄的一個選項卡,對吧? :S – Sandra 2012-03-20 09:02:04

1

即使基本代碼的結構使其易於操作,也沒有任何說你必須切換片段。

例如,我只是使用製表符來更改一次加載的視圖佈局層次結構中元素的可見性,並且工作正常。如果您的視圖層次結構不那麼複雜,這看起來更有效率,因爲它消除了片段事務。據推測,改變視圖的可見性非常有效。

下面是一個不完整的代碼片段給你怎麼不理片段交易和做自己的事的想法:

public class AudioManagerTabListener<T extends Fragment> implements 
     ActionBar.TabListener { 
    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     switch ((Integer) tab.getTag()) { 
     case TAG_SHARED: 
      mGridViewWrapper.setVisibility(View.VISIBLE); 
      break; 
     case TAG_PLAYING: 
      mNowPlayingWrapper.setVisibility(View.VISIBLE); 
      break; 
     case TAG_PLAYLIST: 
      break; 
     case TAG_ARTISTS: 
      break; 
     case TAG_ALBUMS: 
      break; 
     case TAG_SONGS: 
      break; 
     } 
     if (DBG.AUDIO) { 
      Log.d(TAG, 
        "SettingsTabListener- onTabSelected - Tag: " 
          + tab.getText()); 
     } 

    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     switch ((Integer) tab.getTag()) { 
     case TAG_SHARED: 
      mGridViewWrapper.setVisibility(View.GONE); 
      break; 
     case TAG_PLAYING: 
      mNowPlayingWrapper.setVisibility(View.GONE); 
      break; 
     case TAG_PLAYLIST: 
      break; 
     case TAG_ARTISTS: 
      break; 
     case TAG_ALBUMS: 
      break; 
     case TAG_SONGS: 
      break; 
     } 
     if (DBG.AUDIO) { 
      Log.d(TAG, 
        "SettingsTabListener- onTabUnSelected - Tag: " 
          + tab.getText()); 
     } 

    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     if (DBG.AUDIO) { 
      Log.d(TAG, "SettingsTabListener- onTabReselected- Position: " 
        + tab.getPosition()); 
     } 
    } 
} 
+0

謝謝你的回答。我會考慮到另一種情況。目前,我的佈局非常複雜,我通過爲每個選項卡分別創建一個片段來解決我的問題。 – Sandra 2012-05-07 11:39:42