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