0

我想要 1 个活动显示在 2 个选项卡上。

在我的主要我有以下几点:

    TabHost tabHost = getTabHost();  // The activity TabHost

    tabHost.addTab(tabHost.newTabSpec("tab0").setIndicator(tabNames[0]).setContent(R.id.tab0));
    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(tabNames[1]).setContent(R.id.tab1));

    Intent intent = new Intent().setClass(this, DMXControllerActivity.class);
    startActivity(intent);

在我的 main.xml 中,我在 FrameLayout 中有这个:

   <LinearLayout
       android:id="@+id/tab0"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="5dp">
    </LinearLayout>

   <LinearLayout
       android:id="@+id/tab1"
       android:orientation="vertical"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent"
       android:padding="5dp">
    </LinearLayout>

在我的活动中,我有这个:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    layoutTab0();
    layoutTab1();

}

私人无效布局Tab0(){

   LinearLayout ll_main = new LinearLayout(this);
   ll_main.setOrientation(LinearLayout.VERTICAL);

    LinearLayout myll = (LinearLayout) findViewById(R.id.tab0);

    myll.addView(ll_main);

    LinearLayout ll_sliders = new LinearLayout(this);
    ll_sliders.setOrientation(LinearLayout.VERTICAL);
    ll_main.addView(ll_sliders);

……………………

}

当我启动应用程序时,我看到我的 tab0 和 tab1 的内容彼此重叠。当我在模拟器中点击后退键时,我会按预期看到 2 个选项卡,但它们是空的。

如何让我的标签内容显示在标签上?

4

1 回答 1

0

您必须在设置 ContentView 后执行此代码:

TabHost tabHost = getTabHost();  // The activity TabHost
tabHost.addTab(tabHost.newTabSpec("tab0").setIndicator(tabNames[0]).setContent(R.id.tab0));
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(tabNames[1]).setContent(R.id.tab1));

将您的 onCreate() 更改为:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    TabHost tabHost = getTabHost();  // The activity TabHost
    tabHost.addTab(tabHost.newTabSpec("tab0").setIndicator(tabNames[0]).setContent(R.id.tab0));
    tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator(tabNames[1]).setContent(R.id.tab1));

    layoutTab0();
    layoutTab1();
}

在您的代码中,您正在创建选项卡,然后打开一个新活动。如果您不打开活动,选项卡将显示,但它们将为空,因为您没有向它们添加内容。您不必调用新活动,只需将内容添加到选项卡布局中即可。

于 2012-05-11T19:05:43.293 回答