Android两个具有相同活动的标签

时间:2011-05-21 18:30:46

标签: android android-layout

这应该很简单但不起作用。我想要的是两个使用相同活动类的不同选项卡。我不在乎他们是否共享相同的活动,或者他们每个人都有自己的实例。在此代码中,我将第二个选项卡设置为与第一个选项卡具有相同的活动,但只有第一个选项卡将加载到应用程序中。如果我点击第二个标签,我会看到一个黑屏:

//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的工作方式。

2 个答案:

答案 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");

希望这有帮助。