Android 安卓3.0+;操作栏选项卡

Android 安卓3.0+;操作栏选项卡,android,tabs,android-actionbar,Android,Tabs,Android Actionbar,我没有使用过android 3.0+,也没有使用过操作栏,所以我有一个关于可以在操作栏中实现的选项卡的问题。是否仅限于更改片段?选项卡是否可以是:第一个是活动,第二个是片段?从我查看的示例中,有一个主要活动有一个操作栏,每个选项卡的内容都是一个单独的片段。。对不起,如果我的问题很明显。提前谢谢你。我不认为你首先使用一个活动比全部使用片段有什么好处?片段非常强大,可以提供与活动一样多的功能 话虽如此,您应该能够在选择选项卡时获得回调,因此在该回调中,您所要做的就是加载一个活动。在加载新活动时,请确

我没有使用过android 3.0+,也没有使用过操作栏,所以我有一个关于可以在操作栏中实现的选项卡的问题。是否仅限于更改片段?选项卡是否可以是:第一个是活动,第二个是片段?从我查看的示例中,有一个主要活动有一个操作栏,每个选项卡的内容都是一个单独的片段。。对不起,如果我的问题很明显。提前谢谢你。

我不认为你首先使用一个活动比全部使用片段有什么好处?片段非常强大,可以提供与活动一样多的功能

话虽如此,您应该能够在选择选项卡时获得回调,因此在该回调中,您所要做的就是加载一个活动。在加载新活动时,请确保传入当前选定的选项卡,以便用户可以看到所选的活动


使用片段的原因是,您不必加载新的活动,您可以用新内容替换当前片段。

我不认为您首先使用活动比全部使用片段有什么好处?片段非常强大,可以提供与活动一样多的功能

话虽如此,您应该能够在选择选项卡时获得回调,因此在该回调中,您所要做的就是加载一个活动。在加载新活动时,请确保传入当前选定的选项卡,以便用户可以看到所选的活动


使用片段的原因是,您不必加载新的活动,您可以用新内容替换当前片段。

没有任何规定您必须切换片段,即使基本代码的结构使其易于操作

例如,我只是使用选项卡来更改一次加载的视图布局层次结构中元素的可见性,这很好。如果您的视图层次结构没有那么复杂,那么这似乎效率更高,因为它消除了片段事务。据推测,更改视图的可见性非常有效

下面是一个不完整的代码片段,让您了解如何忽略片段事务并执行自己的操作:

    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());
        }
    }
}
公共类AudioManagerTabListener实现
ActionBar.TabListener{
@凌驾
已选择的公共事务(选项卡,碎片事务ft){
开关((整数)tab.getTag()){
案例标签共享:
mGridViewWrapper.setVisibility(View.VISIBLE);
打破
case TAG_播放:
mNowPlayingWrapper.setVisibility(View.VISIBLE);
打破
案例标签播放列表:
打破
case TAG_艺术家:
打破
case TAG_相册:
打破
case TAG_歌曲:
打破
}
if(DBG.AUDIO){
Log.d(标签,
“SettingsTabListener-onTabSelected-Tag:”
+tab.getText());
}
}
@凌驾
已选择公共空页(选项卡,碎片事务ft){
开关((整数)tab.getTag()){
案例标签共享:
mGridViewWrapper.setVisibility(View.GONE);
打破
case TAG_播放:
mNowPlayingWrapper.setVisibility(View.GONE);
打破
案例标签播放列表:
打破
case TAG_艺术家:
打破
case TAG_相册:
打破
case TAG_歌曲:
打破
}
if(DBG.AUDIO){
Log.d(标签,
“SettingsTabListener-onTabUnSelected-Tag:”
+tab.getText());
}
}
@凌驾
已重新选择公共无效页签(页签,碎片事务){
if(DBG.AUDIO){
Log.d(标记“SettingsTabListener-onTabReselected-Position:”
+tab.getPosition());
}
}
}

没有任何东西要求您必须切换片段,即使基本代码的结构使其易于操作

例如,我只是使用选项卡来更改一次加载的视图布局层次结构中元素的可见性,这很好。如果您的视图层次结构没有那么复杂,那么这似乎效率更高,因为它消除了片段事务。据推测,更改视图的可见性非常有效

下面是一个不完整的代码片段,让您了解如何忽略片段事务并执行自己的操作:

    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());
        }
    }
}
公共类AudioManagerTabListener实现
ActionBar.TabListener{
@凌驾
已选择的公共事务(选项卡,碎片事务ft){
开关((整数)tab.getTag()){
案例标签共享:
mGridViewWrapper.setVisibility(View.VISIBLE);
打破
case TAG_播放:
mNowPlayingWrapper.setVisibility(View.VISIBLE);
打破
案例标签播放列表:
打破
case TAG_艺术家:
打破
case TAG_相册:
打破
case TAG_歌曲:
打破
}
if(DBG.AUDIO){
Log.d(标签,
“SettingsTabListener-onTabSelected-Tag:”
+tab.getText());
}
}
@凌驾
已选择公共空页(选项卡,碎片事务ft){
开关((整数)tab.getTag()){
案例标签共享:
mGridViewWrapper.setVisibility(View.GONE);
打破
case TAG_播放:
mNowPlayingWrapper.setVisibility(View.GONE);
打破
案例标签播放列表:
打破
case TAG_艺术家:
打破
case TAG_相册:
打破
case TAG_歌曲:
打破
}
if(DBG.AUDIO){
Log.d(标签,
“设置