setCurrentTab of a tabHost

偶尔善良 提交于 2019-12-01 01:43:38
AC2MO

You sure can. For your situation, a singleton of the TabActivity may work best. For example:

public class Main extends TabActivity{
    private staic Main theInstance;

    public static getInstance() {
        return Main.theInstance;
    }

    public Main() {
        Main.theInstance = this;
    }

    // The rest of your code here.
}

Then, from another class, you can just call:

Main.getInstance().getTabHost().setCurrentTab(1);

NOTE: What I have provided is not a complete singleton implementation, but it should suffice for what you're doing. Depending on the class you're setting the tab from, you may want to check that Main.getInstance() is not null before calling the setCurrentTab() method.

But if you are in another activity, you won't see the tabs anyway will you?

I had a similar problem with a ListView which started the tabHost activity onItemClick to get that working, i passed the tabNumber i wanted to display, through the intent, then used setCurrentTab to set the current tab to the passed tab number. Not sure if this would work for you though.

EDIT: Here is how i did it:

Intent i = new Intent(this, TabHostActivity.class);
i.putExtra("TabNumber", tabNumberToBeSelected); //tabNumberToBeSelected is an int
startActivity(i);

and then in the tabHost activity:

int tabNumber = getIntent().getIntExtra("TabNumber", 0);

//tabHost code goes here

tabHost.setCurrentTab(tabNumber);    

In your activities FirstTab, SecondTab and ThirdTab you should use the method like:

boolean setCurrentTab(int i) {
    if (getParent() instanceof Main) {
        ((Main) getParent()).getTabHost().setCurrentTab(i);
        return true;
    }
    return false;
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!