【问题标题】:TabHost without TabActivity, ActivityGroup, or LocalActivityManager没有 TabActivity、ActivityGroup 或 LocalActivityManager 的 TabHost
【发布时间】:2012-04-02 19:39:01
【问题描述】:

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

起初,我正在扩展 TabActivity 来这样做,但后来我意识到它已被弃用,所以我开始环顾四周。我发现有人建议在这里使用 ActivityGroup,但是......这也被弃用了。

StackExchange 上针对我遇到的问题的所有解决方案似乎都包含已弃用的功能。如 Android: TabHost without TabActivity 和 Android - Tabhost working in Activity class

拥有 TabHost 并允许标签包含 Fragments 而不使用已弃用功能的正确方法是什么?

以下是我目前拥有的

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);
    }
}

【问题讨论】:

标签: android android-fragments android-tabhost tabwidget


【解决方案1】:

拥有 TabHost 并允许标签包含 Fragments 而不使用已弃用功能的正确方法是什么?

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

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

或者,去掉你的“标签内容中的片段”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多