这应该很简单但不起作用。我想要的是两个使用相同活动类的不同选项卡。我不在乎他们是否共享相同的活动,或者他们每个人都有自己的实例。在此代码中,我将第二个选项卡设置为与第一个选项卡具有相同的活动,但只有第一个选项卡将加载到应用程序中。如果我点击第二个标签,我会看到一个黑屏:
//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的工作方式。
答案 0 :(得分:1)
尝试这样的事情:
TabHost tabHost = getTabHost();
TabSpec spec = null;
tabSpec = tabHost.newTabSpec("tabSpec");
tabSpec.setIndicator(someString, someDrawable);
tabSpec.setContent(new Intent(getApplicationContext(), CameraListView.class));
tabHost.addTab(tabSpec);
tabSpec = tabHost.newTabSpec("tabSpec");
tabSpec.setIndicator(someString, someDrawable);
tabSpec.setContent(new Intent(getApplicationContext(), CameraListView.class));
tabHost.addTab(tabSpec);
<强> //修改
在评论中回答您的问题。我什么都不知道你想做什么。我有完全相同的问题。最后,我通过创建从firstTabActivity
继承的新Activity来解决它,并将其放在第二个选项卡中。在您的情况下,我认为这将非常简单 - SecondTabActivity
扩展FirstTabActivity
并覆盖方法onListItemClick()
。
答案 1 :(得分:0)
为每个 tabspec 使用不同的代码;
tabSpec = tabHost.newTabSpec("tabSpec");
tabSpec = tabHost.newTabSpec("tabSpec2");
希望这有帮助。