线性布局内的Android Tabview

时间:2011-03-15 10:37:27

标签: android android-tabhost

我想创建一个Activity,其顶部有一个标题,下面有一个TabHost。这就是我在XML文件中的内容

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"
    android:layout_width="fill_parent" android:layout_height="fill_parent">
    <include layout="@layout/formheader" />
    <TabHost android:id="@+id/distributionTabhost" android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <LinearLayout android:orientation="vertical" android:layout_width="fill_parent"
            android:layout_height="fill_parent">
            <TabWidget android:id="@+id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" />
            <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent"
                android:layout_height="fill_parent">
                <TextView android:id="@+id/textview2" android:layout_width="fill_parent" android:layout_height="fill_parent"
                    android:text="this is another tab" />
                <TextView android:id="@+id/textview3" android:layout_width="fill_parent" android:layout_height="fill_parent"
                    android:text="this is a third tab" />
            </FrameLayout>
        </LinearLayout>
    </TabHost>
</LinearLayout>

如果你观察到我有一个标题

    <include layout="@layout/formheader" />

我的活动类继承自Activity,而不是TabActivity。这是

的代码
public class DistributionActivity extends android.app.Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.distribution);

        TabHost mTabHost = (TabHost) findViewById(R.id.distributionTabhost);
    mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Tab 2").setContent(R.id.textview2));
        mTabHost.setCurrentTab(0);
    }
}

当我运行应用程序时,我在addTab行获得了NULL POINTER EXCEPTION。有人可以指导我如何创建一个活动,不仅有Tab,还有其他控件。

由于

2 个答案:

答案 0 :(得分:2)

解决了问题

mTabHost.setup();

必须在setContentView()

之后添加以下行

答案 1 :(得分:2)

从API级别10开始,上述内容失败:

  

E / AndroidRuntime(19550):java.lang.RuntimeException:无法启动   活动......   java.lang.RuntimeException:你的TabHost必须有一个TabWidget   id属性是'android.R.id.tabs'

将TabWidget ID更改为以下内容:

<TabWidget android:id="@android:id/tabs"...

一切都很好。