【发布时间】: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);
}
}
【问题讨论】:
-
查看
TabActivity上显示的替换示例developer.android.com/reference/android/app/TabActivity.html -
替换示例正在扩展 FragmentActivity,如果我使用它,我将无法在选项卡内容中包含片段,因为选项卡内容本身就是一个片段,您不能嵌套它们。
标签: android android-fragments android-tabhost tabwidget