我正在尝试将标签主机设置为布局的元素。我见过的所有例子都在视图中显示了TabHost。这些示例工作正常,但是当试图使其成为另一个布局的一部分时,它似乎不起作用。我没有找到任何指明这种或那种方式的文档。
这样的工作(并非所有代码都是为了说明目的而显示):
<TabHost>
<LinearLayout>
<TabWidget/>
<FrameLayout>
<TextView
android:text="this is a tab" />
<TextView
android:text="this is another tab" />
<TextView
android:text="this is a third tab" />
</FrameLayout>
</LinearLayout>
</TabHost>
然而,这不起作用:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android">
我做错了什么或者这是不可能的?
这是我的onCreate方法:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
是否需要设置某些内容?
当我说它不起作用时,我的意思是在模拟器上运行应用程序后,我得到一个弹出窗口:“应用程序xxx(进程com.example)意外停止。请再试一次。”< / strong>
如果我删除标签代码,它会再次起作用。我正在为Android 1.6开发,如果这有所不同。
答案 0 :(得分:1)
它正在工作!!
感谢你们说它应该可行,我一直在寻找问题,与我自己单独使用TabHost的例子相比。
问题在于我的onCreate()方法。我需要获取标签主机并在那里添加标签,我(出于某种原因)认为它只是在xml中就足够了。
我的onCreate最终看起来像这样:(因为有人和我一样犯了同样的愚蠢错误)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost mTabHost = getTabHost();
mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("Tab 1").setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("Tab 2").setContent(R.id.textview2));
mTabHost.addTab(mTabHost.newTabSpec("tab_test3").setIndicator("Tab 3").setContent(R.id.textview3));
mTabHost.setCurrentTab(0);
}