2012-03-19 62 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

相关问题