如何将其他活动放在tabhost中?

时间:2012-01-19 04:40:19

标签: android

我是Android的新手,任何人都可以帮我解决有关TabHost的问题吗? 我有一个Tab主机和3个类想要我想把这个活动或类称为TabHost。我要做什么这是我的标签主机中的代码:

public class Tab extends Activity  {

    TabHost th;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.tab);

        Resources res = getResources();    

        th = (TabHost)findViewById(R.id.tabhost);    
        th.setup();
        TabSpec specs = th.newTabSpec("tag1");
        specs.setContent(R.id.tab1);
        specs.setIndicator("Settings", res.getDrawable(R.drawable.ic_tab_setting));
        th.addTab(specs);

        specs = th.newTabSpec("tag2");
        specs.setContent(R.id.tab2);
        specs.setIndicator("Battery Information",res.getDrawable(R.drawable.ic_tab_batteryinfo));
        th.addTab(specs);

        specs = th.newTabSpec("tag3");
        specs.setContent(R.id.tab3);
        specs.setIndicator("Help", res.getDrawable(R.drawable.ic_tab_help));
        th.addTab(specs);
    }
}

我打算在哪里打电话给我做的那三个课程?

3 个答案:

答案 0 :(得分:2)

您可以将意图创建为Intent intent = new Intent(this, otherActivity.class);,并将此意图设置为specs.setContent(intent); Here是使用标签的示例。

答案 1 :(得分:0)

使用标签时,您需要扩展TabActivity以代替Activity。而且你也不需要通过id找到它。

所以你应该改变你的代码,如下所示,

public class Tab extends TabActivity{
    ...
    TabHost tabHost;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        ...
        setContentView(R.layout.tab);

        ...
        Resources res = getResources(); // Resource object to get Drawables   
        tabHost = getTabHost();  // The activity TabHost  
        TabHost.TabSpec spec;  // Resusable TabSpec for each tab    
        Intent intent;  // Reusable Intent for each tab   

        intent = new Intent().setClass(this, Activity1.class);  
        spec = tabHost.newTabSpec("Tab One").setIndicator("Tab One",res.getDrawable(R.drawable.first_tab)).setContent(intent); 
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, Activity2.class);  
        spec = tabHost.newTabSpec("Tab Two").setIndicator("Tab Two",res.getDrawable(R.drawable.second_tab)).setContent(intent); 
        tabHost.addTab(spec); 

        intent = new Intent().setClass(this, Activity3.class);  
        spec = tabHost.newTabSpec("Tab Three").setIndicator("Tab Three",res.getDrawable(R.drawable.third_tab)).setContent(intent); 
        tabHost.addTab(spec); 

        tabHost.setCurrentTab(0); // set first tab selected when activity is first loaded
        ... 
    }
}

不要忘记将所有3个活动也添加到清单文件中,即。 Activity1.class,Activity2.class和Activity3.class。

答案 2 :(得分:0)

您可以使用ActivityGroup而不是Activity来执行此操作。检查以下链接,你会得到一个想法。

Experience - Multiple Android Activities in a TabActivity

我希望它可以帮助你。