这应该很简单,但它不起作用。我想要的是两个不同的选项卡,它们使用相同的活动类别。我不在乎他们是否共享相同的活动,或者他们各自拥有自己的实例。在此代码中,我将第二个选项卡设置为与第一个选项卡相同的活动,但只有第一个选项卡会加载到应用程序中。如果我点击第二个标签页,我会看到一个黑屏:Android两个具有相同活动的选项卡
//Create tabs
Resources res = getResources();
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
String tabTitle = getString(R.string.livevideo);
// Initialize intent
// Initialize tabspec for each tab and add it to host
intent = new Intent().setClass(this, CameraListView.class);
spec = tabHost.newTabSpec("live").setIndicator(tabTitle,res.getDrawable(R.drawable.livebtn)).setContent(intent);
tabHost.addTab(spec);
tabTitle = getString(R.string.videoplayback);
intent = new Intent().setClass(this, CameraListView.class);
spec = tabHost.newTabSpec("playback").setIndicator(tabTitle,res.getDrawable(R.drawable.playbackbtn)).setContent(intent);
tabHost.addTab(spec);
难道这不就是一件简单的事吗?我认为用相同的活动制作新的意图会实例化活动的第二个副本,但也许这不是Android的工作方式。
所以他们在这里键是使用相同的tabspec名称为这两个选项卡。这确实得到了两个选项卡上的相同的活动,但我需要每个选项卡具有不同的ID。因此,这两个选项卡共享一个列表视图,但取决于选项卡类型将决定选择某个项目时显示的活动。有关如何在具有相同活动的情况下将选项卡引用为不同的想法? – spentak 2011-05-21 19:17:04
你好再次:)不,tabSpec不必为这两个选项卡具有相同的名称 - 你可以在我的代码中看到,我调用两次tabSpec = tabHost.newTabSpec(“tabSpec”);这意味着第二次初始化后的tabSpec是完全新的实例,而方法newTabSpec(String tag)的参数也不必相同。说实话,我不知道你和我的代码之间有什么区别:)查看我编辑的关于你评论第二部分的答案。 – 2011-05-21 21:02:35