用ActivityGroup解决TabHost中多个Activity跳转问题

摘要:
下图显示了测试程序的两个选项卡的实现布局文件:main。xmlXml代码˂?


下面图片是测试程序的效果图

用ActivityGroup解决TabHost中多个Activity跳转问题第1张用ActivityGroup解决TabHost中多个Activity跳转问题第2张用ActivityGroup解决TabHost中多个Activity跳转问题第3张

两个选项卡的实现

布局文件 main.xml

Xml代码收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"android:layout_width="fill_parent"
  4. android:layout_height="fill_parent">
  5. <TabHostxmlns:android="http://schemas.android.com/apk/res/android"
  6. android:id="@android:id/tabhost"android:layout_width="fill_parent"
  7. android:layout_height="fill_parent">
  8. <LinearLayoutandroid:orientation="vertical"
  9. android:layout_width="fill_parent"android:layout_height="fill_parent">
  10. <TabWidgetandroid:id="@android:id/tabs"
  11. android:layout_width="fill_parent"android:layout_height="wrap_content"/>
  12. <FrameLayoutandroid:id="@android:id/tabcontent"
  13. android:layout_width="fill_parent"android:layout_height="wrap_content"
  14. android:layout_weight="3">
  15. </FrameLayout>
  16. </LinearLayout>
  17. </TabHost>
  18. </LinearLayout>

Java代码实现 MainActivity.java

Java代码收藏代码
  1. packagehkp.test;
  2. importandroid.app.TabActivity;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.widget.TabHost;
  6. publicclassMainActivityextendsTabActivity{
  7. privateTabHosttabHost;
  8. @Override
  9. protectedvoidonCreate(BundlesavedInstanceState){
  10. //TODOAuto-generatedmethodstub
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. tabHost=getTabHost();
  14. tabHost.addTab(tabHost.newTabSpec("tab1")
  15. .setIndicator("First")
  16. .setContent(newIntent(this,FirstGroupTab.class)));//第一个选项卡使用一个ActivityGroup
  17. tabHost.addTab(tabHost.newTabSpec("tab2")
  18. .setIndicator("Second")
  19. .setContent(newIntent(this,SecondTab.class)));//第二个选项卡是一个Activity
  20. tabHost.setCurrentTab(0);
  21. }
  22. }

使用 ActivityGroup的管理

Java代码收藏代码
  1. packagehkp.test;
  2. importandroid.app.ActivityGroup;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.Window;
  7. /**
  8. *@authorHuangKaipenghkp2006@gmail.com
  9. *2011-10-5
  10. *
  11. */
  12. publicclassFirstGroupTabextendsActivityGroup{
  13. /**
  14. *一个静态的ActivityGroup变量,用于管理本Group中的Activity
  15. */
  16. publicstaticActivityGroupgroup;
  17. @Override
  18. protectedvoidonCreate(BundlesavedInstanceState){
  19. //TODOAuto-generatedmethodstub
  20. super.onCreate(savedInstanceState);
  21. group=this;
  22. }
  23. @Override
  24. publicvoidonBackPressed(){
  25. //TODOAuto-generatedmethodstub
  26. //super.onBackPressed();
  27. //把后退事件交给子Activity处理
  28. group.getLocalActivityManager()
  29. .getCurrentActivity().onBackPressed();
  30. }
  31. @Override
  32. protectedvoidonResume(){
  33. //TODOAuto-generatedmethodstub
  34. super.onResume();
  35. //把界面切换放到onResume方法中是因为,从其他选项卡切换回来时,
  36. //调用搞得是onResume方法
  37. //要跳转的界面
  38. Intentintent=newIntent(this,FirstActivity.class).
  39. addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  40. //把一个Activity转换成一个View
  41. Windoww=group.getLocalActivityManager().startActivity("FirstActivity",intent);
  42. Viewview=w.getDecorView();
  43. //把View添加大ActivityGroup中
  44. group.setContentView(view);
  45. }

ActivityGroup中的第一个Activity

Java代码收藏代码
  1. packagehkp.test;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.Window;
  7. importandroid.view.View.OnClickListener;
  8. importandroid.widget.Button;
  9. /**
  10. *@authorHuangKaipenghkp2006@gmail.com
  11. *2011-10-5
  12. *
  13. */
  14. publicclassFirstActivityextendsActivity{
  15. @Override
  16. protectedvoidonCreate(BundlesavedInstanceState){
  17. //TODOAuto-generatedmethodstub
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.first_activity);
  20. //跳转到第二个界面
  21. Buttonbtn=(Button)findViewById(R.id.btn);
  22. btn.setOnClickListener(newOnClickListener(){
  23. @Override
  24. publicvoidonClick(Viewv){
  25. //TODOAuto-generatedmethodstub
  26. Intentintent=newIntent(FirstActivity.this,SecondActivity.class).
  27. addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  28. //把一个Activity转换成一个View
  29. Windoww=FirstGroupTab.group.getLocalActivityManager()
  30. .startActivity("SecondActivity",intent);
  31. Viewview=w.getDecorView();
  32. //把View添加大ActivityGroup中
  33. FirstGroupTab.group.setContentView(view);
  34. }
  35. });
  36. }
  37. }

