tabHost的tabContent区域中的活动的startActivity

时间:2013-05-07 18:35:54

标签: android-intent tabs android-tabhost

我有一个使用TabHost的应用程序,并将不同的活动加载到布局的TabContent区域。如果我单击选项卡,则会启动一个启动活动的新意图。一切都运作良好,但我很好奇如何处理以下问题。基本上,如果我点击例如联系人,则会加载contacts.java类,并且我的contacts.xml布局文件用于setContentView。但是,如果我单击我的contacts.xml布局中的一个按钮,说“管理员联系人”,我需要在同一个tabcontent中加载的意图,它似乎只是打开它自己的意图而不是在tabcontent区域内。 TabHost的工作方式是否有我遗漏的东西?我应该有一个contacts.java类,只需设置不同的内容视图而不是实际开始新的活动吗?我有一个标题图像和我的main.xml布局中定义的标签,而我的main.java是包含tabhost的活动。我希望我的问题很明确,非常感谢任何帮助!!!

2 个答案:

答案 0 :(得分:0)

正如Eclipse可能告诉你的那样,TabHost和所有相关的表格命令/函数都已弃用。有了这个免责声明,让我告诉你,我仍在使用它作为我的应用程序!

我认为使用标签是为了让你可以有一个活动,但是有多个视图。这并不意味着你必须只有一个.java。

要在标签之间切换,您只需执行tabHost.setCurrentTab(int);

也就是说,假设您已经设置了标签。

答案 1 :(得分:0)

http://www.mkyong.com/android/android-tablayout-example/ 检查此示例,然后检查每个父项活动,即如果您有一个包含联系人和个人资料的选项卡。然后,联系人和个人资料将成为您的父活动。因此,将该父活动扩展到ActivityGroup并创建该活动的静态上下文,并在该活动中调用intent

 Intent intent = new Intent(ctx, c);
    View subView = getLocalActivityManager().startActivity(id,
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).getDecorView();
    replaceView(subView);
}

public void replaceView(View subView) {
    viewStackList.add(subView);
    setContentView(subView);
}

其中c是要切换到的类,viewStackList是View类型的arraylist。这个arraylist用于维护堆栈以进行后退点击。