不带TabActivity、ActivityGroup或LocalActivityManager的TabHost



我正在创建一个在主屏幕上有三个选项卡的应用程序。我将每个选项卡的内容设置为单独的"活动"。我使用活动而不是Fragments的原因是,在其中一个选项卡中,我需要能够拥有Fragments,而嵌套的Fragments不受支持。

起初,我正在扩展TabActivity来实现这一点,但后来我意识到它已被弃用,所以我开始四处寻找。我发现有人建议在这里使用ActivityGroup,但是。。。这也遭到了反对。

StackExchange上针对我遇到的问题的所有解决方案似乎都包含不推荐使用的功能。例如,Android:没有TabActivity的TabHost,以及在活动类中工作的Android-TabHost

在不使用不推荐使用的功能的情况下,使用TabHost并允许选项卡包含片段的正确方法是什么?

以下是我目前拥有的

import android.app.ActivityGroup;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
public class HomeTabs extends ActivityGroup {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TabHost host = (TabHost)findViewById(android.R.id.tabhost);
        LocalActivityManager mlam = new LocalActivityManager(this, false);
        mlam.dispatchCreate(savedInstanceState);
        host.setup(mlam);
        TabSpec spec = host.newTabSpec("Home");
        spec.setContent(new Intent(this, HomeActivity.class));
        spec.setIndicator("Home");
        host.addTab(spec);
        spec = host.newTabSpec("Browse");
        spec.setContent(new Intent(this, BrowseActivity.class));
        spec.setIndicator("Browse");
        host.addTab(spec);
        spec = host.newTabSpec("About");
        spec.setContent(new Intent(this, AboutActivity.class));
        spec.setIndicator("About");
        host.addTab(spec);
    }
}

在不使用不推荐使用的功能的情况下,使用TabHost并允许选项卡包含片段的正确方法是什么?

在选项卡中放置视图,无论是在布局中静态地作为FrameLayoutTabHost内的直接子级,还是通过采用TabContentFactorysetContent()变体动态地放置视图。AFAIK,这些视图可以获取管理片段(例如,ViewPager)的东西,或者可能通过<fragment>元素直接获取片段本身。

或者,不要使用TabHost。使用操作栏中的选项卡,使用ActionBarSherlock实现向后兼容性。或者,使用ViewPager。或者,使用ViewFlipperTabWidget(尽管有文档,但它们似乎对TabHost没有实际依赖关系)。或者,使用ViewFlipper和其他一些控制机制在"选项卡"之间切换。

或者,去掉"选项卡内容中的片段"。

相关内容

  • 没有找到相关文章

最新更新