我想创建一个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,还有其他控件。
由于
答案 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"...
一切都很好。