2013-05-07 94 views
0

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

回答

0

http://www.mkyong.com/android/android-tablayout-example/ 检查此示例,然后为每个父级活动即,如果您有一个选项卡与联系人和配置文件。然后,联系人和个人将是你的父母activity.So延长该父活动的ActivityGroup,使该活动的静态上下文和在活动中使用

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是要切换的类调用的意图to和viewStackList是View类型的ArrayList。这个数组列表被用于维护堆栈以用于返回点击。

+0

感谢newBie,你的代码基本上是我解决我的问题的方法! – Phil 2013-05-10 18:52:35

0

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

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

标签之间切换,你应该只需要做tabHost.setCurrentTab(int);

也就是说,假设你建立你的标签了。

+0

是的,我的选项卡工作正常,但是如果我点击我的其中一个选项卡,然后单击tabcontent区域内的某个按钮,启动的活动不会加载到tabcontent区域内,它会在没有选项卡的情况下加载在底部和我在顶部设置的头像。无论如何强制意图在特定tabcontent区域打开? – Phil 2013-05-07 18:55:02

+0

这听起来像你试图这样做也许:http://stackoverflow.com/questions/1306689/launching-activities-within-a-tab-in-android 如果是这样,很好,因为有一个解决方案或两个可能适合你!你应该能够指定一个窗口来运行活动。 – 2013-05-07 19:15:45