XML

Xml代码收藏代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="这个是ActivityGroup中的第一个界面!"
  11. />
  12. <Buttonandroid:id="@+id/btn"
  13. android:layout_width="fill_parent"
  14. android:layout_height="wrap_content"
  15. android:text="跳转到本组中的另一个Activity中"/>
  16. </LinearLayout>

免责声明:文章转载自《用ActivityGroup解决TabHost中多个Activity跳转问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前台获取当前时间从浏览器启动应用程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

adb shell am 的用法

adb shell am 的功能   adb shell am 使用此命令可以从cmd控制台启动 activity, services;发送 broadcast等等:   C:UsersAdministrator>adb shell amusage: am [subcommand] [options]    start an Activity:...

Android 设置Activity样式 透明度

一、设置Activity透明度有几种方法:1>.在清单文件中配置Activity时声明android:theme="@android:style/Theme.Translucent"2>.使用自定义主题,先看看自定义主题中需要用到的一些属性设置说明 <style name="custom"parent="@android:style/Th...

【Android实验】组件通信Intent

实验目的 目录 实验目的 实验要求 实验结果 实验代码 father.xml:主界面文件 content_child.xml:子界面 Fourth.java: 处理文件 ChildActivity.java: 子界面处理文件 实验总结 了解使用Intent进行组件通信原理 掌握使用Intent启动Activity的方法 熟悉和掌握A...

Activity快速入门理解

​ 在Java领域,JBPM和Activity是两个主流的工作流系统,而Activity的出现无疑将会取代JBPM(Activity的开发者就是从Jbpm开发者出来的 1. 1个插件 在Eclipse中安装Activity插件,让你可以在Eclipse中绘制Activity工作流图 2. 1个引擎 ProcessEngine对象,Activity工作流引擎...

认识Activity,创建第一个android应用-Hello Word

2016-04-05   配置好Java、eclipse和Android环境就花费了一天时间。下载SDK真是费了不少时间。现在终于找到解决SDK更新的好方法了(更新自己电脑上的hosts文件,就可以使用Google搜素,也可以使用官方更新SDK了。从这里可以找到:Google hosts  2016持续更新-http://www.360kb.com/kb/...

android悬浮窗口的实现

当我们在手机上使用360安全卫士时,手机屏幕上时刻都会出现一个小浮动窗口,点击该浮动窗口可跳转到安全卫士的操作界面,而且该浮动窗口不受其他activity的覆盖影响仍然可见(多米音乐也有相关的和主界面交互的悬浮小窗口)。那么这种不受Activity界面影响的悬浮窗口是怎么实现的呢? 竟然它能悬浮在手机桌面,且不受Activity界面的影响,说明该悬浮窗...