TabHost中的活动

时间:2012-01-02 02:54:32

标签: android android-tabhost

我使用TabHost。 以下代码称为AActivity。

intent = new Intent().setClass(this, AActivity.class);
spec = tabHost.newTabSpec("A").setIndicator("A", res.getDrawable(R.drawable.icon)).setContent(intent);
tabHost.addTab(spec);

它在选项卡中。 但在AActivity中,我称之为BActivity。 BActivity将打开新页面,但不会在选项卡中打开。 如何让它在标签框架上? AActivity使用下面的代码来调用BActivity:

it = new Intent(this, BActivity.class);
startActivity(it);

3 个答案:

答案 0 :(得分:5)

如果要在选项卡中打开多个活动,则在活动地点上使用活动组进行参数选项卡,并在此活动组中切换视图以在单个选项卡中打开多个活动

您可以从this tutorial

获得一些帮助

答案 1 :(得分:2)

您需要更改当前选定的标签。 setCurrentTabByTag(String tag)类中有一个名为TabHost的方法可以执行此操作,只需传递标签的标记名称(在您的情况下为B),或者您可以使用setCurrentTab(int index)和传递标签索引。

实施例。通常我有一个MainActivity类,这是我的TabActivity。在这个类的内部,我将在onCreate方法上创建我需要的所有选项卡。

首先,我使用标签索引设置一些静态int。

    // Tab index.
    public static int FIRST_TAB = 0;
    public static int SECOND_TAB = 1;

稍后,我在onCreate方法中创建了我的标签。

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     // Setting the content view.
     setContentView(R.layout.main);
     // Getting the TabHost object.
     mTabHost = getTabHost();
     // Declaring the Intent object for the tabs.
     Intent intent;
     // Creating the First tab.
     intent = new Intent().setClass(this, MyFirstActivity.class);
     addTab(mTabHost, "First", FIRST_TAB, intent)
     // Creating the Second tab.
     intent = new Intent().setClass(this, MySecondActivity.class);
     addTab(mTabHost, "Second", SECOND_TAB, intent);
     // Setting the current tab.
     switchTab(FIRST_TAB);
}

public void addTab(TabHost host, String title, String tag, Intent intent) {
     TabHost.TabSpec spec = host.newTabSpec(tag);
     spec.setContent(intent);
     spec.setIndicator(title);
     host.addTab(spec);
}

最后一个将改变当前标签的方法。

public void switchTab(int index) {
    mTabHost.setCurrentTab(index);
}

稍后,在MyFirstActivity内部,您可以调用MainActivity swichTab方法并传递选项卡的索引以进行更改。 您可以检索调用Activity类的getParent()方法的MainActivity。

MainActivity parent = (MainActivity)getParent();

答案 2 :(得分:1)

在创建tabhost的tab活动类中,实现以下方法。

public void switchTab(int tab){
            tabHost.setCurrentTab(tab);
}

在AActivity / BActivity中,实现以下方法并在任何事件(您需要)上调用它:

public void switchTabInActivity(long indexTabToSwitchTo){
            TabActivity tabActivity;
            tabActivity = (TabActivity) this.getParent();
            tabActivity.switchTab(indexTabToSwitchTo);
}

此处TabActivity是创建tabhost的